@plurid/plurid-react 0.0.0-24 → 0.0.0-27
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/README.md +8 -12
- package/distribution/containers/Application/View/index.d.ts +2 -2
- package/distribution/containers/RouterBrowser/styled.d.ts +1 -0
- package/distribution/index.es.js +88 -8
- package/distribution/index.es.js.map +1 -1
- package/distribution/index.js +88 -8
- package/distribution/index.js.map +1 -1
- package/distribution/index.min.js +66 -63
- package/distribution/index.min.js.map +1 -1
- package/distribution/services/logic/transform/index.d.ts +2 -2
- package/distribution/services/state/actions/index.d.ts +71 -50
- package/distribution/services/state/modules/space/index.d.ts +142 -121
- package/distribution/services/state/modules/space/selectors.d.ts +4 -11
- package/distribution/services/state/modules/space/types.d.ts +2 -3
- package/distribution/services/state/selectors/index.d.ts +6 -6
- package/distribution/services/state/store/index.d.ts +2 -2
- package/distribution/services/state/store/reducer/index.d.ts +1 -1
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","sources":["index.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar pluridData = require(\"@plurid/plurid-data\");\n\nvar pluridEngine = require(\"@plurid/plurid-engine\");\n\nvar PluridPubSub = require(\"@plurid/plurid-pubsub\");\n\nvar React = require(\"react\");\n\nvar reactRedux = require(\"react-redux\");\n\nvar toolkit = require(\"@reduxjs/toolkit\");\n\nvar pluridFunctions = require(\"@plurid/plurid-functions\");\n\nvar themes$2 = require(\"@plurid/plurid-themes\");\n\nvar styled = require(\"styled-components\");\n\nvar pluridFunctionsReact = require(\"@plurid/plurid-functions-react\");\n\nvar pluridIconsReact = require(\"@plurid/plurid-icons-react\");\n\nvar pluridUiComponentsReact = require(\"@plurid/plurid-ui-components-react\");\n\nvar reactDom = require(\"react-dom\");\n\nvar fetch = require(\"cross-fetch\");\n\nvar elementqlClientReact = require(\"@plurid/elementql-client-react\");\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === \"object\" && \"default\" in e ? e : {\n default: e\n };\n}\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach((function(k) {\n if (k !== \"default\") {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return e[k];\n }\n });\n }\n }));\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar PluridPubSub__default = _interopDefaultLegacy(PluridPubSub);\n\nvar React__default = _interopDefaultLegacy(React);\n\nvar themes__default = _interopDefaultLegacy(themes$2);\n\nvar styled__default = _interopDefaultLegacy(styled);\n\nvar fetch__default = _interopDefaultLegacy(fetch);\n\nconst PluridContext = React__default[\"default\"].createContext(undefined);\n\nconst initialState$5 = Object.assign({}, pluridData.defaultConfiguration);\n\nconst configuration = toolkit.createSlice({\n name: \"configuration\",\n initialState: initialState$5,\n reducers: {\n setConfiguration: (state, action) => {\n state = Object.assign(Object.assign({}, state), action.payload);\n },\n setConfigurationMicro: state => {\n state.elements.toolbar.show = false;\n state.elements.plane.controls.show = false;\n state.elements.viewcube.show = false;\n },\n setConfigurationPlaneControls: (state, action) => {\n state.elements.plane.controls.show = action.payload;\n },\n setConfigurationPlaneOpacity: (state, action) => {\n state.elements.plane.opacity = action.payload;\n },\n setConfigurationThemeGeneral: (state, action) => {\n const updatedTheme = {\n general: action.payload,\n interaction: typeof state.global.theme === \"object\" ? state.global.theme.interaction : \"plurid\"\n };\n state.global.theme = updatedTheme;\n },\n setConfigurationThemeInteraction: (state, action) => {\n const updatedTheme = {\n general: typeof state.global.theme === \"object\" ? state.global.theme.general : \"plurid\",\n interaction: action.payload\n };\n state.global.theme = updatedTheme;\n },\n setConfigurationLanguage: (state, action) => {\n state.global.language = action.payload;\n },\n toggleConfigurationViewcubeHide: (state, action) => {\n state.elements.viewcube.show = action.payload;\n },\n toggleConfigurationViewcubeButtons: (state, action) => {\n state.elements.viewcube.buttons = action.payload;\n },\n toggleConfigurationViewcubeOpaque: (state, action) => {\n state.elements.viewcube.opaque = action.payload;\n },\n toggleConfigurationViewcubeConceal: state => {\n const {conceal: conceal} = state.elements.viewcube;\n state.elements.viewcube.conceal = !conceal;\n },\n toggleConfigurationToolbarConceal: state => {\n const {conceal: conceal} = state.elements.toolbar;\n state.elements.toolbar.conceal = !conceal;\n },\n toggleConfigurationToolbarTransformIcons: state => {\n const {transformIcons: transformIcons} = state.elements.toolbar;\n state.elements.toolbar.transformIcons = !transformIcons;\n },\n toggleConfigurationToolbarTransformButtons: state => {\n const {transformButtons: transformButtons} = state.elements.toolbar;\n state.elements.toolbar.transformButtons = !transformButtons;\n },\n toggleConfigurationShowTransformOrigin: state => {\n const {show: show} = state.space.transformOrigin;\n state.space.transformOrigin.show = !show;\n },\n toggleConfigurationToolbarOpaque: state => {\n const {opaque: opaque} = state.elements.toolbar;\n state.elements.toolbar.opaque = !opaque;\n },\n toggleConfigurationSpaceTransparentUI: state => {\n state.global.transparentUI = !state.global.transparentUI;\n },\n setConfigurationSpaceTransformOriginSize: (state, action) => {\n state.space.transformOrigin.size = action.payload;\n },\n setConfigurationSpaceTransformMode: (state, action) => {\n if (state.space.transformMode !== action.payload) {\n state.space.transformMode = action.payload;\n } else {\n state.space.transformMode = pluridData.TRANSFORM_MODES.ALL;\n }\n },\n toggleConfigurationSpaceTransformMultimode: (state, action) => {\n state.space.transformMultimode = action.payload;\n },\n setConfigurationSpaceTransformTouch: (state, action) => {\n state.space.transformTouch = action.payload;\n },\n toggleConfigurationSpaceFirstPerson: state => {\n const {firstPerson: firstPerson} = state.space;\n state.space.firstPerson = !firstPerson;\n },\n toggleConfigurationToolbarToggleDrawer: (state, action) => {\n const {toggledDrawers: toggledDrawers} = state.elements.toolbar;\n if (toggledDrawers.includes(action.payload)) {\n const updatedDrawers = toggledDrawers.filter((el => el !== action.payload));\n state.elements.toolbar.toggledDrawers = [ ...updatedDrawers ];\n } else {\n state.elements.toolbar.toggledDrawers = [ ...toggledDrawers, action.payload ];\n }\n },\n setConfigurationSpaceTransformLocks: (state, action) => {\n const {transformLocks: transformLocks} = state.space;\n const updatedTransformLocks = Object.assign({}, transformLocks);\n updatedTransformLocks[action.payload] = !transformLocks[action.payload];\n state.space.transformLocks = Object.assign({}, updatedTransformLocks);\n },\n setConfigurationSpaceLayout: (state, action) => {\n const layout = {\n type: pluridData.LAYOUT_TYPES[action.payload]\n };\n state.space.layout = Object.assign({}, layout);\n },\n setConfigurationSpaceCullingDistance: (state, action) => {\n state.space.cullingDistance = action.payload;\n }\n }\n});\n\nconst actions$6 = configuration.actions;\n\nconst getConfiguration = state => state.configuration;\n\nconst selectors$6 = {\n getConfiguration: getConfiguration\n};\n\nconst reducer$6 = configuration.reducer;\n\nvar configuration$1 = Object.freeze({\n __proto__: null,\n configuration: configuration,\n actions: actions$6,\n getConfiguration: getConfiguration,\n selectors: selectors$6,\n reducer: reducer$6\n});\n\nconst initialState$4 = {};\n\nconst general = toolkit.createSlice({\n name: \"general\",\n initialState: initialState$4,\n reducers: {}\n});\n\nconst actions$5 = general.actions;\n\nconst getGeneral = state => state.general;\n\nconst selectors$5 = {\n getGeneral: getGeneral\n};\n\nconst reducer$5 = general.reducer;\n\nvar general$1 = Object.freeze({\n __proto__: null,\n general: general,\n actions: actions$5,\n getGeneral: getGeneral,\n selectors: selectors$5,\n reducer: reducer$5\n});\n\nconst initialState$3 = {\n global: true\n};\n\nconst shortcuts = toolkit.createSlice({\n name: \"shortcuts\",\n initialState: initialState$3,\n reducers: {\n setGlobalShortcuts: (state, action) => {\n state.global = action.payload;\n }\n }\n});\n\nconst actions$4 = shortcuts.actions;\n\nconst getGlobal = state => state.shortcuts.global;\n\nconst selectors$4 = {\n getGlobal: getGlobal\n};\n\nconst reducer$4 = shortcuts.reducer;\n\nvar shortcuts$1 = Object.freeze({\n __proto__: null,\n shortcuts: shortcuts,\n actions: actions$4,\n getGlobal: getGlobal,\n selectors: selectors$4,\n reducer: reducer$4\n});\n\nconst {registerPlanes: registerPlanes, getRegisteredPlanes: getRegisteredPlanes, getPlanesRegistrar: getPlanesRegistrar, getPluridPlaneIDByData: getPluridPlaneIDByData$1, getRegisteredPlane: getRegisteredPlane, resolvePluridRoutePlaneData: resolvePluridRoutePlaneData, resolvePluridPlaneData: resolvePluridPlaneData, Registrar: PluridPlanesRegistrar} = pluridEngine.planes;\n\nconst {IsoMatcher: PluridIsoMatcher$1, resolveRoute: resolveRoute, computePlaneAddress: computePlaneAddress} = pluridEngine.routing;\n\nconst {quaternion: quaternion$1, matrix: matrix$1} = pluridEngine.interaction;\n\nconst {degToRad: degToRad$2} = quaternion$1;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix$1, rotateMatrix: rotateMatrix$2, multiplyArrayOfMatrices: multiplyArrayOfMatrices$2, scaleMatrix: scaleMatrix$2, translateMatrix: translateMatrix$2} = matrix$1;\n\nconst computeMatrix = spaceState => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = spaceState;\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translationX * -1 + innerWidth;\n const transformOriginY = translationY * -1 + innerHeight;\n const transformOriginZ = translationZ * -1;\n const rotationMatrix = rotateMatrix$2(degToRad$2(-rotationX), degToRad$2(-rotationY));\n const translationMatrix = translateMatrix$2(translationX, translationY, translationZ);\n const scalationMatrix = scaleMatrix$2(scale);\n const transformMatrix = multiplyArrayOfMatrices$2([ translationMatrix, translateMatrix$2(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrix$2(-transformOriginX, -transformOriginY, -transformOriginZ), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix$1(transformMatrix);\n return transform;\n};\n\nconst focusPluridPlaneAnchor = planeID => {\n const selector = `[id='${planeID + pluridData.FOCUS_ANCHOR_SUFFIX}']`;\n const focusAnchor = document.querySelector(selector);\n if (focusAnchor) {\n focusAnchor.focus();\n }\n};\n\nconst getSpace = state => state.space;\n\nconst getLoading = state => state.space.loading;\n\nconst getTransformMatrix = state => state.space.transform;\n\nconst getAnimatedTransform = state => state.space.animatedTransform;\n\nconst getTransformTime = state => state.space.transformTime;\n\nconst getRotationX = state => state.space.rotationX;\n\nconst getRotationY = state => state.space.rotationY;\n\nconst getTranslationX = state => state.space.translationX;\n\nconst getTranslationY = state => state.space.translationY;\n\nconst getTranslationZ = state => state.space.translationZ;\n\nconst getScale = state => state.space.scale;\n\nconst getTree = state => state.space.tree;\n\nconst getTransform = state => ({\n rotationX: state.space.rotationX,\n rotationY: state.space.rotationY,\n translationX: state.space.translationX,\n translationY: state.space.translationY,\n translationZ: state.space.translationZ,\n scale: state.space.scale\n});\n\nconst getActiveUniverseID = state => state.space.activeUniverseID;\n\nconst getView = state => state.space.view;\n\nconst getViewSize = state => state.space.viewSize;\n\nconst getCulledView = state => state.space.culledView;\n\nconst getActivePlaneID = state => state.space.activePlaneID;\n\nconst getIsolatePlane = state => state.space.isolatePlane;\n\nconst getLastClosedPlane = state => state.space.lastClosedPlane;\n\nvar selectors$3 = Object.freeze({\n __proto__: null,\n getSpace: getSpace,\n getLoading: getLoading,\n getTransformMatrix: getTransformMatrix,\n getAnimatedTransform: getAnimatedTransform,\n getTransformTime: getTransformTime,\n getRotationX: getRotationX,\n getRotationY: getRotationY,\n getTranslationX: getTranslationX,\n getTranslationY: getTranslationY,\n getTranslationZ: getTranslationZ,\n getScale: getScale,\n getTree: getTree,\n getTransform: getTransform,\n getActiveUniverseID: getActiveUniverseID,\n getView: getView,\n getViewSize: getViewSize,\n getCulledView: getCulledView,\n getActivePlaneID: getActivePlaneID,\n getIsolatePlane: getIsolatePlane,\n getLastClosedPlane: getLastClosedPlane\n});\n\nconst {toRadians: toRadians} = pluridFunctions.mathematics.geometry;\n\nconst initialState$2 = {\n loading: true,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n animatedTransform: false,\n transformTime: 450,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n tree: [],\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight\n },\n spaceSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: [],\n culledView: [],\n activePlaneID: \"\",\n isolatePlane: \"\",\n lastClosedPlane: \"\"\n};\n\nconst space = toolkit.createSlice({\n name: \"space,\",\n initialState: initialState$2,\n reducers: {\n setSpaceField: (state, action) => {\n const {field: field, value: value} = action.payload;\n state[field] = value;\n },\n setSpaceLoading: (state, action) => {\n state.loading = action.payload;\n },\n changeTransform: (state, action) => {},\n setTransform: (state, action) => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = action.payload;\n const resolvedTranslationX = translationX !== null && translationX !== void 0 ? translationX : state.translationX;\n const resolvedTranslationY = translationY !== null && translationY !== void 0 ? translationY : state.translationY;\n const resolvedTranslationZ = translationZ !== null && translationZ !== void 0 ? translationZ : state.translationZ;\n const resolvedRotationX = rotationX !== null && rotationX !== void 0 ? rotationX : state.rotationX;\n const resolvedRotationY = rotationY !== null && rotationY !== void 0 ? rotationY : state.rotationY;\n const resolvedScale = scale !== null && scale !== void 0 ? scale : state.scale;\n state.translationX = resolvedTranslationX;\n state.translationY = resolvedTranslationY;\n state.translationZ = resolvedTranslationZ;\n state.rotationX = resolvedRotationX;\n state.rotationY = resolvedRotationY;\n state.scale = resolvedScale;\n },\n setAnimatedTransform: (state, action) => {\n state.animatedTransform = action.payload;\n },\n setTransformTime: (state, action) => {\n state.transformTime = action.payload;\n },\n setSpaceLocation: (state, action) => {\n state = Object.assign(Object.assign({}, state), action.payload);\n },\n viewCameraMoveForward: state => {\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveBackward: state => {\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveLeft: state => {\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveRight: state => {\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveUp: state => {\n state.translationY = state.translationY + pluridData.TRANSLATION_STEP * 3;\n state.transform = computeMatrix(state);\n },\n viewCameraMoveDown: state => {\n state.translationY = state.translationY - pluridData.TRANSLATION_STEP * 3;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnUp: state => {\n state.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnDown: state => {\n state.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnLeft: state => {\n state.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnRight: state => {\n state.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateUp: state => {\n state.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateDown: state => {\n state.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateX: (state, action) => {\n state.rotationX = action.payload;\n state.transform = computeMatrix(state);\n },\n rotateXWith: (state, action) => {\n state.rotationX = state.rotationX + action.payload;\n state.transform = computeMatrix(state);\n },\n rotateLeft: state => {\n state.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateRight: state => {\n state.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateY: (state, action) => {\n state.rotationY = action.payload;\n state.transform = computeMatrix(state);\n },\n rotateYWith: (state, action) => {\n state.rotationY = state.rotationY + action.payload;\n state.transform = computeMatrix(state);\n },\n translateUp: state => {\n state.translationY = state.translationY - pluridData.TRANSLATION_STEP;\n state.transform = computeMatrix(state);\n },\n translateDown: state => {\n state.translationY = state.translationY + pluridData.TRANSLATION_STEP;\n state.transform = computeMatrix(state);\n },\n translateLeft: state => {\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateRight: state => {\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateIn: state => {\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateOut: state => {\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateXWith: (state, action) => {\n state.translationX = state.translationX + action.payload * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + action.payload * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateYWith: (state, action) => {\n state.translationY = state.translationY + action.payload;\n state.transform = computeMatrix(state);\n },\n translateZWith: (state, action) => {\n state.translationZ = state.translationZ + action.payload;\n state.transform = computeMatrix(state);\n },\n scaleUp: state => {\n const computedScale = state.scale + pluridData.SCALE_STEP;\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleDown: state => {\n const computedScale = state.scale - pluridData.SCALE_STEP;\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleUpWith: (state, action) => {\n const computedScale = state.scale + Math.abs(action.payload);\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleDownWith: (state, action) => {\n const computedScale = state.scale - Math.abs(action.payload);\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n setTree: (state, action) => {\n state.tree = [ ...action.payload ];\n },\n setActiveUniverse: (state, action) => {\n state.activeUniverseID = action.payload;\n },\n spaceResetTransform: state => {\n state.scale = 1;\n state.rotationX = 0;\n state.rotationY = 0;\n state.translationX = 0;\n state.translationY = 0;\n state.translationZ = 0;\n state.transform = computeMatrix(state);\n },\n setViewSize: (state, action) => {\n state.viewSize = action.payload;\n },\n setSpaceSize: (state, action) => {\n state.spaceSize = action.payload;\n },\n updateSpaceTreePlane: (state, action) => {\n const updatedTree = pluridEngine.general.tree.updateTreePlane(state.tree, action.payload);\n state.tree = updatedTree;\n },\n updateSpaceLinkCoordinates: (state, action) => {\n const {planeID: planeID, linkCoordinates: linkCoordinates} = action.payload;\n const updatedTree = pluridEngine.general.tree.updateTreeByPlaneIDWithLinkCoordinates(state.tree, planeID, linkCoordinates);\n state.tree = updatedTree;\n },\n spaceSetView: (state, action) => {\n state.view = action.payload;\n },\n spaceSetCulledView: (state, action) => {\n state.culledView = action.payload;\n }\n }\n});\n\nconst actions$3 = space.actions;\n\nconst reducer$3 = space.reducer;\n\nvar space$1 = Object.freeze({\n __proto__: null,\n space: space,\n actions: actions$3,\n selectors: selectors$3,\n reducer: reducer$3\n});\n\nconst initialState$1 = {\n general: themes$2.plurid,\n interaction: themes$2.plurid\n};\n\nconst themes = toolkit.createSlice({\n name: \"themes\",\n initialState: initialState$1,\n reducers: {\n setGeneralTheme: (state, action) => {\n state.general = action.payload;\n },\n setInteractionTheme: (state, action) => {\n state.interaction = action.payload;\n }\n }\n});\n\nconst actions$2 = themes.actions;\n\nconst getGeneralTheme = state => state.themes.general;\n\nconst getInteractionTheme = state => state.themes.general;\n\nconst selectors$2 = {\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme\n};\n\nconst reducer$2 = themes.reducer;\n\nvar themes$1 = Object.freeze({\n __proto__: null,\n themes: themes,\n actions: actions$2,\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme,\n selectors: selectors$2,\n reducer: reducer$2\n});\n\nconst initialState = {\n toolbarScrollPosition: 0\n};\n\nconst ui = toolkit.createSlice({\n name: \"ui\",\n initialState: initialState,\n reducers: {\n setUIToolbarScrollPosition: (state, action) => {\n state.toolbarScrollPosition = action.payload;\n }\n }\n});\n\nconst actions$1 = ui.actions;\n\nconst getToolbarScrollPosition = state => state.ui.toolbarScrollPosition;\n\nconst selectors$1 = {\n getToolbarScrollPosition: getToolbarScrollPosition\n};\n\nconst reducer$1 = ui.reducer;\n\nvar ui$1 = Object.freeze({\n __proto__: null,\n ui: ui,\n actions: actions$1,\n getToolbarScrollPosition: getToolbarScrollPosition,\n selectors: selectors$1,\n reducer: reducer$1\n});\n\nvar modules = {\n configuration: configuration$1,\n general: general$1,\n shortcuts: shortcuts$1,\n space: space$1,\n themes: themes$1,\n ui: ui$1\n};\n\nconst reducer = toolkit.combineReducers({\n configuration: modules.configuration.reducer,\n general: modules.general.reducer,\n shortcuts: modules.shortcuts.reducer,\n space: modules.space.reducer,\n themes: modules.themes.reducer,\n ui: modules.ui.reducer\n});\n\nconst store$1 = preloadedState => toolkit.configureStore({\n preloadedState: preloadedState,\n reducer: reducer,\n devTools: false\n});\n\nconst store = store$1;\n\nconst StateContext = React__default[\"default\"].createContext({});\n\nconst loadStateFromContext = (context, space) => {\n if (!context) {\n return;\n }\n if (!space) {\n if (typeof window === \"undefined\") {\n return;\n }\n const defaultContext = context.states[window.location.pathname];\n return defaultContext;\n }\n return context.states[space];\n};\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P((function(resolve) {\n resolve(value);\n }));\n }\n return new (P || (P = Promise))((function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n }));\n}\n\nconst Context = React__default[\"default\"].createContext(null);\n\nvar actions = {\n configuration: modules.configuration.actions,\n general: modules.general.actions,\n shortcuts: modules.shortcuts.actions,\n space: modules.space.actions,\n themes: modules.themes.actions,\n ui: modules.ui.actions\n};\n\nconst {quaternion: quaternion, transform: transform, matrix: matrix} = pluridEngine.interaction;\n\nconst {degToRad: degToRad$1, radToDeg: radToDeg} = quaternion;\n\nconst {multiplyMatricesArray: multiplyMatricesArray, translateMatrix: translateMatrix$1, rotateYMatrix: rotateYMatrix, matrixToCSSMatrix: matrixToCSSMatrix, arrayToMatrix: arrayToMatrix, inverseMatrix: inverseMatrix} = transform.general;\n\nconst {getTransformRotate: getTransformRotate, getTransformTranslate: getTransformTranslate, getTransformScale: getTransformScale} = transform.matrix3d;\n\nconst {rotateMatrix: rotateMatrix$1, translateMatrix: translateMatrixArray, scaleMatrix: scaleMatrix$1, multiplyArrayOfMatrices: multiplyArrayOfMatrices$1} = matrix;\n\nconst computeApplication = (planes, configuration, view) => {\n const appConfiguration = pluridEngine.general.configuration.merge(configuration);\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridPlaneData(plane);\n const linkPath = pluridEngine.routing.resolveRoute(planeData.route);\n if (!linkPath) {\n continue;\n }\n }\n }\n const currentView = view || [];\n const absoluteView = [];\n for (const viewItem of currentView) {\n if (typeof viewItem === \"string\") {\n const viewPath = pluridEngine.routing.resolveRoute(viewItem);\n if (!viewPath) {\n continue;\n }\n absoluteView.push(viewPath.route);\n }\n }\n const origin = \"localhost:63000\";\n const registrar = new PluridPlanesRegistrar(planes, origin);\n const registrarPlanes = registrar.getAll();\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: registrarPlanes,\n configuration: appConfiguration,\n view: absoluteView\n }, origin);\n const computedTree = spaceTree.compute();\n const data = {\n computedTree: computedTree,\n appConfiguration: appConfiguration\n };\n return data;\n};\n\nconst computePlaneLocation = plane => {\n const {location: location} = plane;\n const {translateX: translateX, translateY: translateY, translateZ: translateZ, rotateY: rotateY} = location;\n const getTransform = () => {\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translateX * -1 + innerWidth;\n const transformOriginY = translateY * -1 + innerHeight;\n const transformOriginZ = translateZ * -1;\n const rotationMatrix = rotateMatrix$1(0, degToRad$1(rotateY));\n const translationMatrix = translateMatrixArray(translateX, translateY, translateZ);\n const scalationMatrix = scaleMatrix$1(1);\n const transformMatrix = multiplyArrayOfMatrices$1([ translationMatrix, translateMatrixArray(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrixArray(-transformOriginX, -transformOriginY, -transformOriginZ), scalationMatrix ]);\n const inverseTransformMatrix = inverseMatrix(arrayToMatrix(transformMatrix));\n const matrix3dTransformMatrix = matrixToCSSMatrix(inverseTransformMatrix);\n const rotate = getTransformRotate(matrix3dTransformMatrix);\n const translate = getTransformTranslate(matrix3dTransformMatrix);\n const scale = getTransformScale(matrix3dTransformMatrix);\n const transform = {\n translationX: translate.translateX,\n translationY: translate.translateY,\n translationZ: translate.translateZ,\n rotationX: radToDeg(rotate.rotateX),\n rotationY: radToDeg(rotate.rotateY),\n scale: scale.scale\n };\n return transform;\n };\n const transform = getTransform();\n const getMatrix3d = () => {\n const zSign1 = rotateY < 100 ? 1 : -1;\n const zSign2 = rotateY < 100 ? -1 : 1;\n const xOffset = rotateY < 100 ? plane.parentPlaneID ? 200 : 0 : 0;\n const newMatrix = multiplyMatricesArray([ translateMatrix$1(-translateX, -translateY, zSign1 * translateZ), rotateYMatrix(degToRad$1(rotateY)), translateMatrix$1(translateX, translateY, zSign2 * translateZ), translateMatrix$1(-(translateX + xOffset), -translateY, zSign1 * translateZ) ]);\n const matrix3d = matrixToCSSMatrix(newMatrix);\n return matrix3d;\n };\n const matrix3d = getMatrix3d();\n return {\n transform: transform,\n matrix3d: matrix3d\n };\n};\n\nconst factoryUseAnimatedTransform = () => {\n let timeout;\n return dispatch => {\n const dispatchSetAnimatedTransform = payload => dispatch(actions.space.setAnimatedTransform(payload));\n dispatchSetAnimatedTransform(true);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), pluridData.PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT);\n };\n};\n\nconst useAnimatedTransform = factoryUseAnimatedTransform();\n\nconst navigateToPluridPlane = (dispatch, plane, event, deisolate = true) => {\n if (event && (event.ctrlKey || event.metaKey)) {\n return;\n }\n if (!plane) {\n return;\n }\n const dispatchSetTransform = payload => dispatch(actions.space.setTransform(payload));\n const dispatchSetSpaceField = payload => dispatch(actions.space.setSpaceField(payload));\n const {matrix3d: matrix3d, transform: transform} = computePlaneLocation(plane);\n useAnimatedTransform(dispatch);\n dispatchSetSpaceField({\n field: \"transform\",\n value: matrix3d\n });\n dispatchSetTransform(Object.assign({}, transform));\n if (deisolate) {\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: \"\"\n });\n }\n setTimeout((() => {\n focusPluridPlaneAnchor(plane.planeID);\n dispatchSetSpaceField({\n field: \"activePlaneID\",\n value: plane.planeID\n });\n }), pluridData.PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT);\n};\n\nconst getActivePlane = state => {\n const {activePlaneID: activePlaneID, tree: tree} = state.space;\n if (!activePlaneID) {\n return;\n }\n const treePlane = pluridEngine.space.tree.logic.getTreePlaneByID(tree, activePlaneID);\n return treePlane;\n};\n\nconst focusActivePlane = (dispatch, state) => {\n const activePlane = getActivePlane(state);\n if (!activePlane) {\n return;\n }\n const event = undefined;\n const deisolate = false;\n navigateToPluridPlane(dispatch, activePlane, event, deisolate);\n};\n\nconst focusParentActivePlane = (dispatch, state) => {\n const activePlane = getActivePlane(state);\n if (!activePlane || !activePlane.parentPlaneID) {\n return;\n }\n const parentPlane = pluridEngine.space.tree.logic.getTreePlaneByID(state.space.tree, activePlane.parentPlaneID);\n if (!parentPlane) {\n return;\n }\n navigateToPluridPlane(dispatch, parentPlane);\n};\n\nconst findRootIndex = (tree, activePlaneID, currentRootIndex) => {\n for (const [index, plane] of tree.entries()) {\n if (plane.planeID === activePlaneID) {\n return currentRootIndex !== null && currentRootIndex !== void 0 ? currentRootIndex : index;\n }\n if (plane.children) {\n const rootIndex = findRootIndex(plane.children, activePlaneID, index);\n if (typeof rootIndex === \"number\") {\n return rootIndex;\n }\n }\n }\n return;\n};\n\nconst navigateToRoot = (dispatch, state, type) => {\n const {activePlaneID: activePlaneID, tree: tree} = state.space;\n const rootIndex = findRootIndex(tree, activePlaneID);\n if (typeof rootIndex !== \"number\") {\n return;\n }\n const treeIndex = type === \"previous\" ? rootIndex - 1 || 0 : rootIndex + 1;\n const root = tree[treeIndex];\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst focusPreviousRoot = (dispatch, state) => {\n navigateToRoot(dispatch, state, \"previous\");\n};\n\nconst focusNextRoot = (dispatch, state) => {\n navigateToRoot(dispatch, state, \"next\");\n};\n\nconst focusRootIndex = (dispatch, state, index) => {\n const {tree: tree} = state.space;\n const root = tree[index];\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst focusRootID = (dispatch, state, id) => {\n const {tree: tree} = state.space;\n const root = tree.find((plane => plane.planeID === id));\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst refreshActivePlane = (state, pubsub) => {\n const {activePlaneID: id} = state.space;\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.REFRESH_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst isolateActivePlane = (state, pubsub) => {\n const {activePlaneID: id, isolatePlane: isolatePlane} = state.space;\n if (isolatePlane) {\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: \"\"\n }\n });\n return;\n }\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst openClosedPlane = pubsub => {\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE\n });\n};\n\nconst closeActivePlane = (state, pubsub) => {\n const {activePlaneID: id} = state.space;\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst {direction: directionLogic} = pluridEngine.interaction;\n\nconst handleGlobalShortcuts = (dispatch, state, pubsub, event, firstPerson, locks) => {\n if (event.defaultPrevented) {\n return;\n }\n const inputOnPath = pluridFunctions.dom.verifyPathInputElement(pluridFunctions.dom.getEventPath(event));\n if (inputOnPath) {\n return;\n }\n const noModifiers = !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (event.code === \"KeyF\" && noModifiers) {\n return dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson());\n }\n if (firstPerson) {\n if (event.code === \"KeyW\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveForward());\n }\n if (event.code === \"KeyS\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveBackward());\n }\n if (event.code === \"KeyA\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveLeft());\n }\n if (event.code === \"KeyA\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnLeft());\n }\n if (event.code === \"KeyD\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveRight());\n }\n if (event.code === \"KeyD\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnRight());\n }\n if (event.code === \"KeyQ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnUp());\n }\n if (event.code === \"KeyZ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnDown());\n }\n if (event.code === \"KeyE\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveUp());\n }\n if (event.code === \"KeyC\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveDown());\n }\n }\n if (event.code === \"KeyR\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ROTATION));\n }\n if (event.code === \"KeyT\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.TRANSLATION));\n }\n if (event.code === \"KeyS\" && noModifiers && !firstPerson) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.SCALE));\n }\n if (event.key === \"ArrowRight\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n }\n if (event.key === \"ArrowLeft\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.key === \"ArrowUp\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n }\n if (event.key === \"ArrowDown\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n if (event.altKey && event.code === \"KeyF\") {\n focusActivePlane(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyB\") {\n focusParentActivePlane(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyR\") {\n refreshActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyE\") {\n isolateActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.shiftKey && event.code === \"KeyT\") {\n openClosedPlane(pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyW\") {\n closeActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyA\") {\n focusPreviousRoot(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyD\") {\n focusNextRoot(dispatch, state);\n return;\n }\n if (event.altKey && event.code.startsWith(\"Digit\")) {\n const index = parseInt(event.code.replace(\"Digit\", \"\")) - 1;\n focusRootIndex(dispatch, state, index);\n return;\n }\n return;\n};\n\nconst handleGlobalWheel = (dispatch, event, modes, locks) => {\n if (event.shiftKey || event.metaKey || event.altKey || event.ctrlKey || modes.rotation || modes.translation || modes.scale) {\n event.preventDefault();\n }\n const deltas = {\n deltaX: event.deltaX,\n deltaY: event.deltaY\n };\n const absoluteThreshold = 100;\n const direction = directionLogic.getWheelDirection(deltas, absoluteThreshold);\n if (modes.rotation) {\n if (direction === pluridData.directions.left && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (direction === pluridData.directions.right && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (direction === pluridData.directions.up && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (direction === pluridData.directions.down && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n }\n if (event.shiftKey && !event.altKey) {\n if (direction === pluridData.directions.up && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (direction === pluridData.directions.down && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (direction === pluridData.directions.left && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (direction === pluridData.directions.right && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n }\n if (modes.translation) {\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.up) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down) {\n return dispatch(actions.space.translateUp());\n }\n return;\n }\n if (event.altKey) {\n if (direction === pluridData.directions.up && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (direction === pluridData.directions.down && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n }\n if (direction === pluridData.directions.up && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (direction === pluridData.directions.left && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n if (direction === pluridData.directions.right && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.altKey && event.shiftKey) {\n if (direction === pluridData.directions.up && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (direction === pluridData.directions.down && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n }\n if (event.altKey && !event.shiftKey) {\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.up) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down) {\n return dispatch(actions.space.translateUp());\n }\n return;\n }\n if (direction === pluridData.directions.up && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (direction === pluridData.directions.left && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n if (direction === pluridData.directions.right && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (modes.scale) {\n if (direction === pluridData.directions.down && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n if (direction === pluridData.directions.up && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.down && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n if (direction === pluridData.directions.up && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n return;\n};\n\nconst loadHammer = () => __awaiter(void 0, void 0, void 0, (function*() {\n const hammer = yield Promise.resolve().then((function() {\n return _interopNamespace(require(\"hammerjs\"));\n }));\n return hammer;\n}));\n\nvar selectors = {\n configuration: modules.configuration.selectors,\n general: modules.general.selectors,\n shortcuts: modules.shortcuts.selectors,\n space: modules.space.selectors,\n themes: modules.themes.selectors,\n ui: modules.ui.selectors\n};\n\nconst GlobalStyle = styled.createGlobalStyle`\n *,\n *:after,\n *:before {\n box-sizing: border-box;\n font-kerning: auto;\n text-rendering: optimizeLegibility;\n }\n\n html, body {\n margin: 0;\n height: 100%;\n width: 100%;\n overscroll-behavior-x: ${({preventOverscroll: preventOverscroll}) => {\n if (preventOverscroll) {\n return \"none\";\n }\n return \"auto\";\n}};\n }\n\n html {\n overflow: hidden;\n background: black;\n color: white;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif}\n }\n`;\n\nconst StyledView = styled__default[\"default\"].div`\n height: 100%;\n min-height: ${props => {\n if (props.fullHeight) {\n return \"100vh\";\n }\n return \"100%\";\n}};\n min-height: ${props => {\n if (props.fullHeight) {\n return \"-webkit-fill-available\";\n }\n return \"100%\";\n}};\n\n width: 100%;\n position: relative;\n scroll-snap-align: start;\n outline: none;\n overflow: hidden;\n\n cursor: ${props => {\n if (props.transformMode === pluridData.TRANSFORM_MODES.TRANSLATION || props.transformMode === pluridData.TRANSFORM_MODES.ROTATION) {\n return \"all-scroll\";\n }\n if (props.transformMode === pluridData.TRANSFORM_MODES.SCALE) {\n return \"ns-resize\";\n }\n return \"initial\";\n}};\n user-select: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n touch-action: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none !important\";\n }\n return \"initial !important\";\n}};\n -webkit-user-drag: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n -webkit-tap-highlight-color: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"rgba(0, 0, 0, 0)\";\n }\n return \"initial !important\";\n}};\n`;\n\nstyled__default[\"default\"].div`\n outline: none;\n background: ${props => {\n if (props.opaque) {\n const foregroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorTertiary : props.theme.backgroundColorPrimary;\n const backgroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorPrimary : props.theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n`;\n\nclass ErrorBoundary extends React__default[\"default\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n static getDerivedStateFromError(error) {\n return {\n hasError: true\n };\n }\n componentDidCatch(error, errorInfo) {}\n render() {\n if (this.state.hasError) {\n if (this.props.renderError) {\n return this.props.renderError;\n }\n return React__default[\"default\"].createElement(\"h1\", null, \"Something went wrong.\");\n }\n return this.props.children;\n }\n}\n\nconst StyledPluridPlane = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme, planeOpacity: planeOpacity}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity !== 1) {\n const decomposedColor = themes$2.decomposeColor(theme.backgroundColorPrimary);\n if (decomposedColor) {\n const color = `hsla(${decomposedColor.hue}, ${decomposedColor.saturation}%, ${decomposedColor.lightness}%, ${planeOpacity})`;\n return color;\n }\n return \"transparent\";\n }\n return theme.backgroundColorPrimary;\n}};\n box-shadow: ${({planeOpacity: planeOpacity, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"none\";\n }\n return theme.boxShadowUmbra;\n}};\n color: ${({theme: theme}) => theme.colorPrimary};\n opacity: ${({show: show}) => {\n if (!show) {\n return \"0\";\n }\n return \"1\";\n}};\n user-select: ${({show: show}) => {\n if (!show) {\n return \"none\";\n }\n return \"auto\";\n}};\n\n position: absolute;\n height: auto;\n width: 100%;\n font-size: 0.9rem;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif};\n transition: background-color 300ms linear;\n\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: ${({planeControls: planeControls}) => {\n if (planeControls) {\n return \"56px auto\";\n }\n return \"auto\";\n}};\n\n transform-origin: 0 0 0;\n`;\n\nconst StyledFocusAnchor = styled__default[\"default\"].a`\n position: absolute;\n top: 0;\n left: 0;\n height: 0;\n width: 0;\n pointer-events: none;\n user-select: none;\n`;\n\nconst StyledPluridPlaneBridge = styled__default[\"default\"].div`\n background-color: ${({theme: theme, planeControls: planeControls, planeOpacity: planeOpacity, transparentUI: transparentUI, mouseOver: mouseOver}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity === 0) {\n return \"transparent\";\n }\n if (!planeControls) {\n return theme.backgroundColorPrimary;\n }\n return theme.backgroundColorDark;\n}};\n\n position: absolute;\n top: 0;\n left: -100px;\n height: 30px;\n width: 100px;\n opacity: 0.5;\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst PluridPlaneBridge = properties => {\n const {mouseOver: mouseOver, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {controls: controls, opacity: opacity} = stateConfiguration.elements.plane;\n const {transparentUI: transparentUI} = stateConfiguration.global;\n return React__default[\"default\"].createElement(StyledPluridPlaneBridge, {\n theme: stateGeneralTheme,\n planeControls: controls.show,\n planeOpacity: opacity,\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_BRIDGE\n });\n};\n\nconst mapStateToProperties$i = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$i = dispatch => ({});\n\nconst ConnectedPluridPlaneBridge = reactRedux.connect(mapStateToProperties$i, mapDispatchToProperties$i, null, {\n context: StateContext\n})(PluridPlaneBridge);\n\nconst ControlRefresh = properties => {\n const {theme: theme, refreshing: refreshing, refreshPlane: refreshPlane} = properties;\n return React__default[\"default\"].createElement(pluridIconsReact.PluridIconReset, {\n atClick: () => {\n refreshPlane();\n },\n theme: theme,\n title: \"refresh\",\n style: {\n opacity: refreshing ? \"0\" : \"1\",\n pointerEvents: refreshing ? \"none\" : undefined\n }\n });\n};\n\nconst ControlIsolate = properties => {\n const {theme: theme, isolated: isolated, isolatePlane: isolatePlane} = properties;\n const title = isolated ? \"isolated\" : \"isolate\";\n const fill = isolated ? true : false;\n return React__default[\"default\"].createElement(pluridIconsReact.PluridIconRectangle, {\n atClick: () => {\n isolatePlane();\n },\n theme: theme,\n title: title,\n fill: fill\n });\n};\n\nconst StyledPluridPlaneControls = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme}) => {\n if (transparentUI && !mouseOver) {\n return \"transparent\";\n }\n return theme.backgroundColorDark;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbraInset};\n\n width: 100%;\n display: grid;\n align-items: center;\n justify-content: center;\n grid-template-rows: 1fr;\n grid-template-columns: 1fr 2fr 1fr;\n transition: background-color 300ms linear;\n\n @media (max-width: 800px) {\n grid-template-columns: 1fr 3fr 1fr;\n }\n`;\n\nconst styleCommonControls = styled.css`\n margin: 0 1rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n`;\n\nconst StyledPluridPlaneControlsLeft = styled__default[\"default\"].div`\n ${styleCommonControls}\n`;\n\nconst StyledPluridPlaneControlsCenter = styled__default[\"default\"].div`\n width: 100%;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n word-break: break-all;\n`;\n\nconst StyledPluridPlaneControlsRight = styled__default[\"default\"].div`\n ${styleCommonControls}\n justify-content: right;\n`;\n\nconst PluridPlaneControls = properties => {\n const {plane: plane, treePlane: treePlane, parentTreePlane: parentTreePlane, mouseOver: mouseOver, refreshing: refreshing, refreshPlane: refreshPlane, isolatePlane: isolatePlane, closePlane: closePlane, configuration: configuration, stateGeneralTheme: stateGeneralTheme, stateIsolatePlane: stateIsolatePlane, dispatch: dispatch} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const {title: title, pathbar: pathbar} = elements.plane.controls;\n const {planeID: planeID, route: route, routeDivisions: routeDivisions} = treePlane;\n const {protocol: protocol, host: host} = routeDivisions;\n const gateway = \"gateway\";\n `${protocol}://${host.value}/${gateway}?plurid=` + encodeURIComponent(route);\n const isolated = stateIsolatePlane === planeID;\n const [path, setPath] = React.useState(treePlane.route);\n React.useState(false);\n React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridPlaneControls, {\n theme: stateGeneralTheme,\n mouseOver: mouseOver,\n transparentUI: transparentUI,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTROLS\n }, React__default[\"default\"].createElement(StyledPluridPlaneControlsLeft, null, parentTreePlane && React__default[\"default\"].createElement(pluridIconsReact.PluridIconArrowLeft, {\n atClick: event => {\n navigateToPluridPlane(dispatch, parentTreePlane, event);\n },\n theme: stateGeneralTheme,\n title: \"back\"\n }), React__default[\"default\"].createElement(pluridIconsReact.PluridIconFrame, {\n atClick: event => {\n const deisolate = false;\n navigateToPluridPlane(dispatch, treePlane, event, deisolate);\n },\n theme: stateGeneralTheme,\n title: \"focus\"\n }), React__default[\"default\"].createElement(ControlRefresh, {\n theme: stateGeneralTheme,\n refreshing: refreshing,\n refreshPlane: refreshPlane\n }), React__default[\"default\"].createElement(ControlIsolate, {\n theme: stateGeneralTheme,\n isolated: isolated,\n isolatePlane: isolatePlane\n })), React__default[\"default\"].createElement(StyledPluridPlaneControlsCenter, null, title && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, path)), React__default[\"default\"].createElement(StyledPluridPlaneControlsRight, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconDelete, {\n atClick: () => {\n closePlane();\n },\n theme: stateGeneralTheme,\n title: \"close\"\n })));\n};\n\nconst mapStateToProps$f = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateIsolatePlane: selectors.space.getIsolatePlane(state)\n});\n\nconst mapDispatchToProps$f = dispatch => ({\n dispatch: dispatch\n});\n\nconst ConnectedPluridPlaneControls = reactRedux.connect(mapStateToProps$f, mapDispatchToProps$f, null, {\n context: StateContext\n})(PluridPlaneControls);\n\nconst StyledPluridPlaneContent = styled__default[\"default\"].div`\n position: relative;\n`;\n\nconst PluridPlaneContent = properties => {\n const {children: children} = properties;\n const planeContentElement = React.useRef(null);\n return React__default[\"default\"].createElement(StyledPluridPlaneContent, {\n ref: planeContentElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTENT\n }, children);\n};\n\nconst PluridPlane = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planeRenderError: planeRenderError, defaultPubSub: defaultPubSub} = context;\n const {planeID: planeID, plane: plane, treePlane: treePlane, children: children, stateTree: stateTree, stateViewSize: stateViewSize, stateActivePlaneID: stateActivePlaneID, stateIsolatePlane: stateIsolatePlane, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceTreePlane: dispatchUpdateSpaceTreePlane} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {controls: controls, width: planeWidth, opacity: planeOpacity} = elements.plane;\n const showPlaneControls = controls.show;\n pluridFunctions.mathematics.numbers.checkIntegerNonUnit(planeWidth) ? planeWidth : planeWidth * stateViewSize.width;\n const parentTreePlane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, treePlane.parentPlaneID);\n const planeRef = React.useRef(null);\n const [remountKey, setRemountKey] = React.useState(0);\n const [refreshing, setRefreshing] = React.useState(false);\n const [mouseOver, setMouseOver] = React.useState(false);\n const refreshPlane = () => {\n const REFRESH_TIMEOUT = 250;\n setRefreshing(true);\n setTimeout((() => {\n setRemountKey((value => ++value));\n setRefreshing(false);\n }), REFRESH_TIMEOUT);\n };\n const isolatePlane = () => {\n const id = stateIsolatePlane !== planeID ? planeID : \"\";\n defaultPubSub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: id\n }\n });\n };\n const closePlane = () => {\n defaultPubSub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n data: {\n id: planeID\n }\n });\n };\n const setActivePlane = () => {\n const payload = {\n field: \"activePlaneID\",\n value: mouseOver ? planeID : \"\"\n };\n dispatchSetSpaceField(payload);\n };\n const debouncedSetActivePlane = pluridFunctionsReact.useDebouncedCallback((() => {\n if (stateActivePlaneID === planeID) {\n return;\n }\n const payload = {\n field: \"activePlaneID\",\n value: planeID\n };\n dispatchSetSpaceField(payload);\n }), 500);\n const computeIsolatePlaneOpacity = () => {\n if (!treePlane.show || !stateIsolatePlane) {\n return;\n }\n if (stateIsolatePlane === planeID) {\n return \"1\";\n }\n return \"0\";\n };\n const computeIsolatePointerEvents = () => {\n if (!treePlane.show || !stateIsolatePlane) {\n return;\n }\n if (stateIsolatePlane === planeID) {\n return;\n }\n return \"none\";\n };\n React.useEffect((() => {\n setActivePlane();\n }), [ planeID, mouseOver ]);\n React.useEffect((() => {\n const refreshPlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.REFRESH_PLANE,\n callback: data => {\n const {id: id} = data;\n if (id === planeID) {\n refreshPlane();\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(refreshPlaneIndex);\n };\n }), [ remountKey, planeID ]);\n const key = planeID + \"-\" + remountKey;\n const focusAnchorID = planeID + pluridData.FOCUS_ANCHOR_SUFFIX;\n const renderWidth = \"100%\";\n const isolatePlaneOpacity = computeIsolatePlaneOpacity();\n const isolatePointerEvents = computeIsolatePointerEvents();\n const transform = pluridEngine.cleanTemplate(`\\n translateX(${treePlane.location.translateX}px)\\n translateY(${treePlane.location.translateY}px)\\n translateZ(${treePlane.location.translateZ}px)\\n rotateX(${treePlane.location.rotateX}deg)\\n rotateY(${treePlane.location.rotateY}deg)\\n `);\n const planeContentProperties = {};\n return React__default[\"default\"].createElement(StyledPluridPlane, {\n key: key,\n ref: planeRef,\n theme: stateGeneralTheme,\n planeControls: showPlaneControls,\n planeOpacity: planeOpacity,\n show: treePlane.show,\n id: planeID,\n style: {\n width: renderWidth,\n transform: transform,\n opacity: isolatePlaneOpacity,\n pointerEvents: isolatePointerEvents\n },\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseOver: () => debouncedSetActivePlane(),\n onMouseMove: () => debouncedSetActivePlane(),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-plane\": planeID,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE\n }, React__default[\"default\"].createElement(StyledFocusAnchor, {\n tabIndex: 0,\n id: focusAnchorID\n }), treePlane.show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, treePlane.parentPlaneID && React__default[\"default\"].createElement(ConnectedPluridPlaneBridge, {\n mouseOver: mouseOver\n }), showPlaneControls && React__default[\"default\"].createElement(ConnectedPluridPlaneControls, {\n plane: plane,\n treePlane: treePlane,\n parentTreePlane: parentTreePlane,\n mouseOver: mouseOver,\n refreshing: refreshing,\n refreshPlane: refreshPlane,\n isolatePlane: isolatePlane,\n closePlane: closePlane\n }), planeRenderError ? React__default[\"default\"].createElement(ErrorBoundary, {\n renderError: typeof planeRenderError !== \"boolean\" ? planeRenderError : undefined\n }, React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)) : React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)));\n};\n\nconst mapStateToProps$e = state => ({\n stateTree: selectors.space.getTree(state),\n stateViewSize: selectors.space.getViewSize(state),\n stateActivePlaneID: selectors.space.getActivePlaneID(state),\n stateIsolatePlane: selectors.space.getIsolatePlane(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$e = dispatch => ({\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceTreePlane: payload => dispatch(actions.space.updateSpaceTreePlane(payload))\n});\n\nconst ConnectedPluridPlane = reactRedux.connect(mapStateToProps$e, mapDispatchToProps$e, null, {\n context: StateContext\n})(PluridPlane);\n\nconst isReactRenderable = component => {\n if (!component) {\n return false;\n }\n if (typeof component === \"string\" || component.url) {\n return false;\n }\n return true;\n};\n\nconst StyledPluridRoot = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n`;\n\nconst PluridRoot = properties => {\n const {plane: plane, stateTree: stateTree} = properties;\n const {location: location} = plane;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar, planeContext: PlaneContext, planeContextValue: planeContextValue, customPlane: customPlane, matchedRoute: matchedRoute, defaultPubSub: defaultPubSub} = context;\n const CustomPluridPlane = customPlane;\n const computeChildrenPlanes = plane => {\n if (!plane.children || plane.children.length === 0) {\n return [];\n }\n const children = [];\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n plane.children.forEach((child => {\n if (!planesRegistry) {\n return;\n }\n const planeID = child.sourceID;\n const activePlane = planesRegistry.get(planeID);\n if (activePlane) {\n const renderPlane = () => {\n const Plane = activePlane.component;\n const pluridProperty = {\n plane: {\n value: activePlane.route.absolute,\n planeID: child.planeID,\n parentPlaneID: child.parentPlaneID,\n fragments: activePlane.route.fragments,\n parameters: activePlane.route.parameters,\n query: activePlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n },\n pubSub: defaultPubSub\n };\n const properties = {\n plurid: Object.assign({}, pluridProperty),\n key: \"plurid-plane-\" + child.planeID\n };\n const renderablePlane = isReactRenderable(Plane);\n const renderableCustomPlane = isReactRenderable(CustomPluridPlane);\n const keyBase = \"plurid-plane-child-\";\n const planeProperties = {\n key: keyBase + child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n };\n if (CustomPluridPlane && renderableCustomPlane) {\n return React__default[\"default\"].createElement(CustomPluridPlane, Object.assign({}, planeProperties));\n }\n if (renderablePlane) {\n return React__default[\"default\"].createElement(ConnectedPluridPlane, Object.assign({}, planeProperties), !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, properties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, properties))));\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n };\n const plane = renderPlane();\n children.push(plane);\n }\n if (child.children) {\n const childrenPlanes = computeChildrenPlanes(child);\n if (childrenPlanes) {\n children.push(...childrenPlanes);\n }\n }\n }));\n return children;\n };\n const childrenPlanes = React.useMemo((() => computeChildrenPlanes(plane)), [ JSON.stringify(plane), JSON.stringify(stateTree) ]);\n const pluridPlaneID = plane.sourceID;\n if (!pluridPlaneID) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const pluridPlane = getRegisteredPlane(pluridPlaneID, planesRegistrar);\n if (!pluridPlane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Plane = pluridPlane.component;\n const pluridProperty = {\n plane: {\n value: pluridPlane.route.absolute,\n planeID: plane.planeID,\n parentPlaneID: plane.parentPlaneID,\n fragments: pluridPlane.route.fragments,\n parameters: pluridPlane.route.parameters,\n query: pluridPlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n },\n pubSub: defaultPubSub\n };\n const planeProperties = {\n plurid: Object.assign({}, pluridProperty),\n key: \"plurid-plane-\" + plane.planeID\n };\n if (CustomPluridPlane) {\n if (typeof CustomPluridPlane !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(CustomPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }), childrenPlanes);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(ConnectedPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)))), childrenPlanes);\n};\n\nconst mapStateToProperties$h = state => ({\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$h = dispatch => ({});\n\nconst ConnectedPluridRoot = reactRedux.connect(mapStateToProperties$h, mapDispatchToProperties$h, null, {\n context: StateContext\n})(PluridRoot);\n\nconst StyledPluridRoots = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n transform-origin: 0 0 0;\n`;\n\nconst PluridRoots = properties => {\n const {spaceTransformMatrix: spaceTransformMatrix, spaceAnimatedTransform: spaceAnimatedTransform, spaceTransformTime: spaceTransformTime, stateTree: stateTree} = properties;\n return React__default[\"default\"].createElement(StyledPluridRoots, {\n style: {\n width: \"100%\",\n height: typeof window !== \"undefined\" ? window.innerHeight + \"px\" : \"821px\",\n transform: spaceTransformMatrix,\n transition: spaceAnimatedTransform ? `transform ${spaceTransformTime}ms ease-in-out` : \"initial\"\n },\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOTS\n }, stateTree.map((plane => React__default[\"default\"].createElement(ConnectedPluridRoot, {\n key: plane.planeID,\n plane: plane\n }))));\n};\n\nconst mapStateToProperties$g = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n spaceTransformMatrix: selectors.space.getTransformMatrix(state),\n spaceAnimatedTransform: selectors.space.getAnimatedTransform(state),\n spaceTransformTime: selectors.space.getTransformTime(state),\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$g = dispatch => ({});\n\nconst ConnectedPluridRoots = reactRedux.connect(mapStateToProperties$g, mapDispatchToProperties$g, null, {\n context: StateContext\n})(PluridRoots);\n\nconst fadeIn = styled.keyframes`\n from {\n opacity: 0%;\n }\n\n to {\n opacity: 100%;\n }\n`;\n\nconst fadeInAnimation = fadeInTime => styled.css`${fadeIn} ${fadeInTime}ms linear 100ms forwards`;\n\nconst StyledPluridSpace = styled__default[\"default\"].div`\n position: relative;\n height: 100%;\n overflow: hidden;\n perspective: 2000px;\n outline: none;\n\n background: ${({opaque: opaque, theme: theme}) => {\n if (opaque) {\n const foregroundGradient = theme.type === \"dark\" ? theme.backgroundColorTertiary : theme.backgroundColorPrimary;\n const backgroundGradient = theme.type === \"dark\" ? theme.backgroundColorPrimary : theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n\n /* TOFIX */\n /* opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({isMounted: isMounted, fadeInTime: fadeInTime}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}}; */\n`;\n\nconst PluridSpace = properties => {\n const {stateConfiguration: stateConfiguration, stateGeneralTheme: stateGeneralTheme} = properties;\n const {space: space} = stateConfiguration;\n const {opaque: opaque, fadeInTime: fadeInTime} = space;\n const [isMounted, setIsMounted] = React.useState(false);\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridSpace, {\n theme: stateGeneralTheme,\n opaque: opaque,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_SPACE\n }, React__default[\"default\"].createElement(ConnectedPluridRoots, null));\n};\n\nconst mapStateToProperties$f = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$f = dispatch => ({});\n\nconst ConnectedPluridSpace = reactRedux.connect(mapStateToProperties$f, mapDispatchToProperties$f, null, {\n context: StateContext\n})(PluridSpace);\n\nconst resolveSize = ({size: size}) => {\n switch (size) {\n case pluridData.SIZES.SMALL:\n return \"5px\";\n\n case pluridData.SIZES.NORMAL:\n return \"10px\";\n\n case pluridData.SIZES.LARGE:\n return \"15px\";\n\n default:\n return \"10px\";\n }\n};\n\nconst StyledOrigin = styled__default[\"default\"].div`\n background-color: ${({theme: theme}) => theme.backgroundColorTertiaryAlpha};\n height: ${resolveSize};\n width: ${resolveSize};\n\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n z-index: 99999;\n border-radius: 100px;\n user-select: none;\n pointer-events: none;\n touch-action: none;\n`;\n\nconst Origin = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {space: space} = stateConfiguration;\n const {transformOrigin: transformOrigin} = space;\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n if (!showTransformOrigin) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledOrigin, {\n theme: stateGeneralTheme,\n size: transformOriginSize,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TRANSFORM_ORIGIN\n });\n};\n\nconst mapStateToProperties$e = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$e = dispatch => ({});\n\nconst ConnectedOrigin = reactRedux.connect(mapStateToProperties$e, mapDispatchToProperties$e, null, {\n context: StateContext\n})(Origin);\n\nvar MENUS;\n\n(function(MENUS) {\n MENUS[\"NONE\"] = \"NONE\";\n MENUS[\"UNIVERSES\"] = \"UNIVERSES\";\n MENUS[\"MORE\"] = \"MORE\";\n})(MENUS || (MENUS = {}));\n\nconst VIEW_SIZE_WIDTH_LIMIT = 800;\n\nconst StyledToolbar = styled__default[\"default\"].div`\n bottom: ${({conceal: conceal, mouseIn: mouseIn}) => {\n if (!conceal) {\n return \"-5px\";\n }\n if (mouseIn) {\n return \"-5px\";\n }\n return \"-55px\";\n}};\n pointer-events: ${({showMenu: showMenu}) => {\n if (showMenu !== MENUS.NONE) {\n return \"all\";\n }\n return \"none\";\n}};\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n display: grid;\n position: absolute;\n left: 0;\n right: 0;\n height: 75px;\n z-index: 9999;\n transition: bottom 300ms ease-in-out;\n`;\n\nconst StyledToolbarButtons = styled__default[\"default\"].div`\n color: ${({theme: theme}) => theme.colorPrimary};\n background-color: ${({theme: theme, transparentUI: transparentUI}) => {\n if (transparentUI) {\n return theme.backgroundColorPrimaryAlpha;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n grid-template-columns: ${({showIcons: showIcons, showTransformButtons: showTransformButtons, documentsBased: documentsBased}) => {\n if (showIcons && !showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (!showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (documentsBased) {\n return \"40px 200px 200px 200px 40px 40px\";\n }\n return \"40px 200px 200px 200px 40px\";\n}};\n opacity: ${({opaque: opaque, mouseIn: mouseIn}) => {\n if (!opaque && !mouseIn) {\n return \"0.4\";\n }\n return \"1\";\n}};\n\n z-index: 9999;\n user-select: none;\n /* height: 75px; */\n display: grid;\n pointer-events: all;\n display: grid;\n align-items: center;\n justify-content: center;\n justify-items: center;\n border-radius: 22.5px;\n margin: 0 auto;\n margin-top: 10px;\n margin-bottom: 20px;\n padding: 0 22.5px;\n font-size: 12px;\n height: 45px;\n transition: opacity 300ms ease-in-out;\n\n :after {\n content: '';\n position: absolute;\n top: 55px;\n height: 20px;\n left: 0;\n right: 20%;\n }\n\n @media (max-width: 900px) {\n :after {\n right: 0;\n }\n }\n`;\n\nconst StyledToolbarButton = styled__default[\"default\"].div`\n padding: ${({button: button, showIcons: showIcons, showTransformButtons: showTransformButtons}) => {\n if (button) {\n return \"0\";\n }\n if (showIcons && !showTransformButtons) {\n return \"0\";\n }\n return \"0 7px\";\n}};\n background-color: ${({active: active, theme: theme}) => {\n if (active) {\n return theme.backgroundColorTertiary;\n }\n return \"transparent\";\n}};\n min-width: ${({button: button}) => {\n if (button) {\n return \"40px\";\n }\n return \"70px\";\n}};\n\n height: 45px;\n display: grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n\n @media (hover: hover) {\n :hover {\n background: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n }\n`;\n\nconst StyledIcon = styled__default[\"default\"].div`\n width: 40px;\n display: grid;\n place-content: center;\n\n /* svg {\n height: 15px;\n width: 15px;\n fill: white;\n } */\n`;\n\nconst StyledPluridMenuUniverses = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n max-height: 250px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => props.theme.backgroundColorSecondary};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n\n ul {\n padding: 0;\n list-style: none;\n }\n`;\n\nstyled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n\n margin-bottom: ${props => {\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: white;\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMenuUniversesScroll = styled__default[\"default\"].div`\n max-height: 210px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nstyled__default[\"default\"].li`\n margin: 10px 0;\n padding: 10px 20px;\n border-radius: 100px;\n\n cursor: ${props => {\n if (props.active) {\n return \"initial\";\n }\n return \"pointer\";\n}};\n background-color: ${props => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return \"\";\n}};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return \"\";\n}};\n\n :hover {\n background-color: ${props => props.theme.backgroundColorTertiary};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return props.theme.boxShadowUmbra;\n}};\n }\n`;\n\nconst PluridMenuUniverses = properties => {\n const {interactionTheme: interactionTheme, activeUniverseID: activeUniverseID, dispatchSetActiveUniverse: dispatchSetActiveUniverse} = properties;\n return React__default[\"default\"].createElement(StyledPluridMenuUniverses, {\n theme: interactionTheme\n }, React__default[\"default\"].createElement(StyledPluridMenuUniversesScroll, null));\n};\n\nconst mapStateToProps$d = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n activeUniverseID: selectors.space.getActiveUniverseID(state)\n});\n\nconst mapDispatchToProps$d = dispatch => ({\n dispatchSetActiveUniverse: documentID => dispatch(actions.space.setActiveUniverse(documentID))\n});\n\nconst ConnectedPluridMenuUniverses = reactRedux.connect(mapStateToProps$d, mapDispatchToProps$d, null, {\n context: StateContext\n})(PluridMenuUniverses);\n\nconst StyledPluridDrawer = styled__default[\"default\"].div`\n h5 {\n font-size: 1rem;\n margin: 0;\n }\n\n margin-bottom: 2rem;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n\n padding-bottom: ${props => {\n if (props.transparentUI && props.toggled) {\n return \"0.5rem\";\n }\n return \"0\";\n}};\n background-color: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.backgroundColorSecondary;\n }\n return \"transparent\";\n}};\n box-shadow: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.boxShadowUmbra;\n }\n return \"none\";\n}};\n color: ${props => props.theme.colorPrimary};\n`;\n\nconst StyledPluridDrawerHeading = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid transparent;\n text-align: left;\n\n :hover {\n border-bottom: 1px solid ${props => props.theme.colorPrimary};\n }\n`;\n\nconst StyledPluridDrawerItems = styled__default[\"default\"].div`\n`;\n\nconst {typography: {Heading: PluridHeading}} = pluridUiComponentsReact.universal;\n\nconst PluridDrawer = properties => {\n const {heading: heading, items: items, toggled: toggled, toggle: toggle, interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {transparentUI: transparentUI} = global;\n const [mouseOver, setMouseOver] = React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridDrawer, {\n theme: interactionTheme,\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n toggled: toggled\n }, React__default[\"default\"].createElement(StyledPluridDrawerHeading, {\n theme: interactionTheme,\n onClick: () => toggle()\n }, React__default[\"default\"].createElement(PluridHeading, {\n theme: interactionTheme,\n type: \"h5\"\n }, heading)), toggled && React__default[\"default\"].createElement(StyledPluridDrawerItems, null, items));\n};\n\nconst mapStateToProps$c = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$c = dispatch => ({});\n\nconst ConnectedPluridDrawer = reactRedux.connect(mapStateToProps$c, mapDispatchToProps$c, null, {\n context: StateContext\n})(PluridDrawer);\n\nconst StyledPluridMoreMenu = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n height: 280px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => {\n if (props.transparentUI) {\n return props.theme.backgroundColorPrimaryAlpha;\n }\n return props.theme.backgroundColorSecondary;\n}};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n`;\n\nconst StyledPluridMoreMenuItem = styled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n min-height: 30px;\n padding: 0 0.5rem;\n\n margin-bottom: ${props => {\n if (props.last) {\n return \"0\";\n }\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: ${props.theme ? props.theme.colorPrimary : \"white\"};\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMoreMenuScroll = styled__default[\"default\"].div`\n height: 240px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nconst {inputs: {Dropdown: PluridDropdown$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreGlobal = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetConfigurationThemeGeneralAction: dispatchSetConfigurationThemeGeneralAction, dispatchSetConfigurationThemeInteractionAction: dispatchSetConfigurationThemeInteractionAction, dispatchSetConfigurationLanguage: dispatchSetConfigurationLanguage} = properties;\n const selectedTheme = configuration.global.theme;\n const [generalThemeName, setGeneralThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.general : selectedTheme);\n const [interactionThemeName, setInteractionThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.interaction : selectedTheme);\n const setGeneralTheme = selectedTheme => {\n dispatchSetGeneralTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeGeneralAction(selectedTheme);\n };\n const setInteractionTheme = selectedTheme => {\n dispatchSetInteractionTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeInteractionAction(selectedTheme);\n };\n const setLanguage = selectedLanguage => {\n dispatchSetConfigurationLanguage(selectedLanguage);\n };\n React.useEffect((() => {\n if (typeof selectedTheme === \"object\") {\n setGeneralThemeName(selectedTheme.general);\n setInteractionThemeName(selectedTheme.interaction);\n } else {\n setGeneralThemeName(selectedTheme);\n setInteractionThemeName(selectedTheme);\n }\n }), [ selectedTheme ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalGeneralTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof generalThemeName === \"string\" ? generalThemeName : \"\",\n atSelect: selection => setGeneralTheme(selection),\n theme: interactionTheme,\n filterable: true,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalInteractionTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof interactionThemeName === \"string\" ? interactionThemeName : \"\",\n atSelect: selection => setInteractionTheme(selection),\n theme: interactionTheme,\n heightItems: 3,\n filterable: true,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalLanguage), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: pluridData.internationalization.languages,\n selected: stateLanguage,\n atSelect: selection => setLanguage(selection),\n theme: interactionTheme,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })));\n};\n\nconst mapStateToProps$b = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$b = dispatch => ({\n dispatchSetConfigurationThemeGeneralAction: theme => dispatch(actions.configuration.setConfigurationThemeGeneral(theme)),\n dispatchSetConfigurationThemeInteractionAction: theme => dispatch(actions.configuration.setConfigurationThemeInteraction(theme)),\n dispatchSetConfigurationLanguage: language => dispatch(actions.configuration.setConfigurationLanguage(language)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme))\n});\n\nconst ConnectedPluridMenuMoreGlobal = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b, null, {\n context: StateContext\n})(PluridMenuMoreGlobal);\n\nconst {inputs: {Switch: PluridSwitch$3}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTransform = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationSpaceTransformMultimode: dispatchToggleConfigurationSpaceTransformMultimode, dispatchSetConfigurationSpaceTransformTouch: dispatchSetConfigurationSpaceTransformTouch, dispatchSetConfigurationSpaceTransformLocks: dispatchSetConfigurationSpaceTransformLocks} = properties;\n const {transformMultimode: transformMultimode, transformLocks: transformLocks, transformTouch: transformTouch} = configuration.space;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformMultiModeTransform)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformMultimode,\n atChange: () => dispatchToggleConfigurationSpaceTransformMultimode(!transformMultimode),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationZ)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationZ,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationZ\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowScale)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.scale,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"scale\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformTouchTransform), \": \", transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? \"pan\" : \"swipe\"), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformTouch === pluridData.TRANSFORM_TOUCHES.PAN,\n atChange: () => transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.SWIPE) : dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.PAN),\n level: 2\n })));\n};\n\nconst mapStateToProps$a = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$a = dispatch => ({\n dispatchToggleConfigurationSpaceTransformMultimode: multimode => dispatch(actions.configuration.toggleConfigurationSpaceTransformMultimode(multimode)),\n dispatchSetConfigurationSpaceTransformTouch: touch => dispatch(actions.configuration.setConfigurationSpaceTransformTouch(touch)),\n dispatchSetConfigurationSpaceTransformLocks: lock => dispatch(actions.configuration.setConfigurationSpaceTransformLocks(lock))\n});\n\nconst ConnectedPluridMenuMoreTransform = reactRedux.connect(mapStateToProps$a, mapDispatchToProps$a, null, {\n context: StateContext\n})(PluridMenuMoreTransform);\n\nconst {inputs: {Dropdown: PluridDropdown, Switch: PluridSwitch$2, Slider: PluridSlider$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreSpace = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration, dispatchSetConfigurationPlaneOpacity: dispatchSetConfigurationPlaneOpacity, dispatchToggleConfigurationSpaceTransparentUI: dispatchToggleConfigurationSpaceTransparentUI, dispatchToggleConfigurationSpaceShowTransformOrigin: dispatchToggleConfigurationSpaceShowTransformOrigin, dispatchSetConfigurationSpaceTransformOriginSize: dispatchSetConfigurationSpaceTransformOriginSize, dispatchSetConfigurationSpaceLayoutType: dispatchSetConfigurationSpaceLayoutType} = properties;\n const {global: global, space: space, elements: elements} = configuration;\n const {transparentUI: transparentUI, language: language} = global;\n const {layout: layout, transformOrigin: transformOrigin} = space;\n const layoutType = pluridData.layoutNames[layout.type];\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n const planeOpacity = elements.plane.opacity;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransparentUserInterface), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: transparentUI,\n atChange: () => dispatchToggleConfigurationSpaceTransparentUI(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceShowTransformOrigin), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: showTransformOrigin,\n atChange: () => dispatchToggleConfigurationSpaceShowTransformOrigin(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransformOriginSize), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ \"small\", \"normal\", \"large\" ],\n selected: transformOriginSize.toLowerCase(),\n atSelect: selection => {\n const selected = selection.toUpperCase();\n if (selected === pluridData.SIZES.SMALL || selected === pluridData.SIZES.NORMAL || selected === pluridData.SIZES.LARGE) {\n dispatchSetConfigurationSpaceTransformOriginSize(selected);\n }\n },\n heightItems: 3,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpacePlaneOpacity), React__default[\"default\"].createElement(PluridSlider$1, {\n value: planeOpacity,\n max: 1,\n min: 0,\n step: .1,\n defaultValue: 100,\n atChange: value => dispatchSetConfigurationPlaneOpacity(value),\n thumbSize: \"large\",\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceLayoutType), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ ...Object.values(pluridData.layoutNames) ],\n selected: layoutType,\n atSelect: selection => {\n const selected = selection.toUpperCase().replace(/\\s/g, \"_\");\n dispatchSetConfigurationSpaceLayoutType(selected);\n },\n heightItems: 3,\n theme: interactionTheme,\n width: 100\n })));\n};\n\nconst mapStateToProps$9 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$9 = dispatch => ({\n dispatchSetConfigurationPlaneOpacity: value => dispatch(actions.configuration.setConfigurationPlaneOpacity(value)),\n dispatchToggleConfigurationSpaceTransparentUI: () => dispatch(actions.configuration.toggleConfigurationSpaceTransparentUI()),\n dispatchToggleConfigurationSpaceShowTransformOrigin: () => dispatch(actions.configuration.toggleConfigurationShowTransformOrigin()),\n dispatchSetConfigurationSpaceTransformOriginSize: size => dispatch(actions.configuration.setConfigurationSpaceTransformOriginSize(size)),\n dispatchSetConfigurationSpaceLayoutType: layoutType => dispatch(actions.configuration.setConfigurationSpaceLayout(layoutType))\n});\n\nconst ConnectedPluridMenuMoreSpace = reactRedux.connect(mapStateToProps$9, mapDispatchToProps$9, null, {\n context: StateContext\n})(PluridMenuMoreSpace);\n\nconst {inputs: {Switch: PluridSwitch$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreToolbar = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationToolbarConceal: dispatchToggleConfigurationToolbarConceal, dispatchToggleConfigurationToolbarTransformIcons: dispatchToggleConfigurationToolbarTransformIcons, dispatchToggleConfigurationToolbarTransformButtons: dispatchToggleConfigurationToolbarTransformButtons, dispatchToggleConfigurationToolbarOpaque: dispatchToggleConfigurationToolbarOpaque} = properties;\n const {toolbar: toolbar} = configuration.elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const [viewSizeSmall, setViewSizeSmall] = React.useState(false);\n React.useEffect((() => {\n if (viewSize.width < 800) {\n setViewSizeSmall(true);\n } else {\n setViewSizeSmall(false);\n }\n }), [ viewSize.width ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationToolbarOpaque(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformIcons)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformIcons,\n atChange: () => dispatchToggleConfigurationToolbarTransformIcons(),\n exclusive: true,\n level: 2\n })), !viewSizeSmall && React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformArrows)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformButtons,\n atChange: () => dispatchToggleConfigurationToolbarTransformButtons(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarConcealToolbar)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationToolbarConceal(),\n exclusive: true,\n level: 2\n })));\n};\n\nconst mapStateToProps$8 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps$8 = dispatch => ({\n dispatchToggleConfigurationToolbarConceal: () => dispatch(actions.configuration.toggleConfigurationToolbarConceal()),\n dispatchToggleConfigurationToolbarTransformIcons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformIcons()),\n dispatchToggleConfigurationToolbarTransformButtons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformButtons()),\n dispatchToggleConfigurationToolbarOpaque: () => dispatch(actions.configuration.toggleConfigurationToolbarOpaque())\n});\n\nconst ConnectedPluridMenuMoreToolbar = reactRedux.connect(mapStateToProps$8, mapDispatchToProps$8, null, {\n context: StateContext\n})(PluridMenuMoreToolbar);\n\nconst {inputs: {Switch: PluridSwitch}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreViewcube = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationViewcubeHide: dispatchToggleConfigurationViewcubeHide, dispatchToggleConfigurationViewcubeButtons: dispatchToggleConfigurationViewcubeButtons, dispatchToggleConfigurationViewcubeOpaque: dispatchToggleConfigurationViewcubeOpaque, dispatchToggleConfigurationViewcubeConceal: dispatchToggleConfigurationViewcubeConceal} = properties;\n const {viewcube: viewcube} = configuration.elements;\n const {show: show, buttons: buttons, opaque: opaque, conceal: conceal} = viewcube;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: !show ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: show,\n atChange: () => dispatchToggleConfigurationViewcubeHide(!show),\n exclusive: true,\n level: 2\n })), show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowTransformButtons)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: buttons,\n atChange: () => dispatchToggleConfigurationViewcubeButtons(!buttons),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationViewcubeOpaque(!opaque),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeConcealViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationViewcubeConceal(),\n exclusive: true,\n level: 2\n }))));\n};\n\nconst mapStateToProps$7 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$7 = dispatch => ({\n dispatchToggleConfigurationViewcubeHide: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeHide(toggle)),\n dispatchToggleConfigurationViewcubeButtons: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeButtons(toggle)),\n dispatchToggleConfigurationViewcubeOpaque: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeOpaque(toggle)),\n dispatchToggleConfigurationViewcubeConceal: () => dispatch(actions.configuration.toggleConfigurationViewcubeConceal())\n});\n\nconst ConnectedPluridMenuMoreViewcube = reactRedux.connect(mapStateToProps$7, mapDispatchToProps$7, null, {\n context: StateContext\n})(PluridMenuMoreViewcube);\n\nconst {inputs: {Slider: PluridSlider}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTechnical = properties => {\n const {stateLanguage: stateLanguage, stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, dispatchSetConfigurationSpaceCullingDistance: dispatchSetConfigurationSpaceCullingDistance} = properties;\n const {cullingDistance: cullingDistance} = stateConfiguration.space;\n const [localCullingDistance, setLocalCullingDistance] = React.useState(cullingDistance);\n const dispatchCullingDistanceUpdateFunction = value => {\n dispatchSetConfigurationSpaceCullingDistance(value);\n };\n const dispatchCullingDistanceUpdate = pluridFunctionsReact.useDebouncedCallback(dispatchCullingDistanceUpdateFunction, 300);\n const handleCullingDistance = value => {\n setLocalCullingDistance(value);\n dispatchCullingDistanceUpdate(value);\n };\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTechnicalCullingDistance)), React__default[\"default\"].createElement(PluridSlider, {\n theme: stateInteractionTheme,\n value: localCullingDistance,\n atChange: handleCullingDistance,\n min: 1e3,\n max: 5e3,\n defaultValue: 1500\n })));\n};\n\nconst mapStateToProps$6 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$6 = dispatch => ({\n dispatchSetConfigurationSpaceCullingDistance: value => dispatch(actions.configuration.setConfigurationSpaceCullingDistance(value))\n});\n\nconst ConnectedPluridMenuMoreTechnical = reactRedux.connect(mapStateToProps$6, mapDispatchToProps$6, null, {\n context: StateContext\n})(PluridMenuMoreTechnical);\n\nconst PluridMenuMoreShortcuts = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {language: language} = global;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridData.defaultShortcuts.map(((shortcut, index) => {\n const {type: type} = shortcut;\n const shortcutData = pluridData.shortcutsNames[type];\n const {name: name, internationalizedKey: internationalizedKey, key: key, modifier: modifier} = shortcutData;\n const modifierString = Array.isArray(modifier) ? modifier.reduce(((total, element) => total + \" + \" + element)) + \" +\" : typeof modifier === \"string\" ? modifier + \" +\" : \"\";\n const internationalizedName = pluridEngine.internatiolate(language, name);\n const keyAsAny = key;\n const keyName = internationalizedKey ? pluridEngine.internatiolate(language, keyAsAny) : key;\n const afterline = type === \"TURN_DOWN\" || type === \"TOGGLE_ROTATE\" || type === \"TOGGLE_TRANSLATE\" || type === \"TOGGLE_SCALE\";\n return React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n key: name,\n theme: interactionTheme,\n afterline: afterline,\n last: index === pluridData.defaultShortcuts.length - 1 ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, internationalizedName), React__default[\"default\"].createElement(\"div\", null, modifierString, \" \", keyName));\n })));\n};\n\nconst mapStateToProps$5 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$5 = dispatch => ({});\n\nconst ConnectedPluridMenuMoreShortcuts = reactRedux.connect(mapStateToProps$5, mapDispatchToProps$5, null, {\n context: StateContext\n})(PluridMenuMoreShortcuts);\n\nconst moreMenusRecord = {\n GLOBAL: {\n name: pluridData.internationalization.fields.toolbarDrawerGlobalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.GLOBAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreGlobal, null)\n },\n TRANSFORM: {\n name: pluridData.internationalization.fields.toolbarDrawerTransformTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TRANSFORM,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTransform, null)\n },\n SPACE: {\n name: pluridData.internationalization.fields.toolbarDrawerSpaceTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SPACE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreSpace, null)\n },\n TOOLBAR: {\n name: pluridData.internationalization.fields.toolbarDrawerToolbarTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TOOLBAR,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreToolbar, null)\n },\n VIEWCUBE: {\n name: pluridData.internationalization.fields.toolbarDrawerViewcubeTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.VIEWCUBE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreViewcube, null)\n },\n TECHNICAL: {\n name: pluridData.internationalization.fields.toolbarDrawerTechnicalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TECHNICAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTechnical, null)\n },\n SHORTCUTS: {\n name: pluridData.internationalization.fields.toolbarDrawerShortcutsTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SHORTCUTS,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreShortcuts, null)\n }\n};\n\nconst moreMenus = Object.values(moreMenusRecord);\n\nconst resolveMenus = drawers => {\n if (drawers.length === 0 || drawers.includes(\"ALL\")) {\n return moreMenus;\n }\n const resolvedMenus = [];\n for (const drawer of drawers) {\n const menu = moreMenusRecord[drawer];\n resolvedMenus.push(menu);\n }\n return resolvedMenus;\n};\n\nconst PluridMoreMenu = properties => {\n const {stateLanguage: stateLanguage, stateInteractionTheme: stateInteractionTheme, stateConfiguration: stateConfiguration, stateToolbarMenuScrollPosition: stateToolbarMenuScrollPosition, dispatchToggleConfigurationToolbarToggleDrawer: dispatchToggleConfigurationToolbarToggleDrawer, dispatchSetUIToolbarScrollPosition: dispatchSetUIToolbarScrollPosition} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {toolbar: toolbar} = elements;\n const {drawers: drawers, toggledDrawers: toggledDrawers} = toolbar;\n const menus = resolveMenus(drawers);\n const moreMenuScrollElement = React.useRef(null);\n const handleWheel = pluridFunctionsReact.useDebouncedCallback((_event => {\n if (moreMenuScrollElement.current) {\n const scrollPosition = moreMenuScrollElement.current.scrollTop;\n dispatchSetUIToolbarScrollPosition(scrollPosition);\n }\n }), 100);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.addEventListener(\"wheel\", handleWheel);\n }\n return () => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.removeEventListener(\"wheel\", handleWheel);\n }\n };\n }), [ moreMenuScrollElement.current ]);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.scrollTop = stateToolbarMenuScrollPosition;\n }\n }), [ stateToolbarMenuScrollPosition, moreMenuScrollElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridMoreMenu, {\n theme: stateInteractionTheme,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledPluridMoreMenuScroll, {\n ref: moreMenuScrollElement\n }, menus.map((moreMenu => {\n const {name: name, drawer: drawer, component: component} = moreMenu;\n const internationalizedName = pluridEngine.internatiolate(stateLanguage, name);\n return React__default[\"default\"].createElement(ConnectedPluridDrawer, {\n key: name,\n heading: internationalizedName,\n items: React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, component),\n toggled: toggledDrawers.includes(\"ALL\") || toggledDrawers.includes(drawer),\n toggle: () => dispatchToggleConfigurationToolbarToggleDrawer(drawer)\n });\n }))));\n};\n\nconst mapStateToProperties$d = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateToolbarMenuScrollPosition: selectors.ui.getToolbarScrollPosition(state)\n});\n\nconst mapDispatchToProperties$d = dispatch => ({\n dispatchToggleConfigurationToolbarToggleDrawer: drawer => dispatch(actions.configuration.toggleConfigurationToolbarToggleDrawer(drawer)),\n dispatchSetUIToolbarScrollPosition: value => dispatch(actions.ui.setUIToolbarScrollPosition(value))\n});\n\nconst ConnectedPluridMoreMenu = reactRedux.connect(mapStateToProperties$d, mapDispatchToProperties$d, null, {\n context: StateContext\n})(PluridMoreMenu);\n\nconst StyledPluridToolbarRotate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst StyledPluridTransformArrow = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n border-radius: 50px;\n width: 25px;\n height: 25px;\n display: grid;\n place-content: center;\n padding: 2px;\n\n background-color: ${({pressed: pressed, theme: theme}) => {\n if (pressed) {\n return theme.backgroundColorTertiary;\n }\n return \"initial\";\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst arrowSigns = {\n left: \"◀\",\n right: \"▶\",\n up: \"▲\",\n down: \"▼\"\n};\n\nconst events = \"tap press pressup\";\n\nconst PluridTransformArrow = properties => {\n const {direction: direction, transform: transform, interactionTheme: interactionTheme} = properties;\n const arrowSign = arrowSigns[direction] || \"\";\n const pressingInterval = React.useRef(null);\n const arrowElement = React.useRef(null);\n const [pressed, setPressed] = React.useState(false);\n const handleTouch = event => {\n const eventData = {\n altKey: event.srcEvent.altKey\n };\n switch (event.type) {\n case \"tap\":\n transform(eventData);\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n break;\n\n case \"press\":\n setPressed(true);\n pressingInterval.current = setInterval((() => {\n transform(eventData);\n }), 30);\n break;\n\n case \"pressup\":\n setPressed(false);\n if (pressingInterval.current) {\n clearInterval(pressingInterval.current);\n }\n break;\n }\n };\n const handleMouseLeave = () => {\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n };\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const loadTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n touch = new Hammer(arrowElement.current);\n touch.on(events, handleTouch);\n }));\n loadTouch();\n return () => {\n if (touch) {\n touch.off(events, handleTouch);\n }\n };\n }), [ arrowElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridTransformArrow, {\n ref: arrowElement,\n theme: interactionTheme,\n pressed: pressed,\n onMouseLeave: () => handleMouseLeave()\n }, arrowSign);\n};\n\nconst mapStateToProps$4 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$4 = dispatch => ({});\n\nconst ConnectedPluridTransformArrow = reactRedux.connect(mapStateToProps$4, mapDispatchToProps$4, null, {\n context: StateContext\n})(PluridTransformArrow);\n\nconst PluridToolbarRotate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, rotateUp: rotateUp, rotateDown: rotateDown, rotateLeft: rotateLeft, rotateRight: rotateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarRotate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => rotateRight()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => rotateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.ROTATION),\n active: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconRotate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformRotate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => rotateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => rotateLeft()\n })));\n};\n\nconst mapStateToProps$3 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$3 = dispatch => ({\n rotateUp: () => dispatch(actions.space.rotateUp()),\n rotateDown: () => dispatch(actions.space.rotateDown()),\n rotateLeft: () => dispatch(actions.space.rotateLeft()),\n rotateRight: () => dispatch(actions.space.rotateRight())\n});\n\nconst ConnectedPluridToolbarRotate = reactRedux.connect(mapStateToProps$3, mapDispatchToProps$3, null, {\n context: StateContext\n})(PluridToolbarRotate);\n\nconst StyledPluridToolbarScale = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 60px 30px\";\n}};\n`;\n\nconst PluridToolbarScale = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, scaleUp: scaleUp, scaleDown: scaleDown} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarScale, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => scaleUp()\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.SCALE),\n active: transformMode === pluridData.TRANSFORM_MODES.SCALE,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconScale, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformScale))), showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => scaleDown()\n }));\n};\n\nconst mapStateToProps$2 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$2 = dispatch => ({\n scaleUp: () => dispatch(actions.space.scaleUp()),\n scaleDown: () => dispatch(actions.space.scaleDown())\n});\n\nconst ConnectedPluridToolbarScale = reactRedux.connect(mapStateToProps$2, mapDispatchToProps$2, null, {\n context: StateContext\n})(PluridToolbarScale);\n\nconst StyledPluridToolbarTranslate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst PluridToolbarTranslate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, translateUp: translateUp, translateDown: translateDown, translateLeft: translateLeft, translateRight: translateRight, translateIn: translateIn, translateOut: translateOut} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => translateLeft()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: event => {\n if (event.altKey) {\n translateOut();\n } else {\n translateUp();\n }\n }\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.TRANSLATION),\n active: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconTranslate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformTranslate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: event => {\n if (event.altKey) {\n translateIn();\n } else {\n translateDown();\n }\n }\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => translateRight()\n })));\n};\n\nconst mapStateToProperties$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$c = dispatch => ({\n translateUp: () => dispatch(actions.space.translateUp()),\n translateDown: () => dispatch(actions.space.translateDown()),\n translateLeft: () => dispatch(actions.space.translateLeft()),\n translateRight: () => dispatch(actions.space.translateRight()),\n translateIn: () => dispatch(actions.space.translateIn()),\n translateOut: () => dispatch(actions.space.translateOut())\n});\n\nconst ConnectedPluridToolbarTranslate = reactRedux.connect(mapStateToProperties$c, mapDispatchToProperties$c, null, {\n context: StateContext\n})(PluridToolbarTranslate);\n\nconst PluridToolbar = properties => {\n const {theme: theme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationSpaceFirstPerson: dispatchToggleConfigurationSpaceFirstPerson, dispatchSetConfigurationSpaceTransformMode: dispatchSetConfigurationSpaceTransformMode} = properties;\n const {global: global, elements: elements, space: space} = configuration;\n const {transparentUI: transparentUI} = global;\n const {firstPerson: firstPerson, transformMode: transformMode, fadeInTime: fadeInTime} = space;\n const {toolbar: toolbar} = elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const showToolbar = toolbar.show;\n const menuTimeout = React.useRef(null);\n const [mouseIn, setMouseIn] = React.useState(false);\n const [showMenu, setShowMenu] = React.useState(MENUS.NONE);\n const [showIcons, setShowIcons] = React.useState(transformIcons);\n const [showTransformButtons, setShowTransformButtons] = React.useState(transformButtons);\n const [isMounted, setIsMounted] = React.useState(false);\n const toggleTransform = TYPE => {\n if (showMenu !== MENUS.NONE) {\n setShowMenu(MENUS.NONE);\n }\n dispatchSetConfigurationSpaceTransformMode(TYPE);\n };\n const handleShowMenu = menu => {\n if (showMenu === menu) {\n setShowMenu(MENUS.NONE);\n } else {\n dispatchSetConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ALL);\n setShowMenu(menu);\n }\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n React.useEffect((() => {\n if (viewSize.width < VIEW_SIZE_WIDTH_LIMIT) {\n if (transformButtons) {\n setShowTransformButtons(false);\n }\n }\n if (viewSize.width > VIEW_SIZE_WIDTH_LIMIT) {\n setShowTransformButtons(transformButtons);\n }\n }), [ viewSize.width ]);\n React.useEffect((() => {\n setShowIcons(transformIcons);\n setShowTransformButtons(transformButtons);\n }), [ transformIcons, transformButtons ]);\n React.useEffect((() => {\n if (mouseIn && menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n if (!mouseIn) {\n menuTimeout.current = setTimeout((() => {\n setShowMenu(MENUS.NONE);\n }), 400);\n }\n return () => {\n if (menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n };\n }), [ mouseIn ]);\n if (!showToolbar) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledToolbar, {\n onMouseEnter: () => setMouseIn(true),\n onMouseLeave: () => setMouseIn(false),\n mouseIn: mouseIn,\n conceal: conceal,\n showMenu: showMenu,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TOOLBAR\n }, React__default[\"default\"].createElement(StyledToolbarButtons, {\n theme: theme,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n documentsBased: false,\n mouseIn: mouseIn,\n opaque: opaque,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => dispatchToggleConfigurationSpaceFirstPerson(undefined),\n active: firstPerson,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconFirstPerson, null))), React__default[\"default\"].createElement(ConnectedPluridToolbarRotate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarScale, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => handleShowMenu(MENUS.MORE),\n active: showMenu === MENUS.MORE,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconMore, null)))), showMenu === MENUS.UNIVERSES && React__default[\"default\"].createElement(ConnectedPluridMenuUniverses, null), showMenu === MENUS.MORE && React__default[\"default\"].createElement(ConnectedPluridMoreMenu, null));\n};\n\nconst mapStateToProperties$b = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n theme: selectors.themes.getInteractionTheme(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$b = dispatch => ({\n dispatchToggleConfigurationSpaceFirstPerson: () => dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson()),\n dispatchSetConfigurationSpaceTransformMode: mode => dispatch(actions.configuration.setConfigurationSpaceTransformMode(mode))\n});\n\nconst ConnectedPluridToolbar = reactRedux.connect(mapStateToProperties$b, mapDispatchToProperties$b, null, {\n context: StateContext\n})(PluridToolbar);\n\nconst StyledPluridViewcube = styled__default[\"default\"].div`\n position: absolute;\n @media (max-width: 800px) {\n top: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n }\n bottom: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n right: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-100px\";\n }\n return \"0\";\n}};\n position: absolute;\n user-select: none;\n transition: all 300ms ease-in-out;\n z-index: 9998;\n height: 175px;\n display: grid;\n grid-template-areas: \"PVScale PVScale PVScale PVScale\"\n \"PVEmptyOne PVRotateUp PVEmptyTwo PVTranslateY\"\n \"PVRotateLeft PVModel PVRotateRight PVTranslateY\"\n \"PVEmptyThree PVRotateDown PVFitview PVTranslateY\"\n \"PVTranslateX PVTranslateX PVTranslateX PVTranslateX\";\n grid-template-rows: 20px 15px 105px 15px 20px;\n grid-template-columns: 15px 100px 15px 20px;\n\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n :hover {\n opacity: 1;\n }\n`;\n\nconst StyledPluridViewcubeArrow = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n\n /* TODO\n * Themed color\n */\n color: white;\n`;\n\nconst StyledPluridViewcubeArrowIcon = styled__default[\"default\"].div`\n user-select: none;\n font-size: 0.6rem;\n width: 1.2rem;\n height: 1.2rem;\n border-radius: 0.6rem;\n display: grid;\n place-content: center;\n cursor: pointer;\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledFitView = styled__default[\"default\"].div`\n grid-area: PVFitview;\n display: grid;\n place-content: center;\n cursor: pointer;\n user-select: none;\n\n svg {\n height: 0.8rem;\n width: 0.8rem;\n fill: white;\n }\n`;\n\nconst StyledPluridViewcubeFace = styled__default[\"default\"].div`\n font-size: 0.6rem;\n position: absolute;\n height: 50px;\n width: 50px;\n pointer-events: none;\n display: grid;\n transform-style: preserve-3d;\n grid-template-areas: \"PVFTopLeft PVFTopCenter PVFTopRight\"\n \"PVFMiddleLeft PVFMiddleCenter PVFMiddleRight\"\n \"PVFBottomLeft PVFBottomCenter PVFBottomRight\";\n grid-template-rows: 10px 30px 10px;\n grid-template-columns: 10px 30px 10px;\n box-sizing: content-box;\n transition: all 300ms linear;\n\n border: 1px solid ${({mouseOver: mouseOver, theme: theme}) => {\n if (mouseOver) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({face: face, theme: theme}) => {\n if (face === \"base\") {\n return \"0px 0px 12px 2px \" + theme.boxShadowPenumbraColor;\n }\n return \"\";\n}};\n opacity: ${({opaque: opaque, mouseOver: mouseOver}) => {\n if (!opaque) {\n if (mouseOver) {\n return \"0.8\";\n }\n if (!mouseOver) {\n return \"0.4\";\n }\n }\n return \"1\";\n}};\n transform: ${({face: face}) => {\n switch (face) {\n case \"front\":\n return \"translateZ(25px) rotateY(0deg)\";\n\n case \"back\":\n return \"translateZ(-25px) rotateY(-180deg)\";\n\n case \"left\":\n return \"translateX(-25px) rotateY(-90deg)\";\n\n case \"right\":\n return \"translateX(25px) rotateY(90deg)\";\n\n case \"top\":\n return \"translateY(-25px) rotateX(90deg)\";\n\n case \"base\":\n return \"translateY(25px) rotateX(-90deg)\";\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridViewcubeFaceZone = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n cursor: pointer;\n pointer-events: all;\n\n grid-area: ${({type: type}) => `PVF${type}`};\n color: ${({theme: theme, hovered: hovered}) => {\n if (hovered) {\n return theme.colorPrimary;\n }\n return theme.colorSecondary;\n}};\n background-color: ${({theme: theme, transparentUI: transparentUI, hovered: hovered, active: active}) => {\n if (transparentUI && !hovered) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (active) {\n return theme.backgroundColorTertiary;\n }\n if (hovered) {\n return theme.backgroundColorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n border: 1px solid ${({theme: theme, transparentUI: transparentUI, hovered: hovered}) => {\n if (transparentUI && !hovered) {\n return \"transparent\";\n }\n if (hovered) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst faceTypes = {\n topLeft: \"TopLeft\",\n topCenter: \"TopCenter\",\n topRight: \"TopRight\",\n middleLeft: \"MiddleLeft\",\n middleCenter: \"MiddleCenter\",\n middleRight: \"MiddleRight\",\n bottomLeft: \"BottomLeft\",\n bottomCenter: \"BottomCenter\",\n bottomRight: \"BottomRight\"\n};\n\nconst zoneCodes = {\n frontTopLeft: \"A1\",\n frontTopCenter: \"A2\",\n frontTopRight: \"A3\",\n frontMiddleLeft: \"B1\",\n frontMiddleCenter: \"B2\",\n frontMiddleRight: \"B3\",\n frontBottomLeft: \"C1\",\n frontBottomCenter: \"C2\",\n frontBottomRight: \"C3\",\n rightTopLeft: \"A3\",\n rightTopCenter: \"A4\",\n rightTopRight: \"A5\",\n rightMiddleLeft: \"B3\",\n rightMiddleCenter: \"B4\",\n rightMiddleRight: \"B5\",\n rightBottomLeft: \"C3\",\n rightBottomCenter: \"C4\",\n rightBottomRight: \"C5\",\n backTopLeft: \"A5\",\n backTopCenter: \"A6\",\n backTopRight: \"A7\",\n backMiddleLeft: \"B5\",\n backMiddleCenter: \"B6\",\n backMiddleRight: \"B7\",\n backBottomLeft: \"C5\",\n backBottomCenter: \"C6\",\n backBottomRight: \"C7\",\n leftTopLeft: \"A7\",\n leftTopCenter: \"A8\",\n leftTopRight: \"A1\",\n leftMiddleLeft: \"B7\",\n leftMiddleCenter: \"B8\",\n leftMiddleRight: \"B1\",\n leftBottomLeft: \"C7\",\n leftBottomCenter: \"C8\",\n leftBottomRight: \"C1\",\n topTopLeft: \"A7\",\n topTopCenter: \"A6\",\n topTopRight: \"A5\",\n topMiddleLeft: \"A8\",\n topMiddleCenter: \"D1\",\n topMiddleRight: \"A4\",\n topBottomLeft: \"A1\",\n topBottomCenter: \"A2\",\n topBottomRight: \"A3\",\n baseTopLeft: \"C1\",\n baseTopCenter: \"C2\",\n baseTopRight: \"C3\",\n baseMiddleLeft: \"C8\",\n baseMiddleCenter: \"E1\",\n baseMiddleRight: \"C4\",\n baseBottomLeft: \"C7\",\n baseBottomCenter: \"C6\",\n baseBottomRight: \"C5\"\n};\n\nconst faceTransform = {\n A1: {\n rotateX: -45,\n rotateY: 45\n },\n A2: {\n rotateX: -45,\n rotateY: 0\n },\n A3: {\n rotateX: -45,\n rotateY: -45\n },\n B1: {\n rotateX: 0,\n rotateY: 45\n },\n B2: {\n rotateX: 0,\n rotateY: 0\n },\n B3: {\n rotateX: 0,\n rotateY: -45\n },\n C1: {\n rotateX: 45,\n rotateY: 45\n },\n C2: {\n rotateX: 45,\n rotateY: 0\n },\n C3: {\n rotateX: 45,\n rotateY: -45\n },\n A4: {\n rotateX: -45,\n rotateY: 270.1\n },\n A5: {\n rotateX: -45,\n rotateY: 225\n },\n B4: {\n rotateX: 0,\n rotateY: 270.1\n },\n B5: {\n rotateX: 0,\n rotateY: 225\n },\n C4: {\n rotateX: 45,\n rotateY: 270.1\n },\n C5: {\n rotateX: 45,\n rotateY: 225\n },\n A6: {\n rotateX: -45,\n rotateY: 180\n },\n A7: {\n rotateX: -45,\n rotateY: 135\n },\n B6: {\n rotateX: 0,\n rotateY: 180.1\n },\n B7: {\n rotateX: 0,\n rotateY: 135\n },\n C6: {\n rotateX: 45,\n rotateY: 180.1\n },\n C7: {\n rotateX: 45,\n rotateY: 135\n },\n A8: {\n rotateX: -45,\n rotateY: 90.1\n },\n B8: {\n rotateX: 0,\n rotateY: 90.1\n },\n C8: {\n rotateX: 45,\n rotateY: 90.1\n },\n D1: {\n rotateX: -90.1,\n rotateY: 0\n },\n E1: {\n rotateX: 90.1,\n rotateY: 0\n }\n};\n\nconst PluridViewcubeFace = properties => {\n const {face: face, faceText: faceText, mouseOver: mouseOver, hoveredZone: hoveredZone, setHoveredZone: setHoveredZone, activeZone: activeZone, setActiveZone: setActiveZone, generalTheme: generalTheme, interactionTheme: interactionTheme, configuration: configuration, dispatchRotateX: dispatchRotateX, dispatchRotateY: dispatchRotateY, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const opaqueFace = elements.viewcube.opaque;\n const handleClick = type => {\n const faceType = `${face}${type}`;\n const zoneCode = zoneCodes[faceType];\n const transform = faceTransform[zoneCode];\n setActiveZone(zoneCode);\n dispatchSetAnimatedTransform(true);\n dispatchRotateX(transform.rotateX);\n dispatchRotateY(transform.rotateY);\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n return React__default[\"default\"].createElement(StyledPluridViewcubeFace, {\n theme: generalTheme,\n face: face,\n opaque: opaqueFace,\n mouseOver: mouseOver\n }, React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n onClick: () => handleClick(faceTypes.topLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n onClick: () => handleClick(faceTypes.topCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.topRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topRight}`],\n onClick: () => handleClick(faceTypes.topRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n onClick: () => handleClick(faceTypes.middleLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n onClick: () => handleClick(faceTypes.middleCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleCenter}`]),\n transparentUI: transparentUI\n }, faceText), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n onClick: () => handleClick(faceTypes.middleRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n onClick: () => handleClick(faceTypes.bottomLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n onClick: () => handleClick(faceTypes.bottomCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n onClick: () => handleClick(faceTypes.bottomRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomRight}`]),\n transparentUI: transparentUI\n }));\n};\n\nconst mapStateToProperties$a = state => ({\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$a = dispatch => ({\n dispatchRotateX: angleX => dispatch(actions.space.rotateX(angleX)),\n dispatchRotateY: angleY => dispatch(actions.space.rotateY(angleY)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated))\n});\n\nconst ConnectedPluridViewcubeFace = reactRedux.connect(mapStateToProperties$a, mapDispatchToProperties$a, null, {\n context: StateContext\n})(PluridViewcubeFace);\n\nconst StyledPluridViewcubeModel = styled__default[\"default\"].div`\n grid-area: PVModel;\n margin-left: -7px;\n margin-top: 5px;\n`;\n\nconst StyledPluridViewcubeModelContainer = styled__default[\"default\"].div`\n perspective: 2000px;\n perspective-origin: 50% 50%;\n`;\n\nconst StyledPluridViewcubeModelCube = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n width: 50px;\n height: 50px;\n`;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix, rotateMatrix: rotateMatrix, multiplyArrayOfMatrices: multiplyArrayOfMatrices, scaleMatrix: scaleMatrix, translateMatrix: translateMatrix} = pluridEngine.interaction.matrix;\n\nconst {degToRad: degToRad} = pluridEngine.interaction.quaternion;\n\nconst PluridViewcubeModel = properties => {\n const {mouseOver: mouseOver, stateLanguage: stateLanguage, spaceRotationX: spaceRotationX, spaceRotationY: spaceRotationY, stateAnimatedTransform: stateAnimatedTransform, stateTransformTime: stateTransformTime} = properties;\n const [hoveredZone, setHoveredZone] = React.useState(\"\");\n const [activeZone, setActiveZone] = React.useState(\"\");\n const handleMouseLeave = () => {\n setHoveredZone(\"\");\n };\n const computeTransform = () => {\n const offsets = {\n x: 32,\n y: 23,\n z: 0\n };\n const transformOrigins = {\n x: 0,\n y: 0,\n z: 0\n };\n const scale = 1;\n const rotationMatrix = rotateMatrix(degToRad(-spaceRotationX), degToRad(-spaceRotationY));\n const translationMatrix = translateMatrix(offsets.x, offsets.y, offsets.z);\n const scalationMatrix = scaleMatrix(scale);\n const transformMatrix = multiplyArrayOfMatrices([ translationMatrix, multiplyArrayOfMatrices([ translateMatrix(transformOrigins.x, transformOrigins.y, transformOrigins.z), rotationMatrix, translateMatrix(-transformOrigins.x, -transformOrigins.y, -transformOrigins.z) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix(transformMatrix);\n return transform;\n };\n React.useEffect((() => {\n if (!hoveredZone) {\n setActiveZone(\"\");\n }\n }), [ spaceRotationX, spaceRotationY ]);\n const transform = computeTransform();\n return React__default[\"default\"].createElement(StyledPluridViewcubeModel, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelContainer, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelCube, {\n suppressHydrationWarning: true,\n style: {\n transform: transform,\n transition: mouseOver || stateAnimatedTransform ? `transform ${stateTransformTime}ms ease-in-out` : \"\"\n },\n onMouseLeave: () => handleMouseLeave()\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"front\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeFront),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"back\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBack),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"left\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeLeft),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"right\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeRight),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"top\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeTop),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"base\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBase),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }))));\n};\n\nconst mapStateToProperties$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n spaceRotationX: selectors.space.getRotationX(state),\n spaceRotationY: selectors.space.getRotationY(state),\n stateAnimatedTransform: selectors.space.getAnimatedTransform(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$9 = dispatch => ({});\n\nconst ConnectedPluridViewcubeModel = reactRedux.connect(mapStateToProperties$9, mapDispatchToProperties$9, null, {\n context: StateContext\n})(PluridViewcubeModel);\n\nconst PluridViewcube = properties => {\n const {stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, stateTransformTime: stateTransformTime, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateYWith: dispatchRotateYWith, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSpaceResetTransform: dispatchSpaceResetTransform} = properties;\n const {elements: elements, space: space} = stateConfiguration;\n const {viewcube: viewcube} = elements;\n const {buttons: buttons, conceal: conceal} = viewcube;\n const {fadeInTime: fadeInTime} = space;\n const showViewcube = viewcube.show;\n const [mouseOver, setMouseOver] = React.useState(false);\n const [isMounted, setIsMounted] = React.useState(false);\n const animatedRotate = (type, value) => {\n dispatchSetAnimatedTransform(true);\n switch (type) {\n case \"rotateX\":\n dispatchRotateXWith(value);\n break;\n\n case \"rotateY\":\n dispatchRotateYWith(value);\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n const animatedReset = event => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n dispatchSetAnimatedTransform(true);\n dispatchSpaceResetTransform();\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n if (!showViewcube) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridViewcube, {\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseMove: () => !mouseOver ? setMouseOver(true) : null,\n conceal: conceal,\n mouseOver: mouseOver,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEWCUBE\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeModel, {\n mouseOver: mouseOver\n }), mouseOver && buttons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n style: {\n gridArea: \"PVRotateUp\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", -90.1)\n }, \"▲\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateDown\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", 90.1)\n }, \"▼\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateLeft\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", 90.1)\n }, \"◀\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateRight\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", -90.1)\n }, \"▶\")), React__default[\"default\"].createElement(StyledFitView, {\n onClick: animatedReset\n }, React__default[\"default\"].createElement(pluridIconsReact.PluridIconGlobal, null))));\n};\n\nconst mapStateToProperties$8 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$8 = dispatch => ({\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSpaceResetTransform: () => dispatch(actions.space.spaceResetTransform())\n});\n\nconst ConnectedPluridViewcube = reactRedux.connect(mapStateToProperties$8, mapDispatchToProperties$8, null, {\n context: StateContext\n})(PluridViewcube);\n\nconst PluridViewContainer = _properties => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridSpace, null), React__default[\"default\"].createElement(ConnectedOrigin, null), React__default[\"default\"].createElement(ConnectedPluridToolbar, null), React__default[\"default\"].createElement(ConnectedPluridViewcube, null));\n\nconst PluridView = properties => {\n const {planesRegistrar: planesRegistrar, customPlane: customPlane, planeContext: planeContext, planeContextValue: planeContextValue, pubsub: pubsub, planeNotFound: planeNotFound, planeRenderError: planeRenderError, matchedRoute: matchedRoute, hostname: hostname, state: state, stateConfiguration: stateConfiguration, stateTransform: stateTransform, stateSpaceView: stateSpaceView, stateTree: stateTree, stateGeneralTheme: stateGeneralTheme, dispatch: dispatch, dispatchSetConfiguration: dispatchSetConfiguration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetSpaceField: dispatchSetSpaceField, dispatchSetSpaceLocation: dispatchSetSpaceLocation, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransformTime: dispatchSetTransformTime, dispatchSetTree: dispatchSetTree, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateX: dispatchRotateX, dispatchRotateYWith: dispatchRotateYWith, dispatchRotateY: dispatchRotateY, dispatchTranslateXWith: dispatchTranslateXWith, dispatchTranslateYWith: dispatchTranslateYWith, dispatchTranslateZWith: dispatchTranslateZWith, dispatchScaleUpWith: dispatchScaleUpWith, dispatchScaleDownWith: dispatchScaleDownWith, dispatchSpaceSetViewSize: dispatchSpaceSetViewSize, dispatchSpaceSetView: dispatchSpaceSetView} = properties;\n const viewElement = React.useRef(null);\n const scrollTimeout = React.useRef();\n const [pluridPubSub, setPluridPubSub] = React.useState(pubsub ? [ pubsub ] : [ new PluridPubSub__default[\"default\"] ]);\n const [preventOverscroll, setPreventOverscroll] = React.useState(false);\n const handlePreventOverscroll = event => {\n if (event.shiftKey || event.altKey || event.metaKey || event.ctrlKey) {\n setPreventOverscroll(true);\n }\n clearTimeout(scrollTimeout.current);\n scrollTimeout.current = setTimeout((() => {\n setPreventOverscroll(false);\n }), pluridData.PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT);\n };\n const shortcutsCallback = React.useCallback((event => {\n const {transformLocks: transformLocks} = stateConfiguration.space;\n handleGlobalShortcuts(dispatch, state, pluridPubSub[0], event, stateConfiguration.space.firstPerson, transformLocks);\n }), [ JSON.stringify(state), stateConfiguration.space.firstPerson, stateConfiguration.space.transformLocks, dispatch ]);\n const wheelCallback = React.useCallback((event => {\n handlePreventOverscroll(event);\n const {transformMode: transformMode, transformLocks: transformLocks} = stateConfiguration.space;\n const transformModes = {\n rotation: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n translation: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n scale: transformMode === pluridData.TRANSFORM_MODES.SCALE\n };\n handleGlobalWheel(dispatch, event, transformModes, transformLocks);\n }), [ dispatch, stateConfiguration.space.transformMode, stateConfiguration.space.transformLocks ]);\n const treeUpdate = (view, configuration = stateConfiguration) => {\n const planes = getRegisteredPlanes(planesRegistrar);\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: planes,\n configuration: configuration,\n view: view\n }, hostname);\n const computedTree = spaceTree.compute();\n for (const statePlane of stateTree) {\n for (const [index, computedPlane] of computedTree.entries()) {\n if (statePlane.route === computedPlane.route && pluridFunctions.objects.equals(statePlane.location, computedPlane.location)) {\n computedPlane.planeID = statePlane.planeID;\n if (statePlane.children) {\n computedTree[index].children = statePlane.children;\n }\n }\n }\n }\n dispatchSetTree(computedTree);\n };\n const treeUpdateCallback = React.useCallback((() => {\n treeUpdate(stateSpaceView);\n }), [ hostname, stateSpaceView, stateConfiguration ]);\n const handlePubSubSubscribe = pubsub => {\n const subscriptions = [ {\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n callback: data => {\n if (data.internal) {\n return;\n }\n const computedConfiguration = pluridEngine.general.configuration.merge(data, stateConfiguration);\n if (typeof computedConfiguration.global.theme === \"object\") {\n if (typeof computedConfiguration.global.theme.general === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme.general]);\n } else {\n dispatchSetGeneralTheme(computedConfiguration.global.theme.general);\n }\n if (typeof computedConfiguration.global.theme.interaction === \"string\") {\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme.interaction]);\n } else {\n dispatchSetInteractionTheme(computedConfiguration.global.theme.interaction);\n }\n } else if (typeof computedConfiguration.global.theme === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n }\n dispatchSetConfiguration(computedConfiguration);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n callback: data => {\n const {value: value, internal: internal} = data;\n if (internal) {\n return;\n }\n dispatchSetSpaceLocation(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM,\n callback: data => {\n const {value: value} = data;\n dispatchSetAnimatedTransform(value.active);\n if (value.time) {\n dispatchSetTransformTime(value.time);\n } else {\n dispatchSetTransformTime(450);\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateXWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateX(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateYWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateY(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateXWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateYWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Z_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateZWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Z_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = [ ...stateSpaceView, plane ];\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES,\n callback: data => {\n const {view: view} = data;\n dispatchSpaceSetView([ ...view ]);\n treeUpdate(view);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = stateSpaceView.filter((view => {\n if (typeof view === \"string\") {\n return view === plane;\n }\n return true;\n }));\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NAVIGATE_TO_PLANE,\n callback: data => {\n const {id: id} = data;\n const plane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, id);\n navigateToPluridPlane(dispatch, plane);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n callback: data => {\n const {id: id} = data;\n if (typeof id !== \"string\") {\n return;\n }\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: id\n });\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE,\n callback: () => {\n const treePlane = stateTree.find((plane => plane.planeID === state.space.lastClosedPlane));\n if (treePlane) {\n const forceShow = true;\n const {updatedTree: updatedTree} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, treePlane.planeID, forceShow);\n dispatchSetTree(updatedTree);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: \"\"\n });\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n callback: data => {\n const {id: id} = data;\n const treePlane = stateTree.find((plane => plane.planeID === id));\n if (treePlane) {\n const forceShow = false;\n const {updatedTree: updatedTree} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, treePlane.planeID, forceShow);\n dispatchSetTree(updatedTree);\n setTimeout((() => {\n dispatchSetTree(updatedTree);\n }), 50);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: id\n });\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.PREVIOUS_ROOT,\n callback: () => {\n focusPreviousRoot(dispatch, state);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NEXT_ROOT,\n callback: () => {\n focusNextRoot(dispatch, state);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NAVIGATE_TO_ROOT,\n callback: data => {\n const index = data.index;\n if (typeof index !== \"undefined\") {\n focusRootIndex(dispatch, state, index);\n return;\n }\n const id = data.id;\n focusRootID(dispatch, state, id);\n }\n } ];\n const indexes = [];\n for (const subscription of subscriptions) {\n const index = pubsub.subscribe(subscription);\n indexes.push(index);\n }\n return () => {\n for (const index of indexes) {\n pubsub.unsubscribe(index);\n }\n };\n };\n const handlePubSubPublish = pubsub => {\n const internalTransform = {\n value: Object.assign({}, stateTransform),\n internal: true\n };\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n data: internalTransform\n });\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n data: Object.assign(Object.assign({}, stateConfiguration), {\n internal: true\n })\n });\n };\n const registerPubSub = pubsub => {\n const pluridPubSubs = [ ...pluridPubSub, pubsub ];\n setPluridPubSub(pluridPubSubs);\n };\n const handleSwipe = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const {altKey: altKey} = event.srcEvent;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n useAnimatedTransform(dispatch);\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * distance);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(distance);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(-1 * distance);\n } else {\n dispatchTranslateYWith(-1 * distance);\n }\n }\n if (scalationMode) {\n dispatchScaleUpWith(velocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(distance);\n } else {\n dispatchTranslateYWith(distance);\n }\n }\n if (scalationMode) {\n dispatchScaleDownWith(velocity);\n }\n break;\n }\n };\n const handlePan = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const {altKey: altKey} = event.srcEvent;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n const rotationVelocity = velocity * 20;\n const translationVelocity = distance / 5;\n const scaleVelocity = velocity / 4;\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * translationVelocity);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(translationVelocity);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(-1 * translationVelocity);\n } else {\n dispatchTranslateYWith(-1 * translationVelocity);\n }\n }\n if (scalationMode) {\n dispatchScaleUpWith(scaleVelocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(translationVelocity);\n } else {\n dispatchTranslateYWith(translationVelocity);\n }\n }\n if (scalationMode) {\n dispatchScaleDownWith(scaleVelocity);\n }\n break;\n }\n };\n const handlePinch = (event, type) => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode !== \"TRANSLATION\") {\n return;\n }\n const direction = type === \"in\" ? 1 : -1;\n const velocity = direction * 20;\n dispatchTranslateZWith(velocity);\n };\n const handlePinchin = event => {\n handlePinch(event, \"in\");\n };\n const handlePinchout = event => {\n handlePinch(event, \"out\");\n };\n React.useEffect((() => {\n if (viewElement.current) {\n viewElement.current.addEventListener(\"keydown\", shortcutsCallback, {\n passive: false\n });\n viewElement.current.addEventListener(\"wheel\", wheelCallback, {\n passive: false\n });\n }\n return () => {\n if (viewElement.current) {\n viewElement.current.removeEventListener(\"keydown\", shortcutsCallback);\n viewElement.current.removeEventListener(\"wheel\", wheelCallback);\n }\n };\n }), [ JSON.stringify(state), viewElement.current, stateConfiguration.space.transformMode, stateConfiguration.space.firstPerson ]);\n React.useEffect((() => {\n const handleResize = pluridFunctions.meta.debounce((() => {\n if (viewElement && viewElement.current) {\n const width = viewElement.current.offsetWidth;\n const height = viewElement.current.offsetHeight;\n dispatchSpaceSetViewSize({\n width: width,\n height: height\n });\n }\n }), pluridData.PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME);\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }), []);\n React.useEffect((() => {\n window.addEventListener(\"resize\", treeUpdateCallback);\n return () => {\n window.removeEventListener(\"resize\", treeUpdateCallback);\n };\n }), [ stateSpaceView, stateConfiguration ]);\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const handleTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n const {transformTouch: transformTouch} = stateConfiguration.space;\n delete Hammer.defaults.cssProps.userSelect;\n delete Hammer.defaults.cssProps.userDrag;\n delete Hammer.defaults.cssProps.tapHighlightColor;\n delete Hammer.defaults.cssProps.touchSelect;\n if (!viewElement.current) {\n return;\n }\n touch = new Hammer(viewElement.current);\n touch.get(\"pan\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"swipe\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"pinch\").set({\n enable: true\n });\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.on(\"pan\", handlePan);\n } else {\n touch.on(\"swipe\", handleSwipe);\n }\n touch.on(\"pinchin\", handlePinchin);\n touch.on(\"pinchout\", handlePinchout);\n }));\n handleTouch();\n return () => {\n if (!touch) {\n return;\n }\n const {transformTouch: transformTouch} = stateConfiguration.space;\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.off(\"pan\", handlePan);\n } else {\n touch.off(\"swipe\", handleSwipe);\n }\n touch.off(\"pinchin\", handlePinchin);\n touch.off(\"pinchout\", handlePinchout);\n };\n }), [ viewElement.current, stateConfiguration.space.transformTouch, stateConfiguration.space.transformMode ]);\n React.useEffect((() => {\n const handleGamepadConnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n const handleGamepadDisconnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n window.addEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.addEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n return () => {\n window.removeEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.removeEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n };\n }), []);\n React.useEffect((() => {\n const unsubscribers = [];\n for (const pubsub of pluridPubSub) {\n const unsubscriber = handlePubSubSubscribe(pubsub);\n unsubscribers.push(unsubscriber);\n }\n return () => {\n for (const unsubscriber of unsubscribers) {\n unsubscriber();\n }\n };\n }), [ state.space.lastClosedPlane, pluridPubSub.length, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n for (const pubsub of pluridPubSub) {\n handlePubSubPublish(pubsub);\n }\n }), [ pluridPubSub.length, stateConfiguration, stateTransform ]);\n React.useEffect((() => {\n treeUpdateCallback();\n }), []);\n const pluridContext = {\n planesRegistrar: planesRegistrar,\n planeContext: planeContext,\n planeContextValue: planeContextValue,\n customPlane: customPlane,\n planeNotFound: planeNotFound,\n planeRenderError: planeRenderError,\n matchedRoute: matchedRoute,\n hostname: hostname,\n defaultPubSub: pluridPubSub[0],\n registerPubSub: registerPubSub\n };\n return React__default[\"default\"].createElement(StyledView, {\n ref: viewElement,\n tabIndex: 0,\n transformMode: stateConfiguration.space.transformMode,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEW\n }, React__default[\"default\"].createElement(GlobalStyle, {\n theme: stateGeneralTheme,\n preventOverscroll: preventOverscroll\n }), React__default[\"default\"].createElement(Context.Provider, {\n value: pluridContext\n }, stateSpaceView.length !== 0 ? React__default[\"default\"].createElement(PluridViewContainer, null) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null)));\n};\n\nconst mapStateToProperties$7 = state => ({\n state: state,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateTransform: selectors.space.getTransform(state),\n stateTree: selectors.space.getTree(state),\n stateSpaceLoading: selectors.space.getLoading(state),\n stateSpaceView: selectors.space.getView(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$7 = dispatch => ({\n dispatch: dispatch,\n dispatchSetConfiguration: payload => dispatch(actions.configuration.setConfiguration(payload)),\n dispatchSetConfigurationMicro: () => dispatch(actions.configuration.setConfigurationMicro()),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchSpaceSetViewSize: payload => dispatch(actions.space.setViewSize(payload)),\n dispatchSetSpaceLoading: payload => dispatch(actions.space.setSpaceLoading(payload)),\n dispatchSetAnimatedTransform: payload => dispatch(actions.space.setAnimatedTransform(payload)),\n dispatchSetTransformTime: payload => dispatch(actions.space.setTransformTime(payload)),\n dispatchSetSpaceLocation: payload => dispatch(actions.space.setSpaceLocation(payload)),\n dispatchSetTree: payload => dispatch(actions.space.setTree(payload)),\n dispatchSetGeneralTheme: payload => dispatch(actions.themes.setGeneralTheme(payload)),\n dispatchSetInteractionTheme: payload => dispatch(actions.themes.setInteractionTheme(payload)),\n dispatchRotateX: payload => dispatch(actions.space.rotateX(payload)),\n dispatchRotateXWith: payload => dispatch(actions.space.rotateXWith(payload)),\n dispatchRotateY: payload => dispatch(actions.space.rotateY(payload)),\n dispatchRotateYWith: payload => dispatch(actions.space.rotateYWith(payload)),\n dispatchTranslateXWith: payload => dispatch(actions.space.translateXWith(payload)),\n dispatchTranslateYWith: payload => dispatch(actions.space.translateYWith(payload)),\n dispatchTranslateZWith: payload => dispatch(actions.space.translateZWith(payload)),\n dispatchScaleUpWith: payload => dispatch(actions.space.scaleUpWith(payload)),\n dispatchScaleDownWith: payload => dispatch(actions.space.scaleDownWith(payload)),\n dispatchSpaceSetView: payload => dispatch(actions.space.spaceSetView(payload))\n});\n\nconst ConnectedPluridView = reactRedux.connect(mapStateToProperties$7, mapDispatchToProperties$7, null, {\n context: StateContext\n})(PluridView);\n\nclass PluridApplication extends React.Component {\n constructor(properties, context) {\n super(properties);\n this.storeID = properties.id || \"default\";\n this.context = context;\n const defaultStore = this.computeStore();\n this.store = store(defaultStore);\n this.subscribeStore();\n }\n componentDidUpdate() {\n const updatedStore = this.computeStore();\n this.store.dispatch({\n type: \"SET_STATE\",\n payload: updatedStore\n });\n }\n componentWillUnmount() {\n if (this.storeUnubscriber) {\n this.storeUnubscriber();\n }\n }\n render() {\n return React__default[\"default\"].createElement(reactRedux.Provider, {\n store: this.store,\n context: StateContext\n }, React__default[\"default\"].createElement(ConnectedPluridView, Object.assign({}, this.props)));\n }\n computeStore() {\n const {view: view, planes: planes, configuration: configuration, precomputedState: precomputedState, planesRegistrar: planesRegistrar, useLocalStorage: useLocalStorage, hostname: hostname, space: space} = this.props;\n registerPlanes(planes, planesRegistrar, hostname);\n const currentState = this.store ? this.store.getState() : undefined;\n const localState = pluridEngine.state.local.load(this.storeID, useLocalStorage);\n const contextState = loadStateFromContext(this.context, space);\n const store = pluridEngine.state.compute(view, configuration, planesRegistrar, currentState, localState, precomputedState, contextState, hostname);\n return store;\n }\n subscribeStore() {\n if (!this.store) {\n return;\n }\n if (typeof localStorage === \"undefined\") {\n return;\n }\n if (!this.props.useLocalStorage) {\n return;\n }\n this.storeUnubscriber = this.store.subscribe((() => {\n const state = this.store.getState();\n const stateData = JSON.stringify(state);\n localStorage.setItem(\"pluridState-\" + this.storeID, stateData);\n }));\n }\n}\n\nPluridApplication.contextType = PluridContext;\n\nconst StyledSpaces = styled__default[\"default\"].div`\n scroll-snap-type: ${properties => {\n const {alignment: alignment, snapType: snapType} = properties;\n if (snapType === \"none\") {\n return \"none\";\n }\n return alignment + \" \" + snapType;\n}};\n\n flex-direction: ${properties => {\n const {alignment: alignment} = properties;\n if (alignment === \"x\") {\n return \"row\";\n }\n return \"column\";\n}};\n\n outline: none;\n overflow: auto;\n /* display: flex; */\n height: 100vh;\n height: -webkit-fill-available;\n width: 100vw;\n`;\n\nconst collectApplicationsFromPath = (isoMatch, protocol, host, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const path = {\n planes: [],\n spaces: [],\n view: [],\n value: \"\"\n };\n let defaultConfiguration;\n if (isoMatch.kind === \"Route\") {\n let routeData = isoMatch.data;\n defaultConfiguration = routeData.defaultConfiguration;\n if (isoMatch.data.resolver) {\n routeData = yield isoMatch.data.resolver(globals);\n }\n path.planes = routeData.planes || [];\n path.spaces = routeData.spaces || [];\n path.view = routeData.view || [];\n path.value = isoMatch.data.value || \"\";\n }\n const {planes: planes, spaces: spaces, view: view} = path;\n const plurids = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n }\n const pluridApplication = {\n planes: planes,\n view: view,\n configuration: defaultConfiguration\n };\n plurids.push(pluridApplication);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {value: value, component: component} = planeData;\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n const pluridPlane = {\n component: component,\n route: value\n };\n pluridPlanes.push(pluridPlane);\n }\n const pluridApplication = {\n planes: pluridPlanes,\n view: view,\n configuration: defaultConfiguration\n };\n plurids.push(pluridApplication);\n }\n return plurids;\n}));\n\nconst gatherPluridPlanes = (routes, planes) => {\n const pluridPlanes = [];\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planeRoute = planeData.link ? planeData.link : planeData.value.startsWith(\"/\") ? planeData.value : route.value + \"/\" + planeData.value;\n const pluridPlane = {\n route: planeRoute,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n if (route.spaces) ;\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pluridPlane = {\n route: planeData.value,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n return pluridPlanes;\n};\n\nconst renderMultispace = (matchedRoute, hostname = \"origin\") => {\n var _a, _b, _c, _d, _e, _f;\n if (matchedRoute.kind !== \"Route\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const protocol = \"http\";\n const host = hostname;\n const {match: match, data: path} = matchedRoute;\n const {parameters: parameters, query: query} = match;\n const pluridRouteProperty = {\n value: match.value,\n parameters: parameters,\n query: query\n };\n const {exterior: exterior, planes: planes, spaces: spaces, slotted: slotted} = matchedRoute.data;\n const multispaceAlignment = ((_a = path.multispace) === null || _a === void 0 ? void 0 : _a.alignment) || \"y\";\n const multispaceSnapType = ((_b = path.multispace) === null || _b === void 0 ? void 0 : _b.snapType) || \"mandatory\";\n let PluridExterior = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (isReactRenderable(exterior)) {\n PluridExterior = exterior;\n }\n let PluridSpaces = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n const spacesArray = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n }\n }\n const pluridPlanesRegistrar = new PluridPlanesRegistrar([], \"localhost:63000\");\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: planes,\n view: view,\n configuration: space.configuration,\n planesRegistrar: pluridPlanesRegistrar,\n hostname: hostname\n });\n spacesArray.push(App);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n const view = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = pluridData.PLURID_ROUTE_DEFAULT_SPACE;\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n pluridPlanes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: pluridPlanes,\n view: view,\n configuration: path.defaultConfiguration,\n hostname: hostname\n });\n spacesArray.push(App);\n }\n let MultispaceHeader;\n let MultispaceFooter;\n if (isReactRenderable((_c = path.multispace) === null || _c === void 0 ? void 0 : _c.header)) {\n MultispaceHeader = (_d = path.multispace) === null || _d === void 0 ? void 0 : _d.header;\n }\n if (isReactRenderable((_e = path.multispace) === null || _e === void 0 ? void 0 : _e.footer)) {\n MultispaceFooter = (_f = path.multispace) === null || _f === void 0 ? void 0 : _f.footer;\n }\n PluridSpaces = () => React__default[\"default\"].createElement(StyledSpaces, {\n alignment: multispaceAlignment,\n snapType: multispaceSnapType,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_MULTISPACE\n }, MultispaceHeader && React__default[\"default\"].createElement(MultispaceHeader, {\n plurid: pluridRouteProperty\n }), spacesArray, MultispaceFooter && React__default[\"default\"].createElement(MultispaceFooter, {\n plurid: pluridRouteProperty\n }));\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, exterior && React__default[\"default\"].createElement(PluridExterior, {\n spaces: slotted ? spacesArray : undefined,\n plurid: pluridRouteProperty\n }), (spaces || planes) && !slotted && React__default[\"default\"].createElement(PluridSpaces, null));\n return PluridRoute;\n };\n};\n\nconst computePluridRoute = (matchedRoute, planesRegistrar, isoMatcher, directPlane, hostname = \"origin\") => {\n if (directPlane || (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.kind) === \"RoutePlane\") {\n const match = directPlane || matchedRoute;\n if (!match) {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = renderDirectPlane(match, planesRegistrar, hostname);\n return DirectPlane;\n }\n if (!matchedRoute) {\n const notFoundRoute = isoMatcher.match(\"/not-found\", \"route\");\n if (notFoundRoute && notFoundRoute.kind === \"Route\") {\n const notFoundRender = computePluridRoute(notFoundRoute, planesRegistrar, isoMatcher, undefined, hostname);\n return notFoundRender;\n }\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {exterior: exterior, view: view, planes: planes, spaces: spaces, defaultConfiguration: defaultConfiguration, slotted: slotted, resolver: resolver} = matchedRoute.data;\n if (resolver) {\n resolver(undefined);\n }\n const pluridRouteProperty = {\n value: matchedRoute.match.value,\n parameters: matchedRoute.match.parameters,\n query: matchedRoute.match.query\n };\n let PluridRouteExterior;\n if (isReactRenderable(exterior)) {\n PluridRouteExterior = exterior;\n if (PluridRouteExterior) {\n PluridRouteExterior.displayName = \"PluridRouteExterior\";\n }\n }\n if (exterior && PluridRouteExterior && !view && !planes && !spaces) {\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty\n }));\n return PluridRoute;\n };\n }\n if (view) {\n return () => {\n const pubsub = new PluridPubSub__default[\"default\"];\n const space = matchedRoute.data.value;\n const pluridApplication = React__default[\"default\"].createElement(PluridApplication, {\n view: view,\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n pubsub: pubsub,\n matchedRoute: matchedRoute,\n hostname: hostname,\n space: space\n });\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty,\n pubsub: pubsub,\n spaces: slotted ? [ pluridApplication ] : undefined\n }), !slotted && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridApplication));\n return PluridRoute;\n };\n }\n return renderMultispace(matchedRoute);\n};\n\nconst computeInitialMatchedPath = staticContext => {\n if (staticContext) {\n return staticContext.path;\n }\n if (typeof window !== \"undefined\") {\n return window.location.pathname + window.location.search;\n }\n return \"/\";\n};\n\nconst getDirectPlaneMatch = (matchedPath, routes, planes) => {\n let matchRoute;\n let matchPlane;\n let matchPath;\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planePath = route.value === \"/\" ? planeData.value : route.value + planeData.value;\n matchPath = planePath;\n if (matchedPath === planePath) {\n matchPlane = plane;\n break;\n }\n }\n }\n if (matchPlane) {\n matchRoute = route;\n break;\n }\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n if (matchedPath === planeData.value) {\n matchPlane = plane;\n break;\n }\n }\n }\n return {\n matchRoute: matchRoute,\n matchPlane: matchPlane,\n matchPath: matchPath\n };\n};\n\nconst renderDirectPlane = (routePlane, planesRegistrar, hostname = \"origin\") => {\n if (routePlane.match.query.flat) {\n const flat = routePlane.match.query.flat.toLowerCase();\n const renderFlat = flat === \"true\" || flat === \"1\";\n if (renderFlat) {\n const pluridRoute = planesRegistrar.get(routePlane.match.value);\n if (pluridRoute) {\n const Flat = pluridRoute.component;\n if (typeof Flat !== \"function\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(Flat, null));\n return PluridRoute;\n };\n return DirectPlane;\n }\n }\n }\n const {defaultConfiguration: defaultConfiguration} = routePlane === null || routePlane === void 0 ? void 0 : routePlane.data;\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridApplication, {\n view: [ routePlane.match.value ],\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n hostname: hostname\n }));\n return PluridRoute;\n };\n return DirectPlane;\n};\n\nconst PluridRouterBrowser = properties => {\n const {routes: routes, planes: planes, exterior: exterior, shell: shell, hostname: hostname, static: staticContext, view: cleanNavigationView, cleanNavigation: cleanNavigation, notFoundPath: notFoundPathProperty} = properties;\n const notFoundPath = notFoundPathProperty || \"/not-found\";\n const pluridPlanes = gatherPluridPlanes(routes, planes);\n const pluridPlanesRegistrar = React.useRef(new PluridPlanesRegistrar(pluridPlanes, hostname));\n const pluridIsoMatcher = React.useRef(new PluridIsoMatcher$1({\n routes: routes,\n routePlanes: planes\n }, hostname));\n const mounted = pluridFunctionsReact.useMounted();\n const [matchedPath, setMatchedPath] = React.useState(computeInitialMatchedPath(staticContext));\n const [matchedRoute, setMatchedRoute] = React.useState(pluridIsoMatcher.current.match(matchedPath, \"route\"));\n const [PluridRoute, setPluridRoute] = React.useState(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, staticContext && staticContext.directPlane ? pluridIsoMatcher.current.match(staticContext.directPlane, \"route\") : undefined, hostname));\n const handleLocation = event => {\n let matchedPath;\n if (event && event.detail && event.detail.path && !matchedPath) {\n matchedPath = event.detail.path;\n }\n if (cleanNavigation && cleanNavigationView && !matchedPath) {\n matchedPath = cleanNavigationView;\n }\n const pathname = window.location.pathname;\n if (!matchedPath) {\n matchedPath = pathname + window.location.search;\n }\n setMatchedPath(matchedPath);\n };\n React.useEffect((() => {\n window.addEventListener(\"popstate\", handleLocation);\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n return () => {\n window.removeEventListener(\"popstate\", handleLocation);\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n };\n }), []);\n React.useEffect((() => {\n if (!mounted) {\n return;\n }\n if (!cleanNavigation) {\n if (location.pathname !== matchedPath) {\n history.pushState(null, \"\", matchedPath);\n }\n }\n let matchedRoute = pluridIsoMatcher.current.match(matchedPath, \"route\");\n if (matchedRoute && matchedRoute.kind === \"RoutePlane\") {\n const DirectPlane = renderDirectPlane(matchedRoute, pluridPlanesRegistrar.current, hostname);\n setMatchedRoute(matchedRoute);\n setPluridRoute(DirectPlane);\n return;\n }\n if (!matchedRoute) {\n matchedRoute = pluridIsoMatcher.current.match(notFoundPath, \"route\");\n }\n setMatchedRoute(matchedRoute);\n setPluridRoute(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, undefined, hostname));\n }), [ mounted, matchedPath ]);\n React.useEffect((() => {\n if (!matchedRoute) {\n return;\n }\n if (matchedRoute.kind !== \"Route\") {\n return;\n }\n const path = matchedRoute.match.value;\n pluridFunctions.storage.saveState(path, pluridData.PLURID_ROUTER_STORAGE);\n const locationStoredEvent = new CustomEvent(pluridData.PLURID_ROUTER_LOCATION_STORED, {\n detail: {\n path: path\n }\n });\n window.dispatchEvent(locationStoredEvent);\n }), [ cleanNavigation, matchedRoute ]);\n let PluridRouterExterior;\n if (isReactRenderable(exterior)) {\n PluridRouterExterior = exterior;\n if (PluridRouterExterior) {\n PluridRouterExterior.displayName = \"PluridRouterExterior\";\n }\n }\n let PluridRouterShell = ({children: children}) => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (isReactRenderable(shell)) {\n PluridRouterShell = shell;\n if (PluridRouterShell) {\n PluridRouterShell.displayName = \"PluridRouterShell\";\n }\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouterExterior && React__default[\"default\"].createElement(PluridRouterExterior, {\n matchedRoute: matchedRoute\n }), React__default[\"default\"].createElement(PluridRouterShell, {\n matchedRoute: matchedRoute\n }, React__default[\"default\"].createElement(PluridRoute, null)));\n};\n\nconst PluridRouterStatic = properties => {\n const {path: path, directPlane: directPlane, routes: routes, planes: planes, exterior: exterior, shell: shell, protocol: protocolProperty, hostname: hostnameProperty, gateway: gateway, gatewayQuery: gatewayQueryProperty, gatewayEndpoint: gatewayEndpointProperty} = properties;\n const protocol = protocolProperty || \"http\";\n const hostname = hostnameProperty || \"origin\";\n return React__default[\"default\"].createElement(PluridRouterBrowser, {\n routes: routes,\n planes: planes,\n exterior: exterior,\n shell: shell,\n static: {\n path: path,\n directPlane: directPlane\n },\n protocol: protocol,\n hostname: hostname\n });\n};\n\nclass PluridProvider extends React.Component {\n constructor(properties) {\n super(properties);\n this.properties = properties;\n }\n render() {\n const {metastate: metastate, children: children} = this.properties;\n return React__default[\"default\"].createElement(PluridContext.Provider, {\n value: metastate\n }, children);\n }\n}\n\nPluridProvider.displayName = \"PluridProvider\";\n\nconst DEFAULT_ROUTER_LINK_AS_ANCHOR = true;\n\nconst defaultLinkCoordinates = {\n x: 0,\n y: 0\n};\n\nconst PluridPortal = properties => {\n const {elementID: elementID, rootID: rootID, children: children} = properties;\n const target = pluridFunctionsReact.usePortal(elementID, rootID);\n return reactDom.createPortal(children, target);\n};\n\nconst StyledPluridPlanePreview = styled__default[\"default\"].div`\n position: absolute;\n min-width: 600px;\n min-height: 300px;\n z-index: 99999;\n\n top: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.y;\n return location + \"px\";\n}};\n left: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.x + 5;\n return location + \"px\";\n}};\n background-color: ${({theme: theme}) => theme.backgroundColorSecondary};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n`;\n\nconst PluridPlanePreview = properties => {\n const {planeRoute: planeRoute, linkCoordinates: linkCoordinates, previewComponent: previewComponent, previewOffsetX: previewOffsetX, previewOffsetY: previewOffsetY, stateGeneralTheme: stateGeneralTheme} = properties;\n const resolvedLinkCoordinates = {\n x: linkCoordinates.x + (previewOffsetX !== null && previewOffsetX !== void 0 ? previewOffsetX : 0),\n y: linkCoordinates.y + (previewOffsetY !== null && previewOffsetY !== void 0 ? previewOffsetY : 0)\n };\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const plane = planesRegistry.get(planeRoute);\n if (!plane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Component = previewComponent !== null && previewComponent !== void 0 ? previewComponent : plane.component;\n if (typeof Component !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridPlanePreview, {\n theme: stateGeneralTheme,\n linkCoordinates: resolvedLinkCoordinates\n }, React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$6 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$6 = dispatch => ({});\n\nconst ConnectedPluridPlanePreview = reactRedux.connect(mapStateToProperties$6, mapDispatchToProperties$6, null, {\n context: StateContext\n})(PluridPlanePreview);\n\nconst StyledPluridLink = styled__default[\"default\"].a`\n /**\n * Forces element to go to the second row if inlined.\n */\n display: inline-block;\n\n cursor: pointer;\n color: ${({theme: theme}) => theme.colorTertiary};\n\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n\n ::after {\n content: \"${({devisible: devisible, suffix: suffix}) => {\n if (!devisible) {\n if (suffix) {\n return suffix;\n }\n return \"'\";\n }\n return \"\";\n}}\";\n }\n`;\n\nconst PluridLink = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, properties.children);\n }\n const {hostname: hostname, planesRegistrar: planesRegistrar, defaultPubSub: defaultPubSub} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, properties.children);\n }\n const {children: children, route: planeRoute, devisible: _devisible, suffix: _suffix, atClick: atClick, style: style, className: className, preview: preview, previewComponent: previewComponent, previewFadeIn: previewFadeIn, previewFadeOut: previewFadeOut, previewOffsetX: previewOffsetX, previewOffsetY: previewOffsetY, stateTree: stateTree, stateLastClosedPlane: stateLastClosedPlane, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, stateViewSize: stateViewSize, dispatch: dispatch, dispatchSetTree: dispatchSetTree, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceLinkCoordinates: dispatchUpdateSpaceLinkCoordinates} = properties;\n const planeControls = stateConfiguration.elements.plane.controls.show;\n const previewAppearTime = previewFadeIn || pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN;\n const previewDisappearTime = previewFadeOut || pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT;\n const planeRouteResolved = computePlaneAddress(planeRoute);\n const absolutePlaneRoute = resolveRoute(planeRouteResolved, stateConfiguration.network.protocol, hostname || stateConfiguration.network.host);\n const suffix = _suffix !== null && _suffix !== void 0 ? _suffix : pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX;\n const devisible = _devisible !== null && _devisible !== void 0 ? _devisible : false;\n const linkElement = React.useRef(null);\n const hoverInTimeout = React.useRef(null);\n const hoverOutTimeout = React.useRef(null);\n const [mouseOver, setMouseOver] = React.useState(false);\n const [showPreview, setShowPreview] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n const [pluridPlaneID, setPluridPlaneID] = React.useState(\"\");\n const [parentPlaneID, setParentPlaneID] = React.useState(getPluridPlaneIDByData$1(linkElement.current));\n const [linkCoordinates, setLinkCoordinates] = React.useState(defaultLinkCoordinates);\n const getPluridLinkCoordinates = () => {\n const link = linkElement.current;\n if (!link) {\n return Object.assign({}, defaultLinkCoordinates);\n }\n let partialTop = 0;\n let partialLeft = 0;\n let staticSet = false;\n let element = link;\n let searching = true;\n let top = 0;\n let left = 0;\n while (searching) {\n if (window.getComputedStyle(element).position === \"static\" && !staticSet) {\n partialTop += element.offsetTop;\n partialLeft += element.offsetLeft;\n staticSet = true;\n }\n if (window.getComputedStyle(element).position === \"relative\") {\n top += partialTop;\n left += partialLeft;\n partialTop = 0;\n partialLeft = 0;\n staticSet = false;\n }\n if (element.scrollLeft) {\n left += -element.scrollLeft;\n }\n if (element.scrollTop) {\n top += -element.scrollTop;\n }\n if (element.parentElement) {\n const pluridEntity = element.parentElement.dataset.pluridEntity;\n if (pluridEntity === \"PluridPlane\") {\n searching = false;\n }\n element = element.parentElement;\n } else {\n searching = false;\n }\n }\n const planeControlsHeight = planeControls ? 56 : 0;\n const x = left + link.offsetWidth;\n const y = top + planeControlsHeight;\n return {\n x: x,\n y: y\n };\n };\n const updateLinkCoordinates = () => {\n const newLinkCoordinates = getPluridLinkCoordinates();\n const payload = {\n planeID: pluridPlaneID,\n linkCoordinates: newLinkCoordinates\n };\n dispatchUpdateSpaceLinkCoordinates(payload);\n const updatedTree = pluridEngine.space.tree.logic.updatePlaneLocation(pluridFunctions.objects.clone(stateTree), parentPlaneID, pluridPlaneID, pluridFunctions.objects.clone(newLinkCoordinates));\n dispatchSetTree(updatedTree);\n };\n const debouncedUpdateLinkCoordinates = pluridFunctionsReact.useDebouncedCallback((() => {\n updateLinkCoordinates();\n }), pluridData.PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME);\n const updateTreeWithLink = event => {\n if (!parentPlaneID || !absolutePlaneRoute) {\n return;\n }\n const {route: route} = absolutePlaneRoute;\n const linkCoordinates = getPluridLinkCoordinates();\n const {pluridPlaneID: pluridPlaneID, updatedTree: updatedTree, updatedTreePlane: updatedTreePlane} = pluridEngine.space.tree.logic.updateTreeWithNewPlane(route, parentPlaneID, linkCoordinates, pluridFunctions.objects.clone(stateTree), planesRegistry.getAll(), stateConfiguration, hostname);\n if (pluridPlaneID) {\n handlePlaneNavigation(event, updatedTreePlane);\n dispatchSetTree(updatedTree);\n setShowLink(true);\n setPluridPlaneID(pluridPlaneID);\n }\n };\n const togglePlane = forceShow => {\n const {updatedTree: updatedTree, updatedPlane: updatedPlane} = pluridEngine.space.tree.logic.togglePlaneFromTree(pluridFunctions.objects.clone(stateTree), pluridPlaneID, forceShow);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n return {\n updatedPlane: updatedPlane\n };\n };\n const toggleLinkFromTree = event => {\n const {updatedPlane: updatedPlane} = togglePlane();\n handlePlaneNavigation(event, updatedPlane);\n };\n const handlePlaneNavigation = (event, updatedPlane) => {\n if (!updatedPlane) {\n return;\n }\n if (showLink) {\n return;\n }\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: \"\"\n });\n navigateToPluridPlane(dispatch, updatedPlane, event);\n };\n const handleShowPluridPlane = event => {\n if (event.altKey) {\n if (showLink && pluridPlaneID) {\n const plane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, pluridPlaneID);\n navigateToPluridPlane(dispatch, plane, event);\n return;\n }\n }\n if (!showLink && !pluridPlaneID) {\n updateTreeWithLink(event);\n } else {\n toggleLinkFromTree(event);\n }\n };\n const defocusLink = () => {\n if (linkElement.current) {\n linkElement.current.blur();\n }\n };\n const removePlane = () => {\n const updatedTree = pluridEngine.space.tree.logic.removePlaneFromTree(pluridFunctions.objects.clone(stateTree), pluridPlaneID);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n };\n const handleClick = React.useCallback((event => {\n event.preventDefault();\n if (atClick !== undefined) {\n atClick(event);\n }\n handleShowPluridPlane(event);\n defocusLink();\n }), [ parentPlaneID, JSON.stringify(stateTree), linkElement.current ]);\n const handleKeyUp = event => {\n if (event.code === \"Enter\") {\n handleClick(event);\n defocusLink();\n return;\n }\n return;\n };\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData$1(linkElement.current);\n setParentPlaneID(parentPlaneID);\n const linkCoordinates = getPluridLinkCoordinates();\n setLinkCoordinates(linkCoordinates);\n }), []);\n React.useEffect((() => {\n if (showLink) {\n debouncedUpdateLinkCoordinates();\n }\n }), [ showLink, JSON.stringify(stateViewSize), JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n if (!preview) {\n return;\n }\n if (mouseOver && hoverOutTimeout.current) {\n hoverInTimeout.current = setTimeout((() => {\n setShowPreview(true);\n }), previewAppearTime);\n clearTimeout(hoverOutTimeout.current);\n }\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout((() => {\n setShowPreview(false);\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n }), previewDisappearTime);\n }\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n };\n }), [ preview, mouseOver ]);\n React.useEffect((() => {}), []);\n React.useEffect((() => {\n const openClosedPlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE,\n callback: () => {\n if (stateLastClosedPlane === pluridPlaneID) {\n togglePlane();\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: \"\"\n });\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(openClosedPlaneIndex);\n };\n }), [ showLink, pluridPlaneID, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n const closePlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n callback: data => {\n const {id: id} = data;\n if (id === pluridPlaneID) {\n if (showLink) {\n const show = false;\n togglePlane(show);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: id\n });\n }\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(closePlaneIndex);\n };\n }), [ showLink, pluridPlaneID, JSON.stringify(stateTree) ]);\n React.useEffect((() => () => {\n if (showLink && linkElement.current === null) {\n removePlane();\n }\n }), [ showLink, showPreview, pluridPlaneID, parentPlaneID, JSON.stringify(stateTree) ]);\n return React__default[\"default\"].createElement(StyledPluridLink, {\n ref: linkElement,\n onClick: event => handleClick(event),\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onKeyUp: event => handleKeyUp(event),\n theme: stateGeneralTheme,\n suffix: suffix,\n devisible: devisible,\n style: Object.assign({}, style),\n className: className,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_LINK,\n tabIndex: 0\n }, children, showPreview && !showLink && React__default[\"default\"].createElement(PluridPortal, {\n elementID: `preview-${parentPlaneID}`,\n rootID: parentPlaneID\n }, React__default[\"default\"].createElement(ConnectedPluridPlanePreview, {\n planeRoute: planeRouteResolved,\n linkCoordinates: linkCoordinates,\n previewComponent: previewComponent,\n previewOffsetX: previewOffsetX,\n previewOffsetY: previewOffsetY\n })));\n};\n\nconst mapStateToProperties$5 = state => ({\n stateTree: selectors.space.getTree(state),\n stateLastClosedPlane: selectors.space.getLastClosedPlane(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateViewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$5 = dispatch => ({\n dispatch: dispatch,\n dispatchSetTree: payload => dispatch(actions.space.setTree(payload)),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceLinkCoordinates: payload => dispatch(actions.space.updateSpaceLinkCoordinates(payload))\n});\n\nconst ConnectedPluridLink = reactRedux.connect(mapStateToProperties$5, mapDispatchToProperties$5, null, {\n context: StateContext\n})(PluridLink);\n\nconst commonStyle = styled.css`\n color: ${({theme: theme}) => theme.colorTertiary};\n\n @media (hover:hover) {\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n }\n`;\n\nconst StyledPluridRouterLinkAnchor = styled__default[\"default\"].a`\n ${commonStyle}\n`;\n\nconst StyledPluridRouterLinkDiv = styled__default[\"default\"].div`\n cursor: pointer;\n\n ${commonStyle}\n`;\n\nconst PluridRouterLink = properties => {\n const {route: route, children: children, asAnchor: asAnchorProperty, target: target, theme: themeProperty, style: style, className: className, atClick: atClick} = properties;\n const asAnchor = asAnchorProperty !== null && asAnchorProperty !== void 0 ? asAnchorProperty : DEFAULT_ROUTER_LINK_AS_ANCHOR;\n const theme = themeProperty || themes$2.plurid;\n const handleClick = event => {\n if (atClick) {\n const exit = atClick(event);\n if (exit) {\n return;\n }\n }\n event.preventDefault();\n if (target === \"_blank\") {\n window.open(route);\n return;\n }\n pluridEngine.pluridRouterNavigate(route);\n };\n const handleKeyUp = event => {\n if (event.code === \"Enter\") {\n handleClick(event);\n return;\n }\n return;\n };\n const renderProperties = {\n tabIndex: 0,\n theme: theme,\n style: style,\n className: className,\n onClick: handleClick,\n onKeyUp: handleKeyUp\n };\n if (!asAnchor) {\n return React__default[\"default\"].createElement(StyledPluridRouterLinkDiv, Object.assign({}, renderProperties), children);\n }\n return React__default[\"default\"].createElement(StyledPluridRouterLinkAnchor, Object.assign({\n href: route\n }, renderProperties), children);\n};\n\nconst StyledPluridApplicationConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst PluridApplicationConfigurator = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {registerPubSub: registerPubSub} = context;\n const {configuration: configuration, pubsub: pubsub, stateConfiguration: stateConfiguration, dispatchSetConfiguration: dispatchSetConfiguration} = properties;\n const configuratorElement = React.useRef(null);\n React.useEffect((() => {\n const computedConfiguration = pluridEngine.general.configuration.merge(configuration, stateConfiguration);\n dispatchSetConfiguration(computedConfiguration);\n }), [ configuration ]);\n React.useEffect((() => {\n if (pubsub) {\n registerPubSub(pubsub);\n }\n }), [ pubsub ]);\n return React__default[\"default\"].createElement(StyledPluridApplicationConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_APPLICATION_CONFIGURATOR\n });\n};\n\nconst mapStateToProps$1 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$1 = dispatch => ({\n dispatchSetConfiguration: payload => dispatch(actions.configuration.setConfiguration(payload))\n});\n\nconst ConnectedPluridApplicationConfigurator = reactRedux.connect(mapStateToProps$1, mapDispatchToProps$1, null, {\n context: StateContext\n})(PluridApplicationConfigurator);\n\nconst StyledPluridPlaneConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst {getPluridPlaneIDByData: getPluridPlaneIDByData} = pluridEngine.planes;\n\nconst PluridPlaneConfigurator = properties => {\n const configuratorElement = React.useRef(null);\n const [planePlaneID, setParentPlaneID] = React.useState(\"\");\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData(configuratorElement.current);\n setParentPlaneID(parentPlaneID);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridPlaneConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONFIGURATOR\n });\n};\n\nconst mapStateToProperties$4 = state => ({});\n\nconst mapDispatchToProperties$4 = dispatch => ({});\n\nconst ConnectedPluridPlaneConfigurator = reactRedux.connect(mapStateToProperties$4, mapDispatchToProperties$4, null, {\n context: StateContext\n})(PluridPlaneConfigurator);\n\nconst StyledExternalPlane = styled__default[\"default\"].div`\n`;\n\nconst getPttpUrl = path => {\n const re = /^pttp:\\/\\/(\\w+(\\.|:)\\w+)\\/?/;\n const match = path.match(re);\n if (!match) {\n return {\n domain: \"\",\n url: \"\"\n };\n }\n const domain = match[1];\n const protocol = \"http\";\n const url = `${protocol}://${domain}/pttp`;\n return {\n domain: domain,\n url: url\n };\n};\n\nconst getPttpPath = (domain, path) => {\n if (!domain) {\n return;\n }\n const pttpPath = path.replace(`pttp://${domain}`, \"\");\n return pttpPath;\n};\n\nconst elementRequest = (url, path) => __awaiter(void 0, void 0, void 0, (function*() {\n try {\n const response = yield fetch__default[\"default\"](url, {\n method: \"post\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n path: path\n }),\n credentials: \"include\"\n });\n const data = yield response.json();\n if (!data.element) {\n return;\n }\n const {element: element} = data;\n const elementQLClient = new elementqlClientReact.ElementQLClient({\n url: element.url\n });\n const {status: status, Elements: Elements} = yield elementQLClient.get(element.json, \"json\");\n if (!status) {\n return;\n }\n const Element = Elements[element.name];\n return () => Element;\n } catch (error) {\n return;\n }\n}));\n\nconst ExternalPlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n const mounted = React.useRef(false);\n const [Component, setComponent] = React.useState();\n React.useEffect((() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }));\n React.useEffect((() => {\n let loading = false;\n const load = () => __awaiter(void 0, void 0, void 0, (function*() {\n if (loading) {\n return;\n }\n loading = true;\n try {\n const {domain: domain, url: url} = getPttpUrl(route);\n const pttpPath = getPttpPath(domain, route);\n if (!url || !pttpPath) {\n return;\n }\n const Component = yield elementRequest(url, pttpPath);\n if (!mounted.current) {\n return;\n }\n if (Component) {\n setComponent(Component);\n }\n } catch (error) {\n return;\n }\n }));\n load();\n }), []);\n return React__default[\"default\"].createElement(StyledExternalPlane, null, Component && React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$3 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$3 = dispatch => ({});\n\nconst ConnectedExternalPlane = reactRedux.connect(mapStateToProperties$3, mapDispatchToProperties$3, null, {\n context: StateContext\n})(ExternalPlane);\n\nconst StyledIframePlane = styled__default[\"default\"].div`\n`;\n\nconst IframePlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n return React__default[\"default\"].createElement(StyledIframePlane, null, React__default[\"default\"].createElement(\"iframe\", {\n src: route\n }));\n};\n\nconst mapStateToProperties$2 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$2 = dispatch => ({});\n\nconst ConnectedIframePlane = reactRedux.connect(mapStateToProperties$2, mapDispatchToProperties$2, null, {\n context: StateContext\n})(IframePlane);\n\nconst VirtualListItem = properties => {\n const {top: top, index: index, element: element, setHeight: setHeight} = properties;\n const el = React.useRef(null);\n React.useEffect((() => {\n if (el.current) {\n setHeight(el.current.offsetHeight, index);\n }\n }), [ el.current ]);\n return React__default[\"default\"].createElement(\"div\", {\n ref: el,\n style: {\n position: \"absolute\",\n top: top + \"px\"\n }\n }, element);\n};\n\nconst {markers: {Spinner: PluridSpinner}} = pluridUiComponentsReact.universal;\n\nconst PluridVirtualList = properties => {\n const {items: items, generalHeight: generalHeight, translationY: translationY, viewSize: viewSize} = properties;\n const _generalHeight = generalHeight || 100;\n const listElement = React.useRef(null);\n const rows = React.useRef([]);\n const heights = React.useRef(Array(items.length).fill(_generalHeight));\n const [start, setStart] = React.useState(0);\n const [end, setEnd] = React.useState(Math.floor(1e3 / _generalHeight));\n const [elementHeight, setElementHeight] = React.useState(_generalHeight * (end - start));\n const [resizing, setResizing] = React.useState(false);\n const setHeight = (value, index) => {\n heights.current[index] = value;\n };\n const renderRows = () => {\n rows.current = [];\n for (let i = start; i <= end; i++) {\n const item = items[i];\n rows.current.push(React__default[\"default\"].createElement(VirtualListItem, {\n key: i + Math.random(),\n index: i,\n top: pluridFunctions.mathematics.arithmetic.sum(heights.current, i),\n element: item,\n setHeight: setHeight\n }));\n }\n return rows.current;\n };\n React.useEffect((() => {\n if (heights.current) {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n }\n }), [ start, end, heights.current ]);\n React.useEffect((() => {\n let sum = 0;\n for (const [index, value] of heights.current.entries()) {\n sum += value;\n if (translationY < 0) {\n if (sum < Math.abs(translationY)) {\n setStart(index);\n }\n if (sum > Math.abs(translationY) + viewSize.height && sum < Math.abs(translationY) + viewSize.height + 400) {\n setEnd(index);\n }\n } else {\n setStart(0);\n setEnd(10);\n }\n }\n }), [ viewSize.height, translationY ]);\n React.useEffect((() => {\n setResizing(true);\n setTimeout((() => {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n setResizing(false);\n }), 400);\n }), [ viewSize ]);\n return React__default[\"default\"].createElement(\"div\", {\n style: {\n height: elementHeight\n },\n ref: listElement\n }, resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridSpinner, null)), !resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, renderRows()));\n};\n\nconst mapStateToProps = state => ({\n translationY: selectors.space.getTranslationY(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps = dispatch => ({});\n\nconst ConnectedPluridVirtualList = reactRedux.connect(mapStateToProps, mapDispatchToProps, null, {\n context: StateContext\n})(PluridVirtualList);\n\nconst StyledPluridPlaneDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridPlaneDebugger = properties => React__default[\"default\"].createElement(StyledPluridPlaneDebugger, null, \"PluridPlaneDebugger\");\n\nconst mapStateToProperties$1 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$1 = dispatch => ({});\n\nconst ConnectedPluridPlaneDebugger = reactRedux.connect(mapStateToProperties$1, mapDispatchToProperties$1, null, {\n context: StateContext\n})(PluridPlaneDebugger);\n\nconst StyledPluridSpaceDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridSpaceDebugger = properties => React__default[\"default\"].createElement(StyledPluridSpaceDebugger, null, \"PluridSpaceDebugger\");\n\nconst mapStateToProperties = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties = dispatch => ({});\n\nconst ConnectedPluridSpaceDebugger = reactRedux.connect(mapStateToProperties, mapDispatchToProperties, null, {\n context: StateContext\n})(PluridSpaceDebugger);\n\nconst serverComputeMetastate = (isoMatch, paths, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const pluridApplications = yield collectApplicationsFromPath(isoMatch, protocol, host, globals);\n const states = {};\n for (const application of pluridApplications) {\n const {planes: planes, view: view, configuration: configuration} = application;\n const {computedTree: computedTree, appConfiguration: appConfiguration} = computeApplication(planes, isoMatch.data.defaultConfiguration, view);\n const state = {\n configuration: Object.assign({}, appConfiguration),\n shortcuts: {\n global: true\n },\n themes: {\n general: themes__default[\"default\"].plurid,\n interaction: themes__default[\"default\"].plurid\n },\n ui: {\n toolbarScrollPosition: 50\n },\n space: {\n loading: false,\n animatedTransform: false,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n tree: computedTree,\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: 1440,\n height: 821\n },\n spaceSize: {\n width: 1440,\n height: 821,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: view,\n culledView: []\n }\n };\n const id = isoMatch.data.value;\n states[id] = state;\n }\n return {\n states: states\n };\n}));\n\nconst usePluridRouter = () => {\n const [routerValue, setRouterValue] = React.useState(\"\");\n React.useEffect((() => {\n const fetchState = () => {\n const state = pluridFunctions.storage.loadState(pluridData.PLURID_ROUTER_STORAGE);\n if (state) {\n setRouterValue(state);\n }\n };\n fetchState();\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n return () => {\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n };\n }), []);\n return routerValue;\n};\n\nconst {IsoMatcher: PluridIsoMatcher, RouteParser: PluridRouteParser} = pluridEngine.routing;\n\nconst internals = {\n PluridPlaneBridge: ConnectedPluridPlaneBridge,\n PluridPlaneContent: PluridPlaneContent,\n PluridPlaneControls: ConnectedPluridPlaneControls,\n PluridPlaneDebugger: ConnectedPluridPlaneDebugger,\n PluridSpaceDebugger: ConnectedPluridSpaceDebugger\n};\n\nconst Plurid = {\n Application: PluridApplication,\n RouterStatic: PluridRouterStatic,\n RouterBrowser: PluridRouterBrowser,\n Provider: PluridProvider,\n Link: ConnectedPluridLink,\n RouterLink: PluridRouterLink,\n ApplicationConfigurator: ConnectedPluridApplicationConfigurator,\n PlaneConfigurator: ConnectedPluridPlaneConfigurator,\n ExternalPlane: ConnectedExternalPlane,\n IframePlane: ConnectedIframePlane,\n VirtualList: ConnectedPluridVirtualList,\n SPACE_LAYOUT: pluridData.LAYOUT_TYPES,\n SIZES: pluridData.SIZES,\n TRANSFORM_MODES: pluridData.TRANSFORM_MODES,\n TRANSFORM_TOUCHES: pluridData.TRANSFORM_TOUCHES,\n PubSub: PluridPubSub__default[\"default\"],\n PUBSUB_TOPIC: pluridData.PLURID_PUBSUB_TOPIC,\n serverComputeMetastate: serverComputeMetastate,\n IsoMatcher: PluridIsoMatcher,\n routerNavigate: pluridEngine.pluridRouterNavigate,\n internals: internals\n};\n\nObject.defineProperty(exports, \"PLURID_PUBSUB_TOPIC\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_PUBSUB_TOPIC;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_CHANGED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_CHANGED;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_STORED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_STORED;\n }\n});\n\nObject.defineProperty(exports, \"SIZES\", {\n enumerable: true,\n get: function() {\n return pluridData.SIZES;\n }\n});\n\nObject.defineProperty(exports, \"SPACE_LAYOUT\", {\n enumerable: true,\n get: function() {\n return pluridData.LAYOUT_TYPES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_MODES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_MODES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_TOUCHES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_TOUCHES;\n }\n});\n\nObject.defineProperty(exports, \"pluridRouterNavigate\", {\n enumerable: true,\n get: function() {\n return pluridEngine.pluridRouterNavigate;\n }\n});\n\nObject.defineProperty(exports, \"PluridPubSub\", {\n enumerable: true,\n get: function() {\n return PluridPubSub__default[\"default\"];\n }\n});\n\nexports.PluridApplication = PluridApplication;\n\nexports.PluridApplicationConfigurator = ConnectedPluridApplicationConfigurator;\n\nexports.PluridExternalPlane = ConnectedExternalPlane;\n\nexports.PluridIframePlane = ConnectedIframePlane;\n\nexports.PluridIsoMatcher = PluridIsoMatcher;\n\nexports.PluridLink = ConnectedPluridLink;\n\nexports.PluridPlaneConfigurator = ConnectedPluridPlaneConfigurator;\n\nexports.PluridProvider = PluridProvider;\n\nexports.PluridRouteParser = PluridRouteParser;\n\nexports.PluridRouterBrowser = PluridRouterBrowser;\n\nexports.PluridRouterLink = PluridRouterLink;\n\nexports.PluridRouterStatic = PluridRouterStatic;\n\nexports.PluridVirtualList = ConnectedPluridVirtualList;\n\nexports[\"default\"] = Plurid;\n\nexports.getDirectPlaneMatch = getDirectPlaneMatch;\n\nexports.internals = internals;\n\nexports.pluridStateModules = modules;\n\nexports.serverComputeMetastate = serverComputeMetastate;\n\nexports.usePluridRouter = usePluridRouter;\n//# sourceMappingURL=index.js.map\n"],"names":["Object","defineProperty","exports","value","pluridData","require$$0","pluridEngine","require$$1","PluridPubSub","require$$2","React","require$$3","reactRedux","require$$4","toolkit","require$$5","pluridFunctions","require$$6","themes$2","require$$7","styled","require$$8","pluridFunctionsReact","require$$9","pluridIconsReact","require$$10","pluridUiComponentsReact","require$$11","reactDom","require$$12","fetch","require$$13","elementqlClientReact","require$$14","_interopDefaultLegacy","e","default","PluridPubSub__default","React__default","themes__default","styled__default","fetch__default","PluridContext","createContext","undefined","initialState$5","assign","defaultConfiguration","configuration","createSlice","name","initialState","reducers","setConfiguration","state","action","payload","setConfigurationMicro","elements","toolbar","show","plane","controls","viewcube","setConfigurationPlaneControls","setConfigurationPlaneOpacity","opacity","setConfigurationThemeGeneral","updatedTheme","general","interaction","global","theme","setConfigurationThemeInteraction","setConfigurationLanguage","language","toggleConfigurationViewcubeHide","toggleConfigurationViewcubeButtons","buttons","toggleConfigurationViewcubeOpaque","opaque","toggleConfigurationViewcubeConceal","conceal","toggleConfigurationToolbarConceal","toggleConfigurationToolbarTransformIcons","transformIcons","toggleConfigurationToolbarTransformButtons","transformButtons","toggleConfigurationShowTransformOrigin","space","transformOrigin","toggleConfigurationToolbarOpaque","toggleConfigurationSpaceTransparentUI","transparentUI","setConfigurationSpaceTransformOriginSize","size","setConfigurationSpaceTransformMode","transformMode","TRANSFORM_MODES","ALL","toggleConfigurationSpaceTransformMultimode","transformMultimode","setConfigurationSpaceTransformTouch","transformTouch","toggleConfigurationSpaceFirstPerson","firstPerson","toggleConfigurationToolbarToggleDrawer","toggledDrawers","includes","updatedDrawers","filter","el","setConfigurationSpaceTransformLocks","transformLocks","updatedTransformLocks","setConfigurationSpaceLayout","layout","type","LAYOUT_TYPES","setConfigurationSpaceCullingDistance","cullingDistance","actions$6","actions","getConfiguration","selectors$6","reducer$6","reducer","configuration$1","freeze","__proto__","selectors","actions$5","getGeneral","selectors$5","reducer$5","general$1","shortcuts","setGlobalShortcuts","actions$4","getGlobal","selectors$4","reducer$4","shortcuts$1","registerPlanes","getRegisteredPlanes","getPlanesRegistrar","getPluridPlaneIDByData","getPluridPlaneIDByData$1","getRegisteredPlane","resolvePluridRoutePlaneData","resolvePluridPlaneData","Registrar","PluridPlanesRegistrar","planes","IsoMatcher","PluridIsoMatcher$1","resolveRoute","computePlaneAddress","routing","quaternion","quaternion$1","matrix","matrix$1","degToRad","degToRad$2","matrixArrayToCSSMatrix","matrixArrayToCSSMatrix$1","rotateMatrix","rotateMatrix$2","multiplyArrayOfMatrices","multiplyArrayOfMatrices$2","scaleMatrix","scaleMatrix$2","translateMatrix","translateMatrix$2","computeMatrix","spaceState","translationX","translationY","translationZ","rotationX","rotationY","scale","transformOriginX","window","innerWidth","transformOriginY","innerHeight","transformOriginZ","rotationMatrix","translationMatrix","scalationMatrix","transformMatrix","transform","selectors$3","getSpace","getLoading","loading","getTransformMatrix","getAnimatedTransform","animatedTransform","getTransformTime","transformTime","getRotationX","getRotationY","getTranslationX","getTranslationY","getTranslationZ","getScale","getTree","tree","getTransform","getActiveUniverseID","activeUniverseID","getView","view","getViewSize","viewSize","getCulledView","culledView","getActivePlaneID","activePlaneID","getIsolatePlane","isolatePlane","getLastClosedPlane","lastClosedPlane","toRadians","mathematics","geometry","initialState$2","camera","x","y","z","width","height","spaceSize","depth","topCorner","setSpaceField","field","setSpaceLoading","changeTransform","setTransform","resolvedTranslationX","resolvedTranslationY","resolvedTranslationZ","resolvedRotationX","resolvedRotationY","resolvedScale","setAnimatedTransform","setTransformTime","setSpaceLocation","viewCameraMoveForward","TRANSLATION_STEP","Math","cos","sin","viewCameraMoveBackward","viewCameraMoveLeft","viewCameraMoveRight","viewCameraMoveUp","viewCameraMoveDown","viewCameraTurnUp","ROTATION_STEP","viewCameraTurnDown","viewCameraTurnLeft","viewCameraTurnRight","rotateUp","rotateDown","rotateX","rotateXWith","rotateLeft","rotateRight","rotateY","rotateYWith","translateUp","translateDown","translateLeft","translateRight","translateIn","translateOut","translateXWith","translateYWith","translateZWith","scaleUp","computedScale","SCALE_STEP","SCALE_UPPER_LIMIT","scaleDown","SCALE_LOWER_LIMIT","scaleUpWith","abs","scaleDownWith","setTree","setActiveUniverse","spaceResetTransform","setViewSize","setSpaceSize","updateSpaceTreePlane","updatedTree","updateTreePlane","updateSpaceLinkCoordinates","planeID","linkCoordinates","updateTreeByPlaneIDWithLinkCoordinates","spaceSetView","spaceSetCulledView","actions$3","reducer$3","space$1","initialState$1","plurid","themes","setGeneralTheme","setInteractionTheme","actions$2","getGeneralTheme","getInteractionTheme","selectors$2","reducer$2","themes$1","ui","toolbarScrollPosition","setUIToolbarScrollPosition","actions$1","getToolbarScrollPosition","selectors$1","reducer$1","modules","combineReducers","store","preloadedState","configureStore","devTools","StateContext","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","Context","degToRad$1","radToDeg","multiplyMatricesArray","translateMatrix$1","rotateYMatrix","matrixToCSSMatrix","arrayToMatrix","inverseMatrix","getTransformRotate","getTransformTranslate","getTransformScale","matrix3d","rotateMatrix$1","translateMatrixArray","scaleMatrix$1","multiplyArrayOfMatrices$1","computeApplication","appConfiguration","merge","planeData","route","currentView","absoluteView","viewItem","viewPath","push","origin","registrarPlanes","getAll","computedTree","Tree","compute","data","useAnimatedTransform","timeout","dispatch","dispatchSetAnimatedTransform","clearTimeout","setTimeout","PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT","factoryUseAnimatedTransform","navigateToPluridPlane","event","deisolate","ctrlKey","metaKey","dispatchSetSpaceField","location","translateX","translateY","translateZ","inverseTransformMatrix","matrix3dTransformMatrix","rotate","translate","zSign1","zSign2","xOffset","parentPlaneID","newMatrix","getMatrix3d","computePlaneLocation","selector","FOCUS_ANCHOR_SUFFIX","focusAnchor","document","querySelector","focus","focusPluridPlaneAnchor","getActivePlane","logic","getTreePlaneByID","treePlane","findRootIndex","currentRootIndex","index","entries","children","rootIndex","navigateToRoot","root","focusPreviousRoot","focusNextRoot","focusRootIndex","direction","directionLogic","handleGlobalShortcuts","pubsub","locks","defaultPrevented","dom","verifyPathInputElement","getEventPath","noModifiers","shiftKey","altKey","code","ROTATION","TRANSLATION","SCALE","key","activePlane","focusActivePlane","parentPlane","focusParentActivePlane","id","publish","topic","PLURID_PUBSUB_TOPIC","REFRESH_PLANE","refreshActivePlane","ISOLATE_PLANE","isolateActivePlane","OPEN_CLOSED_PLANE","openClosedPlane","CLOSE_PLANE","closeActivePlane","startsWith","parseInt","replace","loadHammer","__esModule","n","create","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","_interopNamespace","require$$15","GlobalStyle","createGlobalStyle","preventOverscroll","fontFamilySansSerif","StyledView","div","props","fullHeight","backgroundColorTertiary","backgroundColorPrimary","ErrorBoundary","Component","constructor","super","this","hasError","static","error","componentDidCatch","errorInfo","render","renderError","createElement","StyledPluridPlane","mouseOver","planeOpacity","backgroundColorPrimaryAlpha","decomposedColor","decomposeColor","hue","saturation","lightness","boxShadowUmbra","colorPrimary","planeControls","StyledFocusAnchor","a","StyledPluridPlaneBridge","backgroundColorDark","ConnectedPluridPlaneBridge","connect","stateGeneralTheme","stateConfiguration","context","properties","PLURID_ENTITY_PLANE_BRIDGE","ControlRefresh","refreshing","refreshPlane","PluridIconReset","atClick","title","style","pointerEvents","ControlIsolate","isolated","fill","PluridIconRectangle","StyledPluridPlaneControls","boxShadowUmbraInset","styleCommonControls","css","StyledPluridPlaneControlsLeft","StyledPluridPlaneControlsCenter","StyledPluridPlaneControlsRight","ConnectedPluridPlaneControls","stateInteractionTheme","stateIsolatePlane","parentTreePlane","closePlane","pathbar","routeDivisions","protocol","host","encodeURIComponent","path","setPath","useState","PLURID_ENTITY_PLANE_CONTROLS","PluridIconArrowLeft","PluridIconFrame","Fragment","PluridIconDelete","StyledPluridPlaneContent","PluridPlaneContent","planeContentElement","useRef","ref","PLURID_ENTITY_PLANE_CONTENT","ConnectedPluridPlane","stateTree","stateViewSize","stateActivePlaneID","dispatchUpdateSpaceTreePlane","useContext","planeRenderError","defaultPubSub","planeWidth","showPlaneControls","numbers","checkIntegerNonUnit","planeRef","remountKey","setRemountKey","setRefreshing","setMouseOver","REFRESH_TIMEOUT","debouncedSetActivePlane","useDebouncedCallback","useEffect","refreshPlaneIndex","subscribe","callback","unsubscribe","focusAnchorID","isolatePlaneOpacity","computeIsolatePlaneOpacity","isolatePointerEvents","computeIsolatePointerEvents","cleanTemplate","planeContentProperties","onMouseEnter","onMouseLeave","onMouseOver","onMouseMove","PLURID_ENTITY_PLANE","tabIndex","isReactRenderable","component","url","StyledPluridRoot","ConnectedPluridRoot","planesRegistrar","planeContext","PlaneContext","planeContextValue","customPlane","matchedRoute","CustomPluridPlane","computeChildrenPlanes","length","planesRegistry","child","sourceID","renderPlane","Plane","pluridProperty","absolute","fragments","parameters","query","match","pubSub","renderablePlane","renderableCustomPlane","planeProperties","Provider","childrenPlanes","useMemo","JSON","stringify","pluridPlaneID","pluridPlane","PLURID_ENTITY_ROOT","StyledPluridRoots","ConnectedPluridRoots","spaceTransformMatrix","spaceAnimatedTransform","spaceTransformTime","transition","PLURID_ENTITY_ROOTS","map","fadeIn","keyframes","fadeInAnimation","fadeInTime","StyledPluridSpace","isMounted","ConnectedPluridSpace","setIsMounted","PLURID_ENTITY_SPACE","resolveSize","SIZES","SMALL","NORMAL","LARGE","StyledOrigin","backgroundColorTertiaryAlpha","ConnectedOrigin","showTransformOrigin","transformOriginSize","PLURID_ENTITY_TRANSFORM_ORIGIN","MENUS","StyledToolbar","mouseIn","showMenu","NONE","StyledToolbarButtons","backgroundColorSecondary","showIcons","showTransformButtons","documentsBased","StyledToolbarButton","button","active","StyledIcon","StyledPluridMenuUniverses","afterline","StyledPluridMenuUniversesScroll","li","boxShadowUmbraColor","ConnectedPluridMenuUniverses","interactionTheme","dispatchSetActiveUniverse","documentID","StyledPluridDrawer","toggled","StyledPluridDrawerHeading","StyledPluridDrawerItems","typography","Heading","PluridHeading","universal","ConnectedPluridDrawer","heading","items","toggle","onClick","StyledPluridMoreMenu","StyledPluridMoreMenuItem","last","StyledPluridMoreMenuScroll","inputs","Dropdown","PluridDropdown$1","ConnectedPluridMenuMoreGlobal","stateLanguage","dispatchSetConfigurationThemeGeneralAction","dispatchSetConfigurationThemeInteractionAction","dispatchSetConfigurationLanguage","dispatchSetGeneralTheme","dispatchSetInteractionTheme","selectedTheme","generalThemeName","setGeneralThemeName","interactionThemeName","setInteractionThemeName","internatiolate","internationalization","fields","toolbarDrawerGlobalGeneralTheme","selectables","selected","atSelect","selection","filterable","heightItems","fontSize","toolbarDrawerGlobalInteractionTheme","toolbarDrawerGlobalLanguage","languages","Switch","PluridSwitch$3","ConnectedPluridMenuMoreTransform","dispatchToggleConfigurationSpaceTransformMultimode","multimode","dispatchSetConfigurationSpaceTransformTouch","touch","dispatchSetConfigurationSpaceTransformLocks","lock","toolbarDrawerTransformMultiModeTransform","checked","atChange","exclusive","level","toolbarDrawerTransformAllowRotationX","toolbarDrawerTransformAllowRotationY","toolbarDrawerTransformAllowTranslationX","toolbarDrawerTransformAllowTranslationY","toolbarDrawerTransformAllowTranslationZ","toolbarDrawerTransformAllowScale","toolbarDrawerTransformTouchTransform","TRANSFORM_TOUCHES","PAN","SWIPE","PluridDropdown","PluridSwitch$2","Slider","PluridSlider$1","ConnectedPluridMenuMoreSpace","dispatchSetConfigurationPlaneOpacity","dispatchToggleConfigurationSpaceTransparentUI","dispatchToggleConfigurationSpaceShowTransformOrigin","dispatchSetConfigurationSpaceTransformOriginSize","dispatchSetConfigurationSpaceLayoutType","layoutType","layoutNames","toolbarDrawerSpaceTransparentUserInterface","toolbarDrawerSpaceShowTransformOrigin","toolbarDrawerSpaceTransformOriginSize","toLowerCase","toUpperCase","toolbarDrawerSpacePlaneOpacity","max","min","defaultValue","thumbSize","toolbarDrawerSpaceLayoutType","values","PluridSwitch$1","ConnectedPluridMenuMoreToolbar","dispatchToggleConfigurationToolbarConceal","dispatchToggleConfigurationToolbarTransformIcons","dispatchToggleConfigurationToolbarTransformButtons","dispatchToggleConfigurationToolbarOpaque","viewSizeSmall","setViewSizeSmall","toolbarDrawerToolbarAlwaysOpaque","toolbarDrawerToolbarShowTransformIcons","toolbarDrawerToolbarShowTransformArrows","toolbarDrawerToolbarConcealToolbar","PluridSwitch","ConnectedPluridMenuMoreViewcube","dispatchToggleConfigurationViewcubeHide","dispatchToggleConfigurationViewcubeButtons","dispatchToggleConfigurationViewcubeOpaque","dispatchToggleConfigurationViewcubeConceal","toolbarDrawerViewcubeShowViewcube","toolbarDrawerViewcubeShowTransformButtons","toolbarDrawerViewcubeAlwaysOpaque","toolbarDrawerViewcubeConcealViewcube","PluridSlider","ConnectedPluridMenuMoreTechnical","dispatchSetConfigurationSpaceCullingDistance","localCullingDistance","setLocalCullingDistance","dispatchCullingDistanceUpdate","toolbarDrawerTechnicalCullingDistance","ConnectedPluridMenuMoreShortcuts","defaultShortcuts","shortcut","shortcutData","shortcutsNames","internationalizedKey","modifier","modifierString","Array","isArray","reduce","total","element","internationalizedName","keyAsAny","keyName","moreMenusRecord","GLOBAL","toolbarDrawerGlobalTitle","drawer","TOOLBAR_DRAWERS","TRANSFORM","toolbarDrawerTransformTitle","SPACE","toolbarDrawerSpaceTitle","TOOLBAR","toolbarDrawerToolbarTitle","VIEWCUBE","toolbarDrawerViewcubeTitle","TECHNICAL","toolbarDrawerTechnicalTitle","SHORTCUTS","toolbarDrawerShortcutsTitle","moreMenus","ConnectedPluridMoreMenu","stateToolbarMenuScrollPosition","dispatchToggleConfigurationToolbarToggleDrawer","dispatchSetUIToolbarScrollPosition","drawers","menus","resolvedMenus","menu","resolveMenus","moreMenuScrollElement","handleWheel","_event","current","scrollPosition","scrollTop","addEventListener","removeEventListener","moreMenu","StyledPluridToolbarRotate","StyledPluridTransformArrow","pressed","arrowSigns","left","right","up","down","events","ConnectedPluridTransformArrow","arrowSign","pressingInterval","arrowElement","setPressed","handleTouch","eventData","srcEvent","clearInterval","setInterval","Hammer","on","off","ConnectedPluridToolbarRotate","toggleTransform","PluridIconRotate","toolbarTransformRotate","StyledPluridToolbarScale","ConnectedPluridToolbarScale","PluridIconScale","toolbarTransformScale","StyledPluridToolbarTranslate","ConnectedPluridToolbarTranslate","PluridIconTranslate","toolbarTransformTranslate","ConnectedPluridToolbar","dispatchToggleConfigurationSpaceFirstPerson","dispatchSetConfigurationSpaceTransformMode","mode","showToolbar","menuTimeout","setMouseIn","setShowMenu","setShowIcons","setShowTransformButtons","TYPE","PLURID_ENTITY_TOOLBAR","PluridIconFirstPerson","handleShowMenu","MORE","PluridIconMore","UNIVERSES","StyledPluridViewcube","StyledPluridViewcubeArrow","StyledPluridViewcubeArrowIcon","StyledFitView","StyledPluridViewcubeFace","colorTertiary","face","boxShadowPenumbraColor","StyledPluridViewcubeFaceZone","hovered","colorSecondary","faceTypes","zoneCodes","frontTopLeft","frontTopCenter","frontTopRight","frontMiddleLeft","frontMiddleCenter","frontMiddleRight","frontBottomLeft","frontBottomCenter","frontBottomRight","rightTopLeft","rightTopCenter","rightTopRight","rightMiddleLeft","rightMiddleCenter","rightMiddleRight","rightBottomLeft","rightBottomCenter","rightBottomRight","backTopLeft","backTopCenter","backTopRight","backMiddleLeft","backMiddleCenter","backMiddleRight","backBottomLeft","backBottomCenter","backBottomRight","leftTopLeft","leftTopCenter","leftTopRight","leftMiddleLeft","leftMiddleCenter","leftMiddleRight","leftBottomLeft","leftBottomCenter","leftBottomRight","topTopLeft","topTopCenter","topTopRight","topMiddleLeft","topMiddleCenter","topMiddleRight","topBottomLeft","topBottomCenter","topBottomRight","baseTopLeft","baseTopCenter","baseTopRight","baseMiddleLeft","baseMiddleCenter","baseMiddleRight","baseBottomLeft","baseBottomCenter","baseBottomRight","faceTransform","A1","A2","A3","B1","B2","B3","C1","C2","C3","A4","A5","B4","B5","C4","C5","A6","A7","B6","B7","C6","C7","A8","B8","C8","D1","E1","ConnectedPluridViewcubeFace","generalTheme","dispatchRotateX","angleX","dispatchRotateY","angleY","animated","faceText","hoveredZone","setHoveredZone","activeZone","setActiveZone","opaqueFace","handleClick","zoneCode","StyledPluridViewcubeModel","StyledPluridViewcubeModelContainer","StyledPluridViewcubeModelCube","ConnectedPluridViewcubeModel","spaceRotationX","spaceRotationY","stateAnimatedTransform","stateTransformTime","offsets","transformOrigins","computeTransform","suppressHydrationWarning","viewcubeFront","viewcubeBack","viewcubeLeft","viewcubeRight","viewcubeTop","viewcubeBase","ConnectedPluridViewcube","dispatchRotateXWith","dispatchRotateYWith","dispatchSpaceResetTransform","showViewcube","animatedRotate","PLURID_ENTITY_VIEWCUBE","gridArea","PluridIconGlobal","PluridViewContainer","_properties","ConnectedPluridView","stateTransform","stateSpaceLoading","stateSpaceView","dispatchSetConfiguration","dispatchSetConfigurationMicro","dispatchSpaceSetViewSize","dispatchSetSpaceLoading","dispatchSetTransformTime","dispatchSetSpaceLocation","dispatchSetTree","dispatchTranslateXWith","dispatchTranslateYWith","dispatchTranslateZWith","dispatchScaleUpWith","dispatchScaleDownWith","dispatchSpaceSetView","planeNotFound","hostname","viewElement","scrollTimeout","pluridPubSub","setPluridPubSub","setPreventOverscroll","shortcutsCallback","useCallback","wheelCallback","PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT","handlePreventOverscroll","transformModes","rotation","translation","modes","preventDefault","deltas","deltaX","deltaY","getWheelDirection","directions","handleGlobalWheel","treeUpdate","statePlane","computedPlane","objects","equals","treeUpdateCallback","handlePubSubSubscribe","subscriptions","CONFIGURATION","internal","computedConfiguration","SPACE_TRANSFORM","SPACE_ANIMATED_TRANSFORM","time","SPACE_ROTATE_X_WITH","SPACE_ROTATE_X_TO","SPACE_ROTATE_Y_WITH","SPACE_ROTATE_Y_TO","SPACE_TRANSLATE_X_WITH","SPACE_TRANSLATE_X_TO","SPACE_TRANSLATE_Y_WITH","SPACE_TRANSLATE_Y_TO","SPACE_TRANSLATE_Z_WITH","SPACE_TRANSLATE_Z_TO","VIEW_ADD_PLANE","updatedView","VIEW_SET_PLANES","VIEW_REMOVE_PLANE","NAVIGATE_TO_PLANE","find","forceShow","togglePlaneFromTree","PREVIOUS_ROOT","NEXT_ROOT","NAVIGATE_TO_ROOT","focusRootID","indexes","subscription","handlePubSubPublish","internalTransform","handleSwipe","velocity","distance","rotationMode","translationMode","scalationMode","handlePan","rotationVelocity","translationVelocity","scaleVelocity","handlePinch","handlePinchin","handlePinchout","passive","handleResize","meta","debounce","offsetWidth","offsetHeight","PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME","defaults","cssProps","userSelect","userDrag","tapHighlightColor","touchSelect","set","DIRECTION_ALL","enable","handleGamepadConnect","navigator","getGamepads","gamepad","handleGamepadDisconnect","unsubscribers","unsubscriber","pluridContext","registerPubSub","pluridPubSubs","PLURID_ENTITY_VIEW","PluridApplication","storeID","defaultStore","computeStore","subscribeStore","componentDidUpdate","updatedStore","componentWillUnmount","storeUnubscriber","precomputedState","useLocalStorage","currentState","getState","localState","local","load","contextState","states","pathname","loadStateFromContext","localStorage","stateData","setItem","contextType","StyledSpaces","alignment","snapType","computePluridRoute","isoMatcher","directPlane","kind","renderDirectPlane","notFoundRoute","exterior","spaces","slotted","resolver","pluridRouteProperty","PluridRouteExterior","displayName","pluridApplication","PluridRoute","_a","_b","_c","_d","_e","_f","multispaceAlignment","multispace","multispaceSnapType","PluridExterior","PluridSpaces","spacesArray","fullPath","PLURID_ROUTE_DEFAULT_PATH_VALUE","PLURID_ROUTE_DEFAULT_PATH","utilities","cleanPathElement","PLURID_ROUTE_DEFAULT_SPACE_VALUE","PLURID_ROUTE_DEFAULT_SPACE","PLURID_ROUTE_DEFAULT_UNIVERSE","PLURID_ROUTE_DEFAULT_CLUSTER","join","PLURID_ROUTE_SEPARATOR","universes","universe","PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE","pluridPlanesRegistrar","App","uuid","generate","pluridPlanes","MultispaceHeader","MultispaceFooter","header","footer","PLURID_ENTITY_MULTISPACE","renderMultispace","routePlane","flat","pluridRoute","Flat","DirectPlane","PluridRouterBrowser","routes","shell","staticContext","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","link","gatherPluridPlanes","pluridIsoMatcher","routePlanes","mounted","useMounted","matchedPath","setMatchedPath","search","computeInitialMatchedPath","setMatchedRoute","setPluridRoute","handleLocation","detail","PluridRouterExterior","PLURID_ROUTER_LOCATION_CHANGED","history","pushState","storage","saveState","PLURID_ROUTER_STORAGE","locationStoredEvent","CustomEvent","PLURID_ROUTER_LOCATION_STORED","dispatchEvent","PluridRouterShell","PluridRouterStatic","protocolProperty","hostnameProperty","gateway","gatewayQuery","gatewayQueryProperty","gatewayEndpoint","gatewayEndpointProperty","PluridProvider","metastate","defaultLinkCoordinates","PluridPortal","elementID","rootID","target","usePortal","createPortal","StyledPluridPlanePreview","ConnectedPluridPlanePreview","planeRoute","previewComponent","previewOffsetX","previewOffsetY","resolvedLinkCoordinates","StyledPluridLink","devisible","suffix","ConnectedPluridLink","stateLastClosedPlane","dispatchUpdateSpaceLinkCoordinates","_devisible","_suffix","className","preview","previewFadeIn","previewFadeOut","previewAppearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN","previewDisappearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT","planeRouteResolved","absolutePlaneRoute","network","PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX","linkElement","hoverInTimeout","hoverOutTimeout","showPreview","setShowPreview","showLink","setShowLink","setPluridPlaneID","setParentPlaneID","setLinkCoordinates","getPluridLinkCoordinates","partialTop","partialLeft","staticSet","searching","top","getComputedStyle","position","offsetTop","offsetLeft","scrollLeft","parentElement","dataset","pluridEntity","planeControlsHeight","debouncedUpdateLinkCoordinates","newLinkCoordinates","updatePlaneLocation","clone","updateLinkCoordinates","togglePlane","updatedPlane","handlePlaneNavigation","handleShowPluridPlane","toggleLinkFromTree","updatedTreePlane","updateTreeWithNewPlane","updateTreeWithLink","defocusLink","blur","openClosedPlaneIndex","closePlaneIndex","removePlaneFromTree","removePlane","onKeyUp","handleKeyUp","PLURID_ENTITY_LINK","commonStyle","StyledPluridRouterLinkAnchor","StyledPluridRouterLinkDiv","PluridRouterLink","asAnchor","asAnchorProperty","themeProperty","pluridRouterNavigate","open","renderProperties","href","StyledPluridApplicationConfigurator","ConnectedPluridApplicationConfigurator","configuratorElement","PLURID_ENTITY_APPLICATION_CONFIGURATOR","StyledPluridPlaneConfigurator","ConnectedPluridPlaneConfigurator","planePlaneID","PLURID_ENTITY_PLANE_CONFIGURATOR","StyledExternalPlane","ConnectedExternalPlane","setComponent","domain","getPttpUrl","pttpPath","getPttpPath","response","method","headers","Accept","body","credentials","json","elementQLClient","ElementQLClient","status","Elements","Element","elementRequest","StyledIframePlane","ConnectedIframePlane","src","VirtualListItem","setHeight","markers","Spinner","PluridSpinner","ConnectedPluridVirtualList","generalHeight","_generalHeight","listElement","rows","heights","start","setStart","end","setEnd","floor","elementHeight","setElementHeight","resizing","setResizing","arithmetic","sum","i","item","random","renderRows","StyledPluridPlaneDebugger","ConnectedPluridPlaneDebugger","StyledPluridSpaceDebugger","ConnectedPluridSpaceDebugger","serverComputeMetastate","isoMatch","paths","globals","pluridApplications","routeData","plurids","clusters","cluster","PLURID_ROUTE_DEFAULT_CLUSTER_VALUE","collectApplicationsFromPath","application","PluridIsoMatcher","RouteParser","PluridRouteParser","internals","PluridPlaneBridge","PluridPlaneControls","PluridPlaneDebugger","PluridSpaceDebugger","Plurid","Application","RouterStatic","RouterBrowser","Link","RouterLink","ApplicationConfigurator","PlaneConfigurator","ExternalPlane","IframePlane","VirtualList","SPACE_LAYOUT","PubSub","PUBSUB_TOPIC","routerNavigate","PluridApplicationConfigurator","PluridExternalPlane","PluridIframePlane","PluridLink","PluridPlaneConfigurator","PluridVirtualList","getDirectPlaneMatch","matchRoute","matchPlane","matchPath","planePath","pluridStateModules","usePluridRouter","routerValue","setRouterValue","fetchState","loadState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.min.js","sources":["index.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar pluridData = require(\"@plurid/plurid-data\");\n\nvar pluridEngine = require(\"@plurid/plurid-engine\");\n\nvar PluridPubSub = require(\"@plurid/plurid-pubsub\");\n\nvar React = require(\"react\");\n\nvar reactRedux = require(\"react-redux\");\n\nvar toolkit = require(\"@reduxjs/toolkit\");\n\nvar pluridFunctions = require(\"@plurid/plurid-functions\");\n\nvar themes$2 = require(\"@plurid/plurid-themes\");\n\nvar styled = require(\"styled-components\");\n\nvar pluridFunctionsReact = require(\"@plurid/plurid-functions-react\");\n\nvar pluridIconsReact = require(\"@plurid/plurid-icons-react\");\n\nvar pluridUiComponentsReact = require(\"@plurid/plurid-ui-components-react\");\n\nvar reactDom = require(\"react-dom\");\n\nvar fetch = require(\"cross-fetch\");\n\nvar elementqlClientReact = require(\"@plurid/elementql-client-react\");\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === \"object\" && \"default\" in e ? e : {\n default: e\n };\n}\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach((function(k) {\n if (k !== \"default\") {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return e[k];\n }\n });\n }\n }));\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar PluridPubSub__default = _interopDefaultLegacy(PluridPubSub);\n\nvar React__default = _interopDefaultLegacy(React);\n\nvar themes__default = _interopDefaultLegacy(themes$2);\n\nvar styled__default = _interopDefaultLegacy(styled);\n\nvar fetch__default = _interopDefaultLegacy(fetch);\n\nconst PluridContext = React__default[\"default\"].createContext(undefined);\n\nconst initialState$5 = Object.assign({}, pluridData.defaultConfiguration);\n\nconst configuration = toolkit.createSlice({\n name: \"configuration\",\n initialState: initialState$5,\n reducers: {\n setConfiguration: (state, action) => {\n state = Object.assign(Object.assign({}, state), action.payload);\n },\n setConfigurationMicro: state => {\n state.elements.toolbar.show = false;\n state.elements.plane.controls.show = false;\n state.elements.viewcube.show = false;\n },\n setConfigurationPlaneControls: (state, action) => {\n state.elements.plane.controls.show = action.payload;\n },\n setConfigurationPlaneOpacity: (state, action) => {\n state.elements.plane.opacity = action.payload;\n },\n setConfigurationThemeGeneral: (state, action) => {\n const updatedTheme = {\n general: action.payload,\n interaction: typeof state.global.theme === \"object\" ? state.global.theme.interaction : \"plurid\"\n };\n state.global.theme = updatedTheme;\n },\n setConfigurationThemeInteraction: (state, action) => {\n const updatedTheme = {\n general: typeof state.global.theme === \"object\" ? state.global.theme.general : \"plurid\",\n interaction: action.payload\n };\n state.global.theme = updatedTheme;\n },\n setConfigurationLanguage: (state, action) => {\n state.global.language = action.payload;\n },\n toggleConfigurationViewcubeHide: (state, action) => {\n state.elements.viewcube.show = action.payload;\n },\n toggleConfigurationViewcubeButtons: (state, action) => {\n state.elements.viewcube.buttons = action.payload;\n },\n toggleConfigurationViewcubeOpaque: (state, action) => {\n state.elements.viewcube.opaque = action.payload;\n },\n toggleConfigurationViewcubeConceal: state => {\n const {conceal: conceal} = state.elements.viewcube;\n state.elements.viewcube.conceal = !conceal;\n },\n toggleConfigurationToolbarConceal: state => {\n const {conceal: conceal} = state.elements.toolbar;\n state.elements.toolbar.conceal = !conceal;\n },\n toggleConfigurationToolbarTransformIcons: state => {\n const {transformIcons: transformIcons} = state.elements.toolbar;\n state.elements.toolbar.transformIcons = !transformIcons;\n },\n toggleConfigurationToolbarTransformButtons: state => {\n const {transformButtons: transformButtons} = state.elements.toolbar;\n state.elements.toolbar.transformButtons = !transformButtons;\n },\n toggleConfigurationShowTransformOrigin: state => {\n const {show: show} = state.space.transformOrigin;\n state.space.transformOrigin.show = !show;\n },\n toggleConfigurationToolbarOpaque: state => {\n const {opaque: opaque} = state.elements.toolbar;\n state.elements.toolbar.opaque = !opaque;\n },\n toggleConfigurationSpaceTransparentUI: state => {\n state.global.transparentUI = !state.global.transparentUI;\n },\n setConfigurationSpaceTransformOriginSize: (state, action) => {\n state.space.transformOrigin.size = action.payload;\n },\n setConfigurationSpaceTransformMode: (state, action) => {\n if (state.space.transformMode !== action.payload) {\n state.space.transformMode = action.payload;\n } else {\n state.space.transformMode = pluridData.TRANSFORM_MODES.ALL;\n }\n },\n toggleConfigurationSpaceTransformMultimode: (state, action) => {\n state.space.transformMultimode = action.payload;\n },\n setConfigurationSpaceTransformTouch: (state, action) => {\n state.space.transformTouch = action.payload;\n },\n toggleConfigurationSpaceFirstPerson: state => {\n const {firstPerson: firstPerson} = state.space;\n state.space.firstPerson = !firstPerson;\n },\n toggleConfigurationToolbarToggleDrawer: (state, action) => {\n const {toggledDrawers: toggledDrawers} = state.elements.toolbar;\n if (toggledDrawers.includes(action.payload)) {\n const updatedDrawers = toggledDrawers.filter((el => el !== action.payload));\n state.elements.toolbar.toggledDrawers = [ ...updatedDrawers ];\n } else {\n state.elements.toolbar.toggledDrawers = [ ...toggledDrawers, action.payload ];\n }\n },\n setConfigurationSpaceTransformLocks: (state, action) => {\n const {transformLocks: transformLocks} = state.space;\n const updatedTransformLocks = Object.assign({}, transformLocks);\n updatedTransformLocks[action.payload] = !transformLocks[action.payload];\n state.space.transformLocks = Object.assign({}, updatedTransformLocks);\n },\n setConfigurationSpaceLayout: (state, action) => {\n const layout = {\n type: pluridData.LAYOUT_TYPES[action.payload]\n };\n state.space.layout = Object.assign({}, layout);\n },\n setConfigurationSpaceCullingDistance: (state, action) => {\n state.space.cullingDistance = action.payload;\n }\n }\n});\n\nconst actions$6 = configuration.actions;\n\nconst getConfiguration = state => state.configuration;\n\nconst selectors$6 = {\n getConfiguration: getConfiguration\n};\n\nconst reducer$6 = configuration.reducer;\n\nvar configuration$1 = Object.freeze({\n __proto__: null,\n configuration: configuration,\n actions: actions$6,\n getConfiguration: getConfiguration,\n selectors: selectors$6,\n reducer: reducer$6\n});\n\nconst initialState$4 = {};\n\nconst general = toolkit.createSlice({\n name: \"general\",\n initialState: initialState$4,\n reducers: {}\n});\n\nconst actions$5 = general.actions;\n\nconst getGeneral = state => state.general;\n\nconst selectors$5 = {\n getGeneral: getGeneral\n};\n\nconst reducer$5 = general.reducer;\n\nvar general$1 = Object.freeze({\n __proto__: null,\n general: general,\n actions: actions$5,\n getGeneral: getGeneral,\n selectors: selectors$5,\n reducer: reducer$5\n});\n\nconst initialState$3 = {\n global: true\n};\n\nconst shortcuts = toolkit.createSlice({\n name: \"shortcuts\",\n initialState: initialState$3,\n reducers: {\n setGlobalShortcuts: (state, action) => {\n state.global = action.payload;\n }\n }\n});\n\nconst actions$4 = shortcuts.actions;\n\nconst getGlobal = state => state.shortcuts.global;\n\nconst selectors$4 = {\n getGlobal: getGlobal\n};\n\nconst reducer$4 = shortcuts.reducer;\n\nvar shortcuts$1 = Object.freeze({\n __proto__: null,\n shortcuts: shortcuts,\n actions: actions$4,\n getGlobal: getGlobal,\n selectors: selectors$4,\n reducer: reducer$4\n});\n\nconst {registerPlanes: registerPlanes, getRegisteredPlanes: getRegisteredPlanes, getPlanesRegistrar: getPlanesRegistrar, getPluridPlaneIDByData: getPluridPlaneIDByData$1, getRegisteredPlane: getRegisteredPlane, resolvePluridRoutePlaneData: resolvePluridRoutePlaneData, resolvePluridPlaneData: resolvePluridPlaneData, Registrar: PluridPlanesRegistrar} = pluridEngine.planes;\n\nconst {IsoMatcher: PluridIsoMatcher$1, resolveRoute: resolveRoute, computePlaneAddress: computePlaneAddress} = pluridEngine.routing;\n\nconst {quaternion: quaternion$1, matrix: matrix$1} = pluridEngine.interaction;\n\nconst {degToRad: degToRad$2} = quaternion$1;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix$1, rotateMatrix: rotateMatrix$2, multiplyArrayOfMatrices: multiplyArrayOfMatrices$2, scaleMatrix: scaleMatrix$2, translateMatrix: translateMatrix$2} = matrix$1;\n\nconst computeMatrix = spaceState => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = spaceState;\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translationX * -1 + innerWidth;\n const transformOriginY = translationY * -1 + innerHeight;\n const transformOriginZ = translationZ * -1;\n const rotationMatrix = rotateMatrix$2(degToRad$2(-rotationX), degToRad$2(-rotationY));\n const translationMatrix = translateMatrix$2(translationX, translationY, translationZ);\n const scalationMatrix = scaleMatrix$2(scale);\n const transformMatrix = multiplyArrayOfMatrices$2([ translationMatrix, translateMatrix$2(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrix$2(-transformOriginX, -transformOriginY, -transformOriginZ), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix$1(transformMatrix);\n return transform;\n};\n\nconst focusPluridPlaneAnchor = planeID => {\n const selector = `[id='${planeID + pluridData.FOCUS_ANCHOR_SUFFIX}']`;\n const focusAnchor = document.querySelector(selector);\n if (focusAnchor) {\n focusAnchor.focus();\n }\n};\n\nconst getSpace = state => state.space;\n\nconst getLoading = state => state.space.loading;\n\nconst getTransformMatrix = state => state.space.transform;\n\nconst getAnimatedTransform = state => state.space.animatedTransform;\n\nconst getTransformTime = state => state.space.transformTime;\n\nconst getRotationX = state => state.space.rotationX;\n\nconst getRotationY = state => state.space.rotationY;\n\nconst getTranslationX = state => state.space.translationX;\n\nconst getTranslationY = state => state.space.translationY;\n\nconst getTranslationZ = state => state.space.translationZ;\n\nconst getScale = state => state.space.scale;\n\nconst getTree = state => state.space.tree;\n\nconst getTransform = state => ({\n rotationX: state.space.rotationX,\n rotationY: state.space.rotationY,\n translationX: state.space.translationX,\n translationY: state.space.translationY,\n translationZ: state.space.translationZ,\n scale: state.space.scale\n});\n\nconst getActiveUniverseID = state => state.space.activeUniverseID;\n\nconst getView = state => state.space.view;\n\nconst getViewSize = state => state.space.viewSize;\n\nconst getCulledView = state => state.space.culledView;\n\nconst getActivePlaneID = state => state.space.activePlaneID;\n\nconst getIsolatePlane = state => state.space.isolatePlane;\n\nconst getLastClosedPlane = state => state.space.lastClosedPlane;\n\nvar selectors$3 = Object.freeze({\n __proto__: null,\n getSpace: getSpace,\n getLoading: getLoading,\n getTransformMatrix: getTransformMatrix,\n getAnimatedTransform: getAnimatedTransform,\n getTransformTime: getTransformTime,\n getRotationX: getRotationX,\n getRotationY: getRotationY,\n getTranslationX: getTranslationX,\n getTranslationY: getTranslationY,\n getTranslationZ: getTranslationZ,\n getScale: getScale,\n getTree: getTree,\n getTransform: getTransform,\n getActiveUniverseID: getActiveUniverseID,\n getView: getView,\n getViewSize: getViewSize,\n getCulledView: getCulledView,\n getActivePlaneID: getActivePlaneID,\n getIsolatePlane: getIsolatePlane,\n getLastClosedPlane: getLastClosedPlane\n});\n\nconst {toRadians: toRadians} = pluridFunctions.mathematics.geometry;\n\nconst initialState$2 = {\n loading: true,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n animatedTransform: false,\n transformTime: 450,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n tree: [],\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight\n },\n spaceSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: [],\n culledView: [],\n activePlaneID: \"\",\n isolatePlane: \"\",\n lastClosedPlane: \"\"\n};\n\nconst name = \"space\";\n\nconst space = toolkit.createSlice({\n name: name,\n initialState: initialState$2,\n reducers: {\n setSpaceField: (state, action) => {\n const {field: field, value: value} = action.payload;\n state[field] = value;\n },\n setSpaceLoading: (state, action) => {\n state.loading = action.payload;\n },\n changeTransform: (state, action) => {},\n setTransform: (state, action) => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = action.payload;\n const resolvedTranslationX = translationX !== null && translationX !== void 0 ? translationX : state.translationX;\n const resolvedTranslationY = translationY !== null && translationY !== void 0 ? translationY : state.translationY;\n const resolvedTranslationZ = translationZ !== null && translationZ !== void 0 ? translationZ : state.translationZ;\n const resolvedRotationX = rotationX !== null && rotationX !== void 0 ? rotationX : state.rotationX;\n const resolvedRotationY = rotationY !== null && rotationY !== void 0 ? rotationY : state.rotationY;\n const resolvedScale = scale !== null && scale !== void 0 ? scale : state.scale;\n state.translationX = resolvedTranslationX;\n state.translationY = resolvedTranslationY;\n state.translationZ = resolvedTranslationZ;\n state.rotationX = resolvedRotationX;\n state.rotationY = resolvedRotationY;\n state.scale = resolvedScale;\n },\n setAnimatedTransform: (state, action) => {\n state.animatedTransform = action.payload;\n },\n setTransformTime: (state, action) => {\n state.transformTime = action.payload;\n },\n setSpaceLocation: (state, action) => {\n const newState = Object.assign(Object.assign({}, state), action.payload);\n const transform = computeMatrix(newState);\n return Object.assign(Object.assign({}, newState), {\n transform: transform\n });\n },\n viewCameraMoveForward: state => {\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveBackward: state => {\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveLeft: state => {\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveRight: state => {\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveUp: state => {\n state.translationY = state.translationY + pluridData.TRANSLATION_STEP * 3;\n state.transform = computeMatrix(state);\n },\n viewCameraMoveDown: state => {\n state.translationY = state.translationY - pluridData.TRANSLATION_STEP * 3;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnUp: state => {\n state.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnDown: state => {\n state.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnLeft: state => {\n state.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnRight: state => {\n state.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateUp: state => {\n state.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateDown: state => {\n state.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateX: (state, action) => {\n state.rotationX = action.payload;\n state.transform = computeMatrix(state);\n },\n rotateXWith: (state, action) => {\n state.rotationX = state.rotationX + action.payload;\n state.transform = computeMatrix(state);\n },\n rotateLeft: state => {\n state.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateRight: state => {\n state.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateY: (state, action) => {\n state.rotationY = action.payload;\n state.transform = computeMatrix(state);\n },\n rotateYWith: (state, action) => {\n state.rotationY = state.rotationY + action.payload;\n state.transform = computeMatrix(state);\n },\n translateUp: state => {\n state.translationY = state.translationY - pluridData.TRANSLATION_STEP;\n state.transform = computeMatrix(state);\n },\n translateDown: state => {\n state.translationY = state.translationY + pluridData.TRANSLATION_STEP;\n state.transform = computeMatrix(state);\n },\n translateLeft: state => {\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateRight: state => {\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateIn: state => {\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateOut: state => {\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateXWith: (state, action) => {\n state.translationX = state.translationX + action.payload * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + action.payload * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateYWith: (state, action) => {\n state.translationY = state.translationY + action.payload;\n state.transform = computeMatrix(state);\n },\n translateZWith: (state, action) => {\n state.translationZ = state.translationZ + action.payload;\n state.transform = computeMatrix(state);\n },\n scaleUp: state => {\n const computedScale = state.scale + pluridData.SCALE_STEP;\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleDown: state => {\n const computedScale = state.scale - pluridData.SCALE_STEP;\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleUpWith: (state, action) => {\n const computedScale = state.scale + Math.abs(action.payload);\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleDownWith: (state, action) => {\n const computedScale = state.scale - Math.abs(action.payload);\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n setTree: (state, action) => {\n state.tree = [ ...action.payload ];\n },\n setActiveUniverse: (state, action) => {\n state.activeUniverseID = action.payload;\n },\n spaceResetTransform: state => {\n state.scale = 1;\n state.rotationX = 0;\n state.rotationY = 0;\n state.translationX = 0;\n state.translationY = 0;\n state.translationZ = 0;\n state.transform = computeMatrix(state);\n },\n setViewSize: (state, action) => {\n state.viewSize = action.payload;\n },\n setSpaceSize: (state, action) => {\n state.spaceSize = action.payload;\n },\n updateSpaceTreePlane: (state, action) => {\n const updatedTree = pluridEngine.general.tree.updateTreePlane(state.tree, action.payload);\n state.tree = updatedTree;\n },\n updateSpaceLinkCoordinates: (state, action) => {\n const {planeID: planeID, linkCoordinates: linkCoordinates} = action.payload;\n const updatedTree = pluridEngine.general.tree.updateTreeByPlaneIDWithLinkCoordinates(state.tree, planeID, linkCoordinates);\n state.tree = updatedTree;\n },\n spaceSetView: (state, action) => {\n state.view = action.payload;\n },\n spaceSetCulledView: (state, action) => {\n state.culledView = action.payload;\n }\n }\n});\n\nconst actions$3 = space.actions;\n\nconst reducer$3 = space.reducer;\n\nvar space$1 = Object.freeze({\n __proto__: null,\n name: name,\n space: space,\n actions: actions$3,\n selectors: selectors$3,\n reducer: reducer$3\n});\n\nconst initialState$1 = {\n general: themes$2.plurid,\n interaction: themes$2.plurid\n};\n\nconst themes = toolkit.createSlice({\n name: \"themes\",\n initialState: initialState$1,\n reducers: {\n setGeneralTheme: (state, action) => {\n state.general = action.payload;\n },\n setInteractionTheme: (state, action) => {\n state.interaction = action.payload;\n }\n }\n});\n\nconst actions$2 = themes.actions;\n\nconst getGeneralTheme = state => state.themes.general;\n\nconst getInteractionTheme = state => state.themes.general;\n\nconst selectors$2 = {\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme\n};\n\nconst reducer$2 = themes.reducer;\n\nvar themes$1 = Object.freeze({\n __proto__: null,\n themes: themes,\n actions: actions$2,\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme,\n selectors: selectors$2,\n reducer: reducer$2\n});\n\nconst initialState = {\n toolbarScrollPosition: 0\n};\n\nconst ui = toolkit.createSlice({\n name: \"ui\",\n initialState: initialState,\n reducers: {\n setUIToolbarScrollPosition: (state, action) => {\n state.toolbarScrollPosition = action.payload;\n }\n }\n});\n\nconst actions$1 = ui.actions;\n\nconst getToolbarScrollPosition = state => state.ui.toolbarScrollPosition;\n\nconst selectors$1 = {\n getToolbarScrollPosition: getToolbarScrollPosition\n};\n\nconst reducer$1 = ui.reducer;\n\nvar ui$1 = Object.freeze({\n __proto__: null,\n ui: ui,\n actions: actions$1,\n getToolbarScrollPosition: getToolbarScrollPosition,\n selectors: selectors$1,\n reducer: reducer$1\n});\n\nvar modules = {\n configuration: configuration$1,\n general: general$1,\n shortcuts: shortcuts$1,\n space: space$1,\n themes: themes$1,\n ui: ui$1\n};\n\nconst reducer = toolkit.combineReducers({\n configuration: modules.configuration.reducer,\n general: modules.general.reducer,\n shortcuts: modules.shortcuts.reducer,\n space: modules.space.reducer,\n themes: modules.themes.reducer,\n ui: modules.ui.reducer\n});\n\nconst store$1 = preloadedState => toolkit.configureStore({\n preloadedState: preloadedState,\n reducer: reducer,\n devTools: false\n});\n\nconst store = store$1;\n\nconst StateContext = React__default[\"default\"].createContext({});\n\nconst loadStateFromContext = (context, space) => {\n if (!context) {\n return;\n }\n if (!space) {\n if (typeof window === \"undefined\") {\n return;\n }\n const defaultContext = context.states[window.location.pathname];\n return defaultContext;\n }\n return context.states[space];\n};\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P((function(resolve) {\n resolve(value);\n }));\n }\n return new (P || (P = Promise))((function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n }));\n}\n\nconst Context = React__default[\"default\"].createContext(null);\n\nvar actions = {\n configuration: modules.configuration.actions,\n general: modules.general.actions,\n shortcuts: modules.shortcuts.actions,\n space: modules.space.actions,\n themes: modules.themes.actions,\n ui: modules.ui.actions\n};\n\nconst {quaternion: quaternion, transform: transform, matrix: matrix} = pluridEngine.interaction;\n\nconst {degToRad: degToRad$1, radToDeg: radToDeg} = quaternion;\n\nconst {multiplyMatricesArray: multiplyMatricesArray, translateMatrix: translateMatrix$1, rotateYMatrix: rotateYMatrix, matrixToCSSMatrix: matrixToCSSMatrix, arrayToMatrix: arrayToMatrix, inverseMatrix: inverseMatrix} = transform.general;\n\nconst {getTransformRotate: getTransformRotate, getTransformTranslate: getTransformTranslate, getTransformScale: getTransformScale} = transform.matrix3d;\n\nconst {rotateMatrix: rotateMatrix$1, translateMatrix: translateMatrixArray, scaleMatrix: scaleMatrix$1, multiplyArrayOfMatrices: multiplyArrayOfMatrices$1} = matrix;\n\nconst computeApplication = (planes, configuration, view) => {\n const appConfiguration = pluridEngine.general.configuration.merge(configuration);\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridPlaneData(plane);\n const linkPath = pluridEngine.routing.resolveRoute(planeData.route);\n if (!linkPath) {\n continue;\n }\n }\n }\n const currentView = view || [];\n const absoluteView = [];\n for (const viewItem of currentView) {\n if (typeof viewItem === \"string\") {\n const viewPath = pluridEngine.routing.resolveRoute(viewItem);\n if (!viewPath) {\n continue;\n }\n absoluteView.push(viewPath.route);\n }\n }\n const origin = \"localhost:63000\";\n const registrar = new PluridPlanesRegistrar(planes, origin);\n const registrarPlanes = registrar.getAll();\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: registrarPlanes,\n configuration: appConfiguration,\n view: absoluteView\n }, origin);\n const computedTree = spaceTree.compute();\n const data = {\n computedTree: computedTree,\n appConfiguration: appConfiguration\n };\n return data;\n};\n\nconst computePlaneLocation = plane => {\n const {location: location} = plane;\n const {translateX: translateX, translateY: translateY, translateZ: translateZ, rotateY: rotateY} = location;\n const getTransform = () => {\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translateX * -1 + innerWidth;\n const transformOriginY = translateY * -1 + innerHeight;\n const transformOriginZ = translateZ * -1;\n const rotationMatrix = rotateMatrix$1(0, degToRad$1(rotateY));\n const translationMatrix = translateMatrixArray(translateX, translateY, translateZ);\n const scalationMatrix = scaleMatrix$1(1);\n const transformMatrix = multiplyArrayOfMatrices$1([ translationMatrix, translateMatrixArray(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrixArray(-transformOriginX, -transformOriginY, -transformOriginZ), scalationMatrix ]);\n const inverseTransformMatrix = inverseMatrix(arrayToMatrix(transformMatrix));\n const matrix3dTransformMatrix = matrixToCSSMatrix(inverseTransformMatrix);\n const rotate = getTransformRotate(matrix3dTransformMatrix);\n const translate = getTransformTranslate(matrix3dTransformMatrix);\n const scale = getTransformScale(matrix3dTransformMatrix);\n const transform = {\n translationX: translate.translateX,\n translationY: translate.translateY,\n translationZ: translate.translateZ,\n rotationX: radToDeg(rotate.rotateX),\n rotationY: radToDeg(rotate.rotateY),\n scale: scale.scale\n };\n return transform;\n };\n const transform = getTransform();\n const getMatrix3d = () => {\n const zSign1 = rotateY < 100 ? 1 : -1;\n const zSign2 = rotateY < 100 ? -1 : 1;\n const xOffset = rotateY < 100 ? plane.parentPlaneID ? 200 : 0 : 0;\n const newMatrix = multiplyMatricesArray([ translateMatrix$1(-translateX, -translateY, zSign1 * translateZ), rotateYMatrix(degToRad$1(rotateY)), translateMatrix$1(translateX, translateY, zSign2 * translateZ), translateMatrix$1(-(translateX + xOffset), -translateY, zSign1 * translateZ) ]);\n const matrix3d = matrixToCSSMatrix(newMatrix);\n return matrix3d;\n };\n const matrix3d = getMatrix3d();\n return {\n transform: transform,\n matrix3d: matrix3d\n };\n};\n\nconst factoryUseAnimatedTransform = () => {\n let timeout;\n return dispatch => {\n const dispatchSetAnimatedTransform = payload => dispatch(actions.space.setAnimatedTransform(payload));\n dispatchSetAnimatedTransform(true);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), pluridData.PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT);\n };\n};\n\nconst useAnimatedTransform = factoryUseAnimatedTransform();\n\nconst navigateToPluridPlane = (dispatch, plane, event, deisolate = true) => {\n if (event && (event.ctrlKey || event.metaKey)) {\n return;\n }\n if (!plane) {\n return;\n }\n const dispatchSetTransform = payload => dispatch(actions.space.setTransform(payload));\n const dispatchSetSpaceField = payload => dispatch(actions.space.setSpaceField(payload));\n const {matrix3d: matrix3d, transform: transform} = computePlaneLocation(plane);\n useAnimatedTransform(dispatch);\n dispatchSetSpaceField({\n field: \"transform\",\n value: matrix3d\n });\n dispatchSetTransform(Object.assign({}, transform));\n if (deisolate) {\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: \"\"\n });\n }\n setTimeout((() => {\n focusPluridPlaneAnchor(plane.planeID);\n dispatchSetSpaceField({\n field: \"activePlaneID\",\n value: plane.planeID\n });\n }), pluridData.PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT);\n};\n\nconst getActivePlane = state => {\n const {activePlaneID: activePlaneID, tree: tree} = state.space;\n if (!activePlaneID) {\n return;\n }\n const treePlane = pluridEngine.space.tree.logic.getTreePlaneByID(tree, activePlaneID);\n return treePlane;\n};\n\nconst focusActivePlane = (dispatch, state) => {\n const activePlane = getActivePlane(state);\n if (!activePlane) {\n return;\n }\n const event = undefined;\n const deisolate = false;\n navigateToPluridPlane(dispatch, activePlane, event, deisolate);\n};\n\nconst focusParentActivePlane = (dispatch, state) => {\n const activePlane = getActivePlane(state);\n if (!activePlane || !activePlane.parentPlaneID) {\n return;\n }\n const parentPlane = pluridEngine.space.tree.logic.getTreePlaneByID(state.space.tree, activePlane.parentPlaneID);\n if (!parentPlane) {\n return;\n }\n navigateToPluridPlane(dispatch, parentPlane);\n};\n\nconst findRootIndex = (tree, activePlaneID, currentRootIndex) => {\n for (const [index, plane] of tree.entries()) {\n if (plane.planeID === activePlaneID) {\n return currentRootIndex !== null && currentRootIndex !== void 0 ? currentRootIndex : index;\n }\n if (plane.children) {\n const rootIndex = findRootIndex(plane.children, activePlaneID, index);\n if (typeof rootIndex === \"number\") {\n return rootIndex;\n }\n }\n }\n return;\n};\n\nconst navigateToRoot = (dispatch, state, type) => {\n const {activePlaneID: activePlaneID, tree: tree} = state.space;\n const rootIndex = findRootIndex(tree, activePlaneID);\n if (typeof rootIndex !== \"number\") {\n return;\n }\n const treeIndex = type === \"previous\" ? rootIndex - 1 || 0 : rootIndex + 1;\n let root = tree[treeIndex];\n if (!root) {\n if (type === \"previous\") {\n root = tree[tree.length - 1];\n } else {\n root = tree[0];\n }\n if (!root) {\n return;\n }\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst focusPreviousRoot = (dispatch, state) => {\n navigateToRoot(dispatch, state, \"previous\");\n};\n\nconst focusNextRoot = (dispatch, state) => {\n navigateToRoot(dispatch, state, \"next\");\n};\n\nconst focusRootIndex = (dispatch, state, index) => {\n const {tree: tree} = state.space;\n const root = tree[index];\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst focusRootID = (dispatch, state, id) => {\n const {tree: tree} = state.space;\n const root = tree.find((plane => plane.planeID === id));\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst refreshActivePlane = (state, pubsub) => {\n const {activePlaneID: id} = state.space;\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.REFRESH_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst isolateActivePlane = (state, pubsub) => {\n const {activePlaneID: id, isolatePlane: isolatePlane} = state.space;\n if (isolatePlane) {\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: \"\"\n }\n });\n return;\n }\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst openClosedPlane = pubsub => {\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE\n });\n};\n\nconst closeActivePlane = (state, pubsub) => {\n const {activePlaneID: id} = state.space;\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst {direction: directionLogic} = pluridEngine.interaction;\n\nconst handleGlobalShortcuts = (dispatch, state, pubsub, event, firstPerson, locks) => {\n if (event.defaultPrevented) {\n return;\n }\n const inputOnPath = pluridFunctions.dom.verifyPathInputElement(pluridFunctions.dom.getEventPath(event));\n if (inputOnPath) {\n return;\n }\n const noModifiers = !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey;\n const handleEvent = () => {\n event.preventDefault();\n };\n if (event.code === \"KeyF\" && noModifiers) {\n handleEvent();\n return dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson());\n }\n if (firstPerson) {\n if (event.code === \"KeyW\" && noModifiers && locks.translationZ) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveForward());\n }\n if (event.code === \"KeyS\" && noModifiers && locks.translationZ) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveBackward());\n }\n if (event.code === \"KeyA\" && noModifiers && locks.translationX) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveLeft());\n }\n if (event.code === \"KeyA\" && event.shiftKey && locks.rotationY) {\n handleEvent();\n return dispatch(actions.space.viewCameraTurnLeft());\n }\n if (event.code === \"KeyD\" && noModifiers && locks.translationX) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveRight());\n }\n if (event.code === \"KeyD\" && event.shiftKey && locks.rotationY) {\n handleEvent();\n return dispatch(actions.space.viewCameraTurnRight());\n }\n if (event.code === \"KeyQ\" && noModifiers && locks.rotationX) {\n handleEvent();\n return dispatch(actions.space.viewCameraTurnUp());\n }\n if (event.code === \"KeyZ\" && noModifiers && locks.rotationX) {\n handleEvent();\n return dispatch(actions.space.viewCameraTurnDown());\n }\n if (event.code === \"KeyE\" && noModifiers && locks.translationY) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveUp());\n }\n if (event.code === \"KeyC\" && noModifiers && locks.translationY) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveDown());\n }\n }\n if (event.code === \"KeyR\" && noModifiers) {\n handleEvent();\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ROTATION));\n }\n if (event.code === \"KeyT\" && noModifiers) {\n handleEvent();\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.TRANSLATION));\n }\n if (event.code === \"KeyS\" && noModifiers && !firstPerson) {\n handleEvent();\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.SCALE));\n }\n if (event.key === \"ArrowRight\") {\n if (event.shiftKey && locks.rotationY) {\n handleEvent();\n return dispatch(actions.space.rotateLeft());\n }\n if (event.altKey && locks.translationX) {\n handleEvent();\n return dispatch(actions.space.translateRight());\n }\n }\n if (event.key === \"ArrowLeft\") {\n if (event.shiftKey && locks.rotationY) {\n handleEvent();\n return dispatch(actions.space.rotateRight());\n }\n if (event.altKey && locks.translationX) {\n handleEvent();\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.key === \"ArrowUp\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n handleEvent();\n return dispatch(actions.space.translateIn());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n handleEvent();\n return dispatch(actions.space.rotateUp());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n handleEvent();\n return dispatch(actions.space.translateUp());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n handleEvent();\n return dispatch(actions.space.scaleUp());\n }\n }\n if (event.key === \"ArrowDown\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n handleEvent();\n return dispatch(actions.space.translateOut());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n handleEvent();\n return dispatch(actions.space.rotateDown());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n handleEvent();\n return dispatch(actions.space.translateDown());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n handleEvent();\n return dispatch(actions.space.scaleDown());\n }\n }\n if (event.altKey && event.code === \"KeyF\") {\n handleEvent();\n focusActivePlane(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyB\") {\n handleEvent();\n focusParentActivePlane(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyR\") {\n handleEvent();\n refreshActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyE\") {\n handleEvent();\n isolateActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.shiftKey && event.code === \"KeyT\") {\n handleEvent();\n openClosedPlane(pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyW\") {\n handleEvent();\n closeActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyA\") {\n handleEvent();\n focusPreviousRoot(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyD\") {\n handleEvent();\n focusNextRoot(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"Tab\") {\n handleEvent();\n if (event.shiftKey) {\n focusPreviousRoot(dispatch, state);\n } else {\n focusNextRoot(dispatch, state);\n }\n return;\n }\n if (event.altKey && event.code.startsWith(\"Digit\")) {\n handleEvent();\n const index = parseInt(event.code.replace(\"Digit\", \"\")) - 1;\n focusRootIndex(dispatch, state, index);\n return;\n }\n return;\n};\n\nconst handleGlobalWheel = (dispatch, event, modes, locks) => {\n if (event.shiftKey || event.metaKey || event.altKey || event.ctrlKey || modes.rotation || modes.translation || modes.scale) {\n event.preventDefault();\n }\n const deltas = {\n deltaX: event.deltaX,\n deltaY: event.deltaY\n };\n const absoluteThreshold = 100;\n const direction = directionLogic.getWheelDirection(deltas, absoluteThreshold);\n if (modes.rotation) {\n if (direction === pluridData.directions.left && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (direction === pluridData.directions.right && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (direction === pluridData.directions.up && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (direction === pluridData.directions.down && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n }\n if (event.shiftKey && !event.altKey) {\n if (direction === pluridData.directions.up && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (direction === pluridData.directions.down && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (direction === pluridData.directions.left && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (direction === pluridData.directions.right && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n }\n if (modes.translation) {\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.up) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down) {\n return dispatch(actions.space.translateUp());\n }\n return;\n }\n if (event.altKey) {\n if (direction === pluridData.directions.up && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (direction === pluridData.directions.down && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n }\n if (direction === pluridData.directions.up && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (direction === pluridData.directions.left && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n if (direction === pluridData.directions.right && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.altKey && event.shiftKey) {\n if (direction === pluridData.directions.up && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (direction === pluridData.directions.down && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n }\n if (event.altKey && !event.shiftKey) {\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.up) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down) {\n return dispatch(actions.space.translateUp());\n }\n return;\n }\n if (direction === pluridData.directions.up && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (direction === pluridData.directions.left && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n if (direction === pluridData.directions.right && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (modes.scale) {\n if (direction === pluridData.directions.down && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n if (direction === pluridData.directions.up && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.down && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n if (direction === pluridData.directions.up && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n return;\n};\n\nconst loadHammer = () => __awaiter(void 0, void 0, void 0, (function*() {\n const hammer = yield Promise.resolve().then((function() {\n return _interopNamespace(require(\"hammerjs\"));\n }));\n return hammer;\n}));\n\nvar selectors = {\n configuration: modules.configuration.selectors,\n general: modules.general.selectors,\n shortcuts: modules.shortcuts.selectors,\n space: modules.space.selectors,\n themes: modules.themes.selectors,\n ui: modules.ui.selectors\n};\n\nconst GlobalStyle = styled.createGlobalStyle`\n *,\n *:after,\n *:before {\n box-sizing: border-box;\n font-kerning: auto;\n text-rendering: optimizeLegibility;\n }\n\n html, body {\n margin: 0;\n height: 100%;\n width: 100%;\n overscroll-behavior-x: ${({preventOverscroll: preventOverscroll}) => {\n if (preventOverscroll) {\n return \"none\";\n }\n return \"auto\";\n}};\n }\n\n html {\n overflow: hidden;\n background: black;\n color: white;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif}\n }\n`;\n\nconst StyledView = styled__default[\"default\"].div`\n height: 100%;\n min-height: ${props => {\n if (props.fullHeight) {\n return \"100vh\";\n }\n return \"100%\";\n}};\n min-height: ${props => {\n if (props.fullHeight) {\n return \"-webkit-fill-available\";\n }\n return \"100%\";\n}};\n\n width: 100%;\n position: relative;\n scroll-snap-align: start;\n outline: none;\n overflow: hidden;\n\n cursor: ${props => {\n if (props.transformMode === pluridData.TRANSFORM_MODES.TRANSLATION || props.transformMode === pluridData.TRANSFORM_MODES.ROTATION) {\n return \"all-scroll\";\n }\n if (props.transformMode === pluridData.TRANSFORM_MODES.SCALE) {\n return \"ns-resize\";\n }\n return \"initial\";\n}};\n user-select: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n touch-action: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none !important\";\n }\n return \"initial !important\";\n}};\n -webkit-user-drag: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n -webkit-tap-highlight-color: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"rgba(0, 0, 0, 0)\";\n }\n return \"initial !important\";\n}};\n`;\n\nstyled__default[\"default\"].div`\n outline: none;\n background: ${props => {\n if (props.opaque) {\n const foregroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorTertiary : props.theme.backgroundColorPrimary;\n const backgroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorPrimary : props.theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n`;\n\nclass ErrorBoundary extends React__default[\"default\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n static getDerivedStateFromError(error) {\n return {\n hasError: true\n };\n }\n componentDidCatch(error, errorInfo) {}\n render() {\n if (this.state.hasError) {\n if (this.props.renderError) {\n return this.props.renderError;\n }\n return React__default[\"default\"].createElement(\"h1\", null, \"Something went wrong.\");\n }\n return this.props.children;\n }\n}\n\nconst StyledPluridPlane = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme, planeOpacity: planeOpacity}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity !== 1) {\n const decomposedColor = themes$2.decomposeColor(theme.backgroundColorPrimary);\n if (decomposedColor) {\n const color = `hsla(${decomposedColor.hue}, ${decomposedColor.saturation}%, ${decomposedColor.lightness}%, ${planeOpacity})`;\n return color;\n }\n return \"transparent\";\n }\n return theme.backgroundColorPrimary;\n}};\n box-shadow: ${({planeOpacity: planeOpacity, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"none\";\n }\n return theme.boxShadowUmbra;\n}};\n color: ${({theme: theme}) => theme.colorPrimary};\n opacity: ${({show: show}) => {\n if (!show) {\n return \"0\";\n }\n return \"1\";\n}};\n user-select: ${({show: show}) => {\n if (!show) {\n return \"none\";\n }\n return \"auto\";\n}};\n\n position: absolute;\n height: auto;\n width: 100%;\n font-size: 0.9rem;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif};\n transition: background-color 300ms linear;\n\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: ${({planeControls: planeControls}) => {\n if (planeControls) {\n return \"56px auto\";\n }\n return \"auto\";\n}};\n\n transform-origin: 0 0 0;\n`;\n\nconst StyledFocusAnchor = styled__default[\"default\"].a`\n position: absolute;\n top: 0;\n left: 0;\n height: 0;\n width: 0;\n pointer-events: none;\n user-select: none;\n`;\n\nconst StyledPluridPlaneBridge = styled__default[\"default\"].div`\n background-color: ${({theme: theme, planeControls: planeControls, planeOpacity: planeOpacity, transparentUI: transparentUI, mouseOver: mouseOver}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity === 0) {\n return \"transparent\";\n }\n if (!planeControls) {\n return theme.backgroundColorPrimary;\n }\n return theme.backgroundColorDark;\n}};\n\n position: absolute;\n top: 0;\n left: -100px;\n height: 30px;\n width: 100px;\n opacity: 0.5;\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst PluridPlaneBridge = properties => {\n const {mouseOver: mouseOver, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {controls: controls, opacity: opacity} = stateConfiguration.elements.plane;\n const {transparentUI: transparentUI} = stateConfiguration.global;\n return React__default[\"default\"].createElement(StyledPluridPlaneBridge, {\n theme: stateGeneralTheme,\n planeControls: controls.show,\n planeOpacity: opacity,\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_BRIDGE\n });\n};\n\nconst mapStateToProperties$i = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$i = dispatch => ({});\n\nconst ConnectedPluridPlaneBridge = reactRedux.connect(mapStateToProperties$i, mapDispatchToProperties$i, null, {\n context: StateContext\n})(PluridPlaneBridge);\n\nconst ControlRefresh = properties => {\n const {theme: theme, refreshing: refreshing, refreshPlane: refreshPlane} = properties;\n return React__default[\"default\"].createElement(pluridIconsReact.PluridIconReset, {\n atClick: () => {\n refreshPlane();\n },\n theme: theme,\n title: \"refresh\",\n style: {\n opacity: refreshing ? \"0\" : \"1\",\n pointerEvents: refreshing ? \"none\" : undefined\n }\n });\n};\n\nconst ControlIsolate = properties => {\n const {theme: theme, isolated: isolated, isolatePlane: isolatePlane} = properties;\n const title = isolated ? \"isolated\" : \"isolate\";\n const fill = isolated ? true : false;\n return React__default[\"default\"].createElement(pluridIconsReact.PluridIconRectangle, {\n atClick: () => {\n isolatePlane();\n },\n theme: theme,\n title: title,\n fill: fill\n });\n};\n\nconst StyledPluridPlaneControls = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme}) => {\n if (transparentUI && !mouseOver) {\n return \"transparent\";\n }\n return theme.backgroundColorDark;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbraInset};\n\n width: 100%;\n display: grid;\n align-items: center;\n justify-content: center;\n grid-template-rows: 1fr;\n grid-template-columns: 1fr 2fr 1fr;\n transition: background-color 300ms linear;\n\n @media (max-width: 800px) {\n grid-template-columns: 1fr 3fr 1fr;\n }\n`;\n\nconst styleCommonControls = styled.css`\n margin: 0 1rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n`;\n\nconst StyledPluridPlaneControlsLeft = styled__default[\"default\"].div`\n ${styleCommonControls}\n`;\n\nconst StyledPluridPlaneControlsCenter = styled__default[\"default\"].div`\n width: 100%;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n word-break: break-all;\n`;\n\nconst StyledPluridPlaneControlsRight = styled__default[\"default\"].div`\n ${styleCommonControls}\n justify-content: right;\n`;\n\nconst PluridPlaneControls = properties => {\n const {plane: plane, treePlane: treePlane, parentTreePlane: parentTreePlane, mouseOver: mouseOver, refreshing: refreshing, refreshPlane: refreshPlane, isolatePlane: isolatePlane, closePlane: closePlane, configuration: configuration, stateGeneralTheme: stateGeneralTheme, stateIsolatePlane: stateIsolatePlane, dispatch: dispatch} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const {title: title, pathbar: pathbar} = elements.plane.controls;\n const {planeID: planeID, route: route, routeDivisions: routeDivisions} = treePlane;\n const {protocol: protocol, host: host} = routeDivisions;\n const gateway = \"gateway\";\n `${protocol}://${host.value}/${gateway}?plurid=` + encodeURIComponent(route);\n const isolated = stateIsolatePlane === planeID;\n const [path, setPath] = React.useState(treePlane.route);\n React.useState(false);\n React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridPlaneControls, {\n theme: stateGeneralTheme,\n mouseOver: mouseOver,\n transparentUI: transparentUI,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTROLS\n }, React__default[\"default\"].createElement(StyledPluridPlaneControlsLeft, null, parentTreePlane && React__default[\"default\"].createElement(pluridIconsReact.PluridIconArrowLeft, {\n atClick: event => {\n navigateToPluridPlane(dispatch, parentTreePlane, event);\n },\n theme: stateGeneralTheme,\n title: \"back\"\n }), React__default[\"default\"].createElement(pluridIconsReact.PluridIconFrame, {\n atClick: event => {\n const deisolate = false;\n navigateToPluridPlane(dispatch, treePlane, event, deisolate);\n },\n theme: stateGeneralTheme,\n title: \"focus\"\n }), React__default[\"default\"].createElement(ControlRefresh, {\n theme: stateGeneralTheme,\n refreshing: refreshing,\n refreshPlane: refreshPlane\n }), React__default[\"default\"].createElement(ControlIsolate, {\n theme: stateGeneralTheme,\n isolated: isolated,\n isolatePlane: isolatePlane\n })), React__default[\"default\"].createElement(StyledPluridPlaneControlsCenter, null, title && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, path)), React__default[\"default\"].createElement(StyledPluridPlaneControlsRight, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconDelete, {\n atClick: () => {\n closePlane();\n },\n theme: stateGeneralTheme,\n title: \"close\"\n })));\n};\n\nconst mapStateToProps$f = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateIsolatePlane: selectors.space.getIsolatePlane(state)\n});\n\nconst mapDispatchToProps$f = dispatch => ({\n dispatch: dispatch\n});\n\nconst ConnectedPluridPlaneControls = reactRedux.connect(mapStateToProps$f, mapDispatchToProps$f, null, {\n context: StateContext\n})(PluridPlaneControls);\n\nconst StyledPluridPlaneContent = styled__default[\"default\"].div`\n position: relative;\n`;\n\nconst PluridPlaneContent = properties => {\n const {children: children} = properties;\n const planeContentElement = React.useRef(null);\n return React__default[\"default\"].createElement(StyledPluridPlaneContent, {\n ref: planeContentElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTENT\n }, children);\n};\n\nconst PluridPlane = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planeRenderError: planeRenderError, defaultPubSub: defaultPubSub} = context;\n const {planeID: planeID, plane: plane, treePlane: treePlane, children: children, stateTree: stateTree, stateViewSize: stateViewSize, stateActivePlaneID: stateActivePlaneID, stateIsolatePlane: stateIsolatePlane, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceTreePlane: dispatchUpdateSpaceTreePlane} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {controls: controls, width: planeWidth, opacity: planeOpacity} = elements.plane;\n const showPlaneControls = controls.show;\n pluridFunctions.mathematics.numbers.checkIntegerNonUnit(planeWidth) ? planeWidth : planeWidth * stateViewSize.width;\n const parentTreePlane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, treePlane.parentPlaneID);\n const planeRef = React.useRef(null);\n const [remountKey, setRemountKey] = React.useState(0);\n const [refreshing, setRefreshing] = React.useState(false);\n const [mouseOver, setMouseOver] = React.useState(false);\n const refreshPlane = () => {\n const REFRESH_TIMEOUT = 250;\n setRefreshing(true);\n setTimeout((() => {\n setRemountKey((value => ++value));\n setRefreshing(false);\n }), REFRESH_TIMEOUT);\n };\n const isolatePlane = () => {\n const id = stateIsolatePlane !== planeID ? planeID : \"\";\n defaultPubSub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: id\n }\n });\n };\n const closePlane = () => {\n defaultPubSub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n data: {\n id: planeID\n }\n });\n };\n const setActivePlane = () => {\n const payload = {\n field: \"activePlaneID\",\n value: mouseOver ? planeID : \"\"\n };\n dispatchSetSpaceField(payload);\n };\n const debouncedSetActivePlane = pluridFunctionsReact.useDebouncedCallback((() => {\n if (stateActivePlaneID === planeID) {\n return;\n }\n const payload = {\n field: \"activePlaneID\",\n value: planeID\n };\n dispatchSetSpaceField(payload);\n }), 500);\n const computeIsolatePlaneOpacity = () => {\n if (!treePlane.show || !stateIsolatePlane) {\n return;\n }\n if (stateIsolatePlane === planeID) {\n return \"1\";\n }\n return \"0\";\n };\n const computeIsolatePointerEvents = () => {\n if (!treePlane.show || !stateIsolatePlane) {\n return;\n }\n if (stateIsolatePlane === planeID) {\n return;\n }\n return \"none\";\n };\n React.useEffect((() => {\n setActivePlane();\n }), [ planeID, mouseOver ]);\n React.useEffect((() => {\n const refreshPlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.REFRESH_PLANE,\n callback: data => {\n const {id: id} = data;\n if (id === planeID) {\n refreshPlane();\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(refreshPlaneIndex);\n };\n }), [ remountKey, planeID ]);\n const key = planeID + \"-\" + remountKey;\n const focusAnchorID = planeID + pluridData.FOCUS_ANCHOR_SUFFIX;\n const renderWidth = \"100%\";\n const isolatePlaneOpacity = computeIsolatePlaneOpacity();\n const isolatePointerEvents = computeIsolatePointerEvents();\n const transform = pluridEngine.cleanTemplate(`\\n translateX(${treePlane.location.translateX}px)\\n translateY(${treePlane.location.translateY}px)\\n translateZ(${treePlane.location.translateZ}px)\\n rotateX(${treePlane.location.rotateX}deg)\\n rotateY(${treePlane.location.rotateY}deg)\\n `);\n const planeContentProperties = {};\n return React__default[\"default\"].createElement(StyledPluridPlane, {\n key: key,\n ref: planeRef,\n theme: stateGeneralTheme,\n planeControls: showPlaneControls,\n planeOpacity: planeOpacity,\n show: treePlane.show,\n id: planeID,\n style: {\n width: renderWidth,\n transform: transform,\n opacity: isolatePlaneOpacity,\n pointerEvents: isolatePointerEvents\n },\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseOver: () => debouncedSetActivePlane(),\n onMouseMove: () => debouncedSetActivePlane(),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-plane\": planeID,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE\n }, React__default[\"default\"].createElement(StyledFocusAnchor, {\n tabIndex: 0,\n id: focusAnchorID\n }), treePlane.show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, treePlane.parentPlaneID && React__default[\"default\"].createElement(ConnectedPluridPlaneBridge, {\n mouseOver: mouseOver\n }), showPlaneControls && React__default[\"default\"].createElement(ConnectedPluridPlaneControls, {\n plane: plane,\n treePlane: treePlane,\n parentTreePlane: parentTreePlane,\n mouseOver: mouseOver,\n refreshing: refreshing,\n refreshPlane: refreshPlane,\n isolatePlane: isolatePlane,\n closePlane: closePlane\n }), planeRenderError ? React__default[\"default\"].createElement(ErrorBoundary, {\n renderError: typeof planeRenderError !== \"boolean\" ? planeRenderError : undefined\n }, React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)) : React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)));\n};\n\nconst mapStateToProps$e = state => ({\n stateTree: selectors.space.getTree(state),\n stateViewSize: selectors.space.getViewSize(state),\n stateActivePlaneID: selectors.space.getActivePlaneID(state),\n stateIsolatePlane: selectors.space.getIsolatePlane(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$e = dispatch => ({\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceTreePlane: payload => dispatch(actions.space.updateSpaceTreePlane(payload))\n});\n\nconst ConnectedPluridPlane = reactRedux.connect(mapStateToProps$e, mapDispatchToProps$e, null, {\n context: StateContext\n})(PluridPlane);\n\nconst isReactRenderable = component => {\n if (!component) {\n return false;\n }\n if (typeof component === \"string\" || component.url) {\n return false;\n }\n return true;\n};\n\nconst StyledPluridRoot = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n`;\n\nconst PluridRoot = properties => {\n const {plane: plane, stateTree: stateTree} = properties;\n const {location: location} = plane;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar, planeContext: PlaneContext, planeContextValue: planeContextValue, customPlane: customPlane, matchedRoute: matchedRoute, defaultPubSub: defaultPubSub} = context;\n const CustomPluridPlane = customPlane;\n const computeChildrenPlanes = plane => {\n if (!plane.children || plane.children.length === 0) {\n return [];\n }\n const children = [];\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n plane.children.forEach((child => {\n if (!planesRegistry) {\n return;\n }\n const planeID = child.sourceID;\n const activePlane = planesRegistry.get(planeID);\n if (activePlane) {\n const renderPlane = () => {\n const Plane = activePlane.component;\n const pluridProperty = {\n plane: {\n value: activePlane.route.absolute,\n planeID: child.planeID,\n parentPlaneID: child.parentPlaneID,\n fragments: activePlane.route.fragments,\n parameters: activePlane.route.parameters,\n query: activePlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n },\n pubSub: defaultPubSub\n };\n const properties = {\n plurid: Object.assign({}, pluridProperty),\n key: \"plurid-plane-\" + child.planeID\n };\n const renderablePlane = isReactRenderable(Plane);\n const renderableCustomPlane = isReactRenderable(CustomPluridPlane);\n const keyBase = \"plurid-plane-child-\";\n const planeProperties = {\n key: keyBase + child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n };\n if (CustomPluridPlane && renderableCustomPlane) {\n return React__default[\"default\"].createElement(CustomPluridPlane, Object.assign({}, planeProperties));\n }\n if (renderablePlane) {\n return React__default[\"default\"].createElement(ConnectedPluridPlane, Object.assign({}, planeProperties), !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, properties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, properties))));\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n };\n const plane = renderPlane();\n children.push(plane);\n }\n if (child.children) {\n const childrenPlanes = computeChildrenPlanes(child);\n if (childrenPlanes) {\n children.push(...childrenPlanes);\n }\n }\n }));\n return children;\n };\n const childrenPlanes = React.useMemo((() => computeChildrenPlanes(plane)), [ JSON.stringify(plane), JSON.stringify(stateTree) ]);\n const pluridPlaneID = plane.sourceID;\n if (!pluridPlaneID) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const pluridPlane = getRegisteredPlane(pluridPlaneID, planesRegistrar);\n if (!pluridPlane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Plane = pluridPlane.component;\n const pluridProperty = {\n plane: {\n value: pluridPlane.route.absolute,\n planeID: plane.planeID,\n parentPlaneID: plane.parentPlaneID,\n fragments: pluridPlane.route.fragments,\n parameters: pluridPlane.route.parameters,\n query: pluridPlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n },\n pubSub: defaultPubSub\n };\n const planeProperties = {\n plurid: Object.assign({}, pluridProperty),\n key: \"plurid-plane-\" + plane.planeID\n };\n if (CustomPluridPlane) {\n if (typeof CustomPluridPlane !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(CustomPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }), childrenPlanes);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(ConnectedPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)))), childrenPlanes);\n};\n\nconst mapStateToProperties$h = state => ({\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$h = dispatch => ({});\n\nconst ConnectedPluridRoot = reactRedux.connect(mapStateToProperties$h, mapDispatchToProperties$h, null, {\n context: StateContext\n})(PluridRoot);\n\nconst StyledPluridRoots = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n transform-origin: 0 0 0;\n`;\n\nconst PluridRoots = properties => {\n const {spaceTransformMatrix: spaceTransformMatrix, spaceAnimatedTransform: spaceAnimatedTransform, spaceTransformTime: spaceTransformTime, stateTree: stateTree} = properties;\n return React__default[\"default\"].createElement(StyledPluridRoots, {\n style: {\n width: \"100%\",\n height: typeof window !== \"undefined\" ? window.innerHeight + \"px\" : \"821px\",\n transform: spaceTransformMatrix,\n transition: spaceAnimatedTransform ? `transform ${spaceTransformTime}ms ease-in-out` : \"initial\"\n },\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOTS\n }, stateTree.map((plane => React__default[\"default\"].createElement(ConnectedPluridRoot, {\n key: plane.planeID,\n plane: plane\n }))));\n};\n\nconst mapStateToProperties$g = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n spaceTransformMatrix: selectors.space.getTransformMatrix(state),\n spaceAnimatedTransform: selectors.space.getAnimatedTransform(state),\n spaceTransformTime: selectors.space.getTransformTime(state),\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$g = dispatch => ({});\n\nconst ConnectedPluridRoots = reactRedux.connect(mapStateToProperties$g, mapDispatchToProperties$g, null, {\n context: StateContext\n})(PluridRoots);\n\nconst fadeIn = styled.keyframes`\n from {\n opacity: 0%;\n }\n\n to {\n opacity: 100%;\n }\n`;\n\nconst fadeInAnimation = fadeInTime => styled.css`${fadeIn} ${fadeInTime}ms linear 100ms forwards`;\n\nconst StyledPluridSpace = styled__default[\"default\"].div`\n position: relative;\n height: 100%;\n overflow: hidden;\n perspective: 2000px;\n outline: none;\n\n background: ${({opaque: opaque, theme: theme}) => {\n if (opaque) {\n const foregroundGradient = theme.type === \"dark\" ? theme.backgroundColorTertiary : theme.backgroundColorPrimary;\n const backgroundGradient = theme.type === \"dark\" ? theme.backgroundColorPrimary : theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n\n /* TOFIX */\n /* opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({isMounted: isMounted, fadeInTime: fadeInTime}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}}; */\n`;\n\nconst PluridSpace = properties => {\n const {stateConfiguration: stateConfiguration, stateGeneralTheme: stateGeneralTheme} = properties;\n const {space: space} = stateConfiguration;\n const {opaque: opaque, fadeInTime: fadeInTime} = space;\n const [isMounted, setIsMounted] = React.useState(false);\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridSpace, {\n theme: stateGeneralTheme,\n opaque: opaque,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_SPACE\n }, React__default[\"default\"].createElement(ConnectedPluridRoots, null));\n};\n\nconst mapStateToProperties$f = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$f = dispatch => ({});\n\nconst ConnectedPluridSpace = reactRedux.connect(mapStateToProperties$f, mapDispatchToProperties$f, null, {\n context: StateContext\n})(PluridSpace);\n\nconst resolveSize = ({size: size}) => {\n switch (size) {\n case pluridData.SIZES.SMALL:\n return \"5px\";\n\n case pluridData.SIZES.NORMAL:\n return \"10px\";\n\n case pluridData.SIZES.LARGE:\n return \"15px\";\n\n default:\n return \"10px\";\n }\n};\n\nconst StyledOrigin = styled__default[\"default\"].div`\n background-color: ${({theme: theme}) => theme.backgroundColorTertiaryAlpha};\n height: ${resolveSize};\n width: ${resolveSize};\n\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n z-index: 99999;\n border-radius: 100px;\n user-select: none;\n pointer-events: none;\n touch-action: none;\n`;\n\nconst Origin = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {space: space} = stateConfiguration;\n const {transformOrigin: transformOrigin} = space;\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n if (!showTransformOrigin) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledOrigin, {\n theme: stateGeneralTheme,\n size: transformOriginSize,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TRANSFORM_ORIGIN\n });\n};\n\nconst mapStateToProperties$e = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$e = dispatch => ({});\n\nconst ConnectedOrigin = reactRedux.connect(mapStateToProperties$e, mapDispatchToProperties$e, null, {\n context: StateContext\n})(Origin);\n\nvar MENUS;\n\n(function(MENUS) {\n MENUS[\"NONE\"] = \"NONE\";\n MENUS[\"UNIVERSES\"] = \"UNIVERSES\";\n MENUS[\"MORE\"] = \"MORE\";\n})(MENUS || (MENUS = {}));\n\nconst VIEW_SIZE_WIDTH_LIMIT = 800;\n\nconst StyledToolbar = styled__default[\"default\"].div`\n bottom: ${({conceal: conceal, mouseIn: mouseIn}) => {\n if (!conceal) {\n return \"-5px\";\n }\n if (mouseIn) {\n return \"-5px\";\n }\n return \"-55px\";\n}};\n pointer-events: ${({showMenu: showMenu}) => {\n if (showMenu !== MENUS.NONE) {\n return \"all\";\n }\n return \"none\";\n}};\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n display: grid;\n position: absolute;\n left: 0;\n right: 0;\n height: 75px;\n z-index: 9999;\n transition: bottom 300ms ease-in-out;\n`;\n\nconst StyledToolbarButtons = styled__default[\"default\"].div`\n color: ${({theme: theme}) => theme.colorPrimary};\n background-color: ${({theme: theme, transparentUI: transparentUI}) => {\n if (transparentUI) {\n return theme.backgroundColorPrimaryAlpha;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n grid-template-columns: ${({showIcons: showIcons, showTransformButtons: showTransformButtons, documentsBased: documentsBased}) => {\n if (showIcons && !showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (!showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (documentsBased) {\n return \"40px 200px 200px 200px 40px 40px\";\n }\n return \"40px 200px 200px 200px 40px\";\n}};\n opacity: ${({opaque: opaque, mouseIn: mouseIn}) => {\n if (!opaque && !mouseIn) {\n return \"0.4\";\n }\n return \"1\";\n}};\n\n z-index: 9999;\n user-select: none;\n /* height: 75px; */\n display: grid;\n pointer-events: all;\n display: grid;\n align-items: center;\n justify-content: center;\n justify-items: center;\n border-radius: 22.5px;\n margin: 0 auto;\n margin-top: 10px;\n margin-bottom: 20px;\n padding: 0 22.5px;\n font-size: 12px;\n height: 45px;\n transition: opacity 300ms ease-in-out;\n\n :after {\n content: '';\n position: absolute;\n top: 55px;\n height: 20px;\n left: 0;\n right: 20%;\n }\n\n @media (max-width: 900px) {\n :after {\n right: 0;\n }\n }\n`;\n\nconst StyledToolbarButton = styled__default[\"default\"].div`\n padding: ${({button: button, showIcons: showIcons, showTransformButtons: showTransformButtons}) => {\n if (button) {\n return \"0\";\n }\n if (showIcons && !showTransformButtons) {\n return \"0\";\n }\n return \"0 7px\";\n}};\n background-color: ${({active: active, theme: theme}) => {\n if (active) {\n return theme.backgroundColorTertiary;\n }\n return \"transparent\";\n}};\n min-width: ${({button: button}) => {\n if (button) {\n return \"40px\";\n }\n return \"70px\";\n}};\n\n height: 45px;\n display: grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n\n @media (hover: hover) {\n :hover {\n background: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n }\n`;\n\nconst StyledIcon = styled__default[\"default\"].div`\n width: 40px;\n display: grid;\n place-content: center;\n\n /* svg {\n height: 15px;\n width: 15px;\n fill: white;\n } */\n`;\n\nconst StyledPluridMenuUniverses = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n max-height: 250px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => props.theme.backgroundColorSecondary};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n\n ul {\n padding: 0;\n list-style: none;\n }\n`;\n\nstyled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n\n margin-bottom: ${props => {\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: white;\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMenuUniversesScroll = styled__default[\"default\"].div`\n max-height: 210px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nstyled__default[\"default\"].li`\n margin: 10px 0;\n padding: 10px 20px;\n border-radius: 100px;\n\n cursor: ${props => {\n if (props.active) {\n return \"initial\";\n }\n return \"pointer\";\n}};\n background-color: ${props => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return \"\";\n}};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return \"\";\n}};\n\n :hover {\n background-color: ${props => props.theme.backgroundColorTertiary};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return props.theme.boxShadowUmbra;\n}};\n }\n`;\n\nconst PluridMenuUniverses = properties => {\n const {interactionTheme: interactionTheme, activeUniverseID: activeUniverseID, dispatchSetActiveUniverse: dispatchSetActiveUniverse} = properties;\n return React__default[\"default\"].createElement(StyledPluridMenuUniverses, {\n theme: interactionTheme\n }, React__default[\"default\"].createElement(StyledPluridMenuUniversesScroll, null));\n};\n\nconst mapStateToProps$d = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n activeUniverseID: selectors.space.getActiveUniverseID(state)\n});\n\nconst mapDispatchToProps$d = dispatch => ({\n dispatchSetActiveUniverse: documentID => dispatch(actions.space.setActiveUniverse(documentID))\n});\n\nconst ConnectedPluridMenuUniverses = reactRedux.connect(mapStateToProps$d, mapDispatchToProps$d, null, {\n context: StateContext\n})(PluridMenuUniverses);\n\nconst StyledPluridDrawer = styled__default[\"default\"].div`\n h5 {\n font-size: 1rem;\n margin: 0;\n }\n\n margin-bottom: 2rem;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n\n padding-bottom: ${props => {\n if (props.transparentUI && props.toggled) {\n return \"0.5rem\";\n }\n return \"0\";\n}};\n background-color: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.backgroundColorSecondary;\n }\n return \"transparent\";\n}};\n box-shadow: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.boxShadowUmbra;\n }\n return \"none\";\n}};\n color: ${props => props.theme.colorPrimary};\n`;\n\nconst StyledPluridDrawerHeading = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid transparent;\n text-align: left;\n\n :hover {\n border-bottom: 1px solid ${props => props.theme.colorPrimary};\n }\n`;\n\nconst StyledPluridDrawerItems = styled__default[\"default\"].div`\n`;\n\nconst {typography: {Heading: PluridHeading}} = pluridUiComponentsReact.universal;\n\nconst PluridDrawer = properties => {\n const {heading: heading, items: items, toggled: toggled, toggle: toggle, interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {transparentUI: transparentUI} = global;\n const [mouseOver, setMouseOver] = React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridDrawer, {\n theme: interactionTheme,\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n toggled: toggled\n }, React__default[\"default\"].createElement(StyledPluridDrawerHeading, {\n theme: interactionTheme,\n onClick: () => toggle()\n }, React__default[\"default\"].createElement(PluridHeading, {\n theme: interactionTheme,\n type: \"h5\"\n }, heading)), toggled && React__default[\"default\"].createElement(StyledPluridDrawerItems, null, items));\n};\n\nconst mapStateToProps$c = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$c = dispatch => ({});\n\nconst ConnectedPluridDrawer = reactRedux.connect(mapStateToProps$c, mapDispatchToProps$c, null, {\n context: StateContext\n})(PluridDrawer);\n\nconst StyledPluridMoreMenu = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n height: 280px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => {\n if (props.transparentUI) {\n return props.theme.backgroundColorPrimaryAlpha;\n }\n return props.theme.backgroundColorSecondary;\n}};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n`;\n\nconst StyledPluridMoreMenuItem = styled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n min-height: 30px;\n padding: 0 0.5rem;\n\n margin-bottom: ${props => {\n if (props.last) {\n return \"0\";\n }\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: ${props.theme ? props.theme.colorPrimary : \"white\"};\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMoreMenuScroll = styled__default[\"default\"].div`\n height: 240px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nconst {inputs: {Dropdown: PluridDropdown$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreGlobal = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetConfigurationThemeGeneralAction: dispatchSetConfigurationThemeGeneralAction, dispatchSetConfigurationThemeInteractionAction: dispatchSetConfigurationThemeInteractionAction, dispatchSetConfigurationLanguage: dispatchSetConfigurationLanguage} = properties;\n const selectedTheme = configuration.global.theme;\n const [generalThemeName, setGeneralThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.general : selectedTheme);\n const [interactionThemeName, setInteractionThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.interaction : selectedTheme);\n const setGeneralTheme = selectedTheme => {\n dispatchSetGeneralTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeGeneralAction(selectedTheme);\n };\n const setInteractionTheme = selectedTheme => {\n dispatchSetInteractionTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeInteractionAction(selectedTheme);\n };\n const setLanguage = selectedLanguage => {\n dispatchSetConfigurationLanguage(selectedLanguage);\n };\n React.useEffect((() => {\n if (typeof selectedTheme === \"object\") {\n setGeneralThemeName(selectedTheme.general);\n setInteractionThemeName(selectedTheme.interaction);\n } else {\n setGeneralThemeName(selectedTheme);\n setInteractionThemeName(selectedTheme);\n }\n }), [ selectedTheme ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalGeneralTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof generalThemeName === \"string\" ? generalThemeName : \"\",\n atSelect: selection => setGeneralTheme(selection),\n theme: interactionTheme,\n filterable: true,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalInteractionTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof interactionThemeName === \"string\" ? interactionThemeName : \"\",\n atSelect: selection => setInteractionTheme(selection),\n theme: interactionTheme,\n heightItems: 3,\n filterable: true,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalLanguage), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: pluridData.internationalization.languages,\n selected: stateLanguage,\n atSelect: selection => setLanguage(selection),\n theme: interactionTheme,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })));\n};\n\nconst mapStateToProps$b = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$b = dispatch => ({\n dispatchSetConfigurationThemeGeneralAction: theme => dispatch(actions.configuration.setConfigurationThemeGeneral(theme)),\n dispatchSetConfigurationThemeInteractionAction: theme => dispatch(actions.configuration.setConfigurationThemeInteraction(theme)),\n dispatchSetConfigurationLanguage: language => dispatch(actions.configuration.setConfigurationLanguage(language)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme))\n});\n\nconst ConnectedPluridMenuMoreGlobal = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b, null, {\n context: StateContext\n})(PluridMenuMoreGlobal);\n\nconst {inputs: {Switch: PluridSwitch$3}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTransform = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationSpaceTransformMultimode: dispatchToggleConfigurationSpaceTransformMultimode, dispatchSetConfigurationSpaceTransformTouch: dispatchSetConfigurationSpaceTransformTouch, dispatchSetConfigurationSpaceTransformLocks: dispatchSetConfigurationSpaceTransformLocks} = properties;\n const {transformMultimode: transformMultimode, transformLocks: transformLocks, transformTouch: transformTouch} = configuration.space;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformMultiModeTransform)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformMultimode,\n atChange: () => dispatchToggleConfigurationSpaceTransformMultimode(!transformMultimode),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationZ)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationZ,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationZ\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowScale)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.scale,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"scale\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformTouchTransform), \": \", transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? \"pan\" : \"swipe\"), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformTouch === pluridData.TRANSFORM_TOUCHES.PAN,\n atChange: () => transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.SWIPE) : dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.PAN),\n level: 2\n })));\n};\n\nconst mapStateToProps$a = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$a = dispatch => ({\n dispatchToggleConfigurationSpaceTransformMultimode: multimode => dispatch(actions.configuration.toggleConfigurationSpaceTransformMultimode(multimode)),\n dispatchSetConfigurationSpaceTransformTouch: touch => dispatch(actions.configuration.setConfigurationSpaceTransformTouch(touch)),\n dispatchSetConfigurationSpaceTransformLocks: lock => dispatch(actions.configuration.setConfigurationSpaceTransformLocks(lock))\n});\n\nconst ConnectedPluridMenuMoreTransform = reactRedux.connect(mapStateToProps$a, mapDispatchToProps$a, null, {\n context: StateContext\n})(PluridMenuMoreTransform);\n\nconst {inputs: {Dropdown: PluridDropdown, Switch: PluridSwitch$2, Slider: PluridSlider$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreSpace = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration, dispatchSetConfigurationPlaneOpacity: dispatchSetConfigurationPlaneOpacity, dispatchToggleConfigurationSpaceTransparentUI: dispatchToggleConfigurationSpaceTransparentUI, dispatchToggleConfigurationSpaceShowTransformOrigin: dispatchToggleConfigurationSpaceShowTransformOrigin, dispatchSetConfigurationSpaceTransformOriginSize: dispatchSetConfigurationSpaceTransformOriginSize, dispatchSetConfigurationSpaceLayoutType: dispatchSetConfigurationSpaceLayoutType} = properties;\n const {global: global, space: space, elements: elements} = configuration;\n const {transparentUI: transparentUI, language: language} = global;\n const {layout: layout, transformOrigin: transformOrigin} = space;\n const layoutType = pluridData.layoutNames[layout.type];\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n const planeOpacity = elements.plane.opacity;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransparentUserInterface), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: transparentUI,\n atChange: () => dispatchToggleConfigurationSpaceTransparentUI(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceShowTransformOrigin), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: showTransformOrigin,\n atChange: () => dispatchToggleConfigurationSpaceShowTransformOrigin(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransformOriginSize), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ \"small\", \"normal\", \"large\" ],\n selected: transformOriginSize.toLowerCase(),\n atSelect: selection => {\n const selected = selection.toUpperCase();\n if (selected === pluridData.SIZES.SMALL || selected === pluridData.SIZES.NORMAL || selected === pluridData.SIZES.LARGE) {\n dispatchSetConfigurationSpaceTransformOriginSize(selected);\n }\n },\n heightItems: 3,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpacePlaneOpacity), React__default[\"default\"].createElement(PluridSlider$1, {\n value: planeOpacity,\n max: 1,\n min: 0,\n step: .1,\n defaultValue: 100,\n atChange: value => dispatchSetConfigurationPlaneOpacity(value),\n thumbSize: \"large\",\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceLayoutType), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ ...Object.values(pluridData.layoutNames) ],\n selected: layoutType,\n atSelect: selection => {\n const selected = selection.toUpperCase().replace(/\\s/g, \"_\");\n dispatchSetConfigurationSpaceLayoutType(selected);\n },\n heightItems: 3,\n theme: interactionTheme,\n width: 100\n })));\n};\n\nconst mapStateToProps$9 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$9 = dispatch => ({\n dispatchSetConfigurationPlaneOpacity: value => dispatch(actions.configuration.setConfigurationPlaneOpacity(value)),\n dispatchToggleConfigurationSpaceTransparentUI: () => dispatch(actions.configuration.toggleConfigurationSpaceTransparentUI()),\n dispatchToggleConfigurationSpaceShowTransformOrigin: () => dispatch(actions.configuration.toggleConfigurationShowTransformOrigin()),\n dispatchSetConfigurationSpaceTransformOriginSize: size => dispatch(actions.configuration.setConfigurationSpaceTransformOriginSize(size)),\n dispatchSetConfigurationSpaceLayoutType: layoutType => dispatch(actions.configuration.setConfigurationSpaceLayout(layoutType))\n});\n\nconst ConnectedPluridMenuMoreSpace = reactRedux.connect(mapStateToProps$9, mapDispatchToProps$9, null, {\n context: StateContext\n})(PluridMenuMoreSpace);\n\nconst {inputs: {Switch: PluridSwitch$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreToolbar = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationToolbarConceal: dispatchToggleConfigurationToolbarConceal, dispatchToggleConfigurationToolbarTransformIcons: dispatchToggleConfigurationToolbarTransformIcons, dispatchToggleConfigurationToolbarTransformButtons: dispatchToggleConfigurationToolbarTransformButtons, dispatchToggleConfigurationToolbarOpaque: dispatchToggleConfigurationToolbarOpaque} = properties;\n const {toolbar: toolbar} = configuration.elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const [viewSizeSmall, setViewSizeSmall] = React.useState(false);\n React.useEffect((() => {\n if (viewSize.width < 800) {\n setViewSizeSmall(true);\n } else {\n setViewSizeSmall(false);\n }\n }), [ viewSize.width ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationToolbarOpaque(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformIcons)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformIcons,\n atChange: () => dispatchToggleConfigurationToolbarTransformIcons(),\n exclusive: true,\n level: 2\n })), !viewSizeSmall && React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformArrows)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformButtons,\n atChange: () => dispatchToggleConfigurationToolbarTransformButtons(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarConcealToolbar)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationToolbarConceal(),\n exclusive: true,\n level: 2\n })));\n};\n\nconst mapStateToProps$8 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps$8 = dispatch => ({\n dispatchToggleConfigurationToolbarConceal: () => dispatch(actions.configuration.toggleConfigurationToolbarConceal()),\n dispatchToggleConfigurationToolbarTransformIcons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformIcons()),\n dispatchToggleConfigurationToolbarTransformButtons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformButtons()),\n dispatchToggleConfigurationToolbarOpaque: () => dispatch(actions.configuration.toggleConfigurationToolbarOpaque())\n});\n\nconst ConnectedPluridMenuMoreToolbar = reactRedux.connect(mapStateToProps$8, mapDispatchToProps$8, null, {\n context: StateContext\n})(PluridMenuMoreToolbar);\n\nconst {inputs: {Switch: PluridSwitch}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreViewcube = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationViewcubeHide: dispatchToggleConfigurationViewcubeHide, dispatchToggleConfigurationViewcubeButtons: dispatchToggleConfigurationViewcubeButtons, dispatchToggleConfigurationViewcubeOpaque: dispatchToggleConfigurationViewcubeOpaque, dispatchToggleConfigurationViewcubeConceal: dispatchToggleConfigurationViewcubeConceal} = properties;\n const {viewcube: viewcube} = configuration.elements;\n const {show: show, buttons: buttons, opaque: opaque, conceal: conceal} = viewcube;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: !show ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: show,\n atChange: () => dispatchToggleConfigurationViewcubeHide(!show),\n exclusive: true,\n level: 2\n })), show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowTransformButtons)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: buttons,\n atChange: () => dispatchToggleConfigurationViewcubeButtons(!buttons),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationViewcubeOpaque(!opaque),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeConcealViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationViewcubeConceal(),\n exclusive: true,\n level: 2\n }))));\n};\n\nconst mapStateToProps$7 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$7 = dispatch => ({\n dispatchToggleConfigurationViewcubeHide: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeHide(toggle)),\n dispatchToggleConfigurationViewcubeButtons: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeButtons(toggle)),\n dispatchToggleConfigurationViewcubeOpaque: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeOpaque(toggle)),\n dispatchToggleConfigurationViewcubeConceal: () => dispatch(actions.configuration.toggleConfigurationViewcubeConceal())\n});\n\nconst ConnectedPluridMenuMoreViewcube = reactRedux.connect(mapStateToProps$7, mapDispatchToProps$7, null, {\n context: StateContext\n})(PluridMenuMoreViewcube);\n\nconst {inputs: {Slider: PluridSlider}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTechnical = properties => {\n const {stateLanguage: stateLanguage, stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, dispatchSetConfigurationSpaceCullingDistance: dispatchSetConfigurationSpaceCullingDistance} = properties;\n const {cullingDistance: cullingDistance} = stateConfiguration.space;\n const [localCullingDistance, setLocalCullingDistance] = React.useState(cullingDistance);\n const dispatchCullingDistanceUpdateFunction = value => {\n dispatchSetConfigurationSpaceCullingDistance(value);\n };\n const dispatchCullingDistanceUpdate = pluridFunctionsReact.useDebouncedCallback(dispatchCullingDistanceUpdateFunction, 300);\n const handleCullingDistance = value => {\n setLocalCullingDistance(value);\n dispatchCullingDistanceUpdate(value);\n };\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTechnicalCullingDistance)), React__default[\"default\"].createElement(PluridSlider, {\n theme: stateInteractionTheme,\n value: localCullingDistance,\n atChange: handleCullingDistance,\n min: 1e3,\n max: 5e3,\n defaultValue: 1500\n })));\n};\n\nconst mapStateToProps$6 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$6 = dispatch => ({\n dispatchSetConfigurationSpaceCullingDistance: value => dispatch(actions.configuration.setConfigurationSpaceCullingDistance(value))\n});\n\nconst ConnectedPluridMenuMoreTechnical = reactRedux.connect(mapStateToProps$6, mapDispatchToProps$6, null, {\n context: StateContext\n})(PluridMenuMoreTechnical);\n\nconst PluridMenuMoreShortcuts = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {language: language} = global;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridData.defaultShortcuts.map(((shortcut, index) => {\n const {type: type} = shortcut;\n const shortcutData = pluridData.shortcutsNames[type];\n const {name: name, internationalizedKey: internationalizedKey, key: key, modifier: modifier} = shortcutData;\n const modifierString = Array.isArray(modifier) ? modifier.reduce(((total, element) => total + \" + \" + element)) + \" +\" : typeof modifier === \"string\" ? modifier + \" +\" : \"\";\n const internationalizedName = pluridEngine.internatiolate(language, name);\n const keyAsAny = key;\n const keyName = internationalizedKey ? pluridEngine.internatiolate(language, keyAsAny) : key;\n const afterline = type === \"TURN_DOWN\" || type === \"TOGGLE_ROTATE\" || type === \"TOGGLE_TRANSLATE\" || type === \"TOGGLE_SCALE\";\n return React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n key: name,\n theme: interactionTheme,\n afterline: afterline,\n last: index === pluridData.defaultShortcuts.length - 1 ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, internationalizedName), React__default[\"default\"].createElement(\"div\", null, modifierString, \" \", keyName));\n })));\n};\n\nconst mapStateToProps$5 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$5 = dispatch => ({});\n\nconst ConnectedPluridMenuMoreShortcuts = reactRedux.connect(mapStateToProps$5, mapDispatchToProps$5, null, {\n context: StateContext\n})(PluridMenuMoreShortcuts);\n\nconst moreMenusRecord = {\n GLOBAL: {\n name: pluridData.internationalization.fields.toolbarDrawerGlobalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.GLOBAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreGlobal, null)\n },\n TRANSFORM: {\n name: pluridData.internationalization.fields.toolbarDrawerTransformTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TRANSFORM,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTransform, null)\n },\n SPACE: {\n name: pluridData.internationalization.fields.toolbarDrawerSpaceTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SPACE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreSpace, null)\n },\n TOOLBAR: {\n name: pluridData.internationalization.fields.toolbarDrawerToolbarTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TOOLBAR,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreToolbar, null)\n },\n VIEWCUBE: {\n name: pluridData.internationalization.fields.toolbarDrawerViewcubeTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.VIEWCUBE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreViewcube, null)\n },\n TECHNICAL: {\n name: pluridData.internationalization.fields.toolbarDrawerTechnicalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TECHNICAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTechnical, null)\n },\n SHORTCUTS: {\n name: pluridData.internationalization.fields.toolbarDrawerShortcutsTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SHORTCUTS,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreShortcuts, null)\n }\n};\n\nconst moreMenus = Object.values(moreMenusRecord);\n\nconst resolveMenus = drawers => {\n if (drawers.length === 0 || drawers.includes(\"ALL\")) {\n return moreMenus;\n }\n const resolvedMenus = [];\n for (const drawer of drawers) {\n const menu = moreMenusRecord[drawer];\n resolvedMenus.push(menu);\n }\n return resolvedMenus;\n};\n\nconst PluridMoreMenu = properties => {\n const {stateLanguage: stateLanguage, stateInteractionTheme: stateInteractionTheme, stateConfiguration: stateConfiguration, stateToolbarMenuScrollPosition: stateToolbarMenuScrollPosition, dispatchToggleConfigurationToolbarToggleDrawer: dispatchToggleConfigurationToolbarToggleDrawer, dispatchSetUIToolbarScrollPosition: dispatchSetUIToolbarScrollPosition} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {toolbar: toolbar} = elements;\n const {drawers: drawers, toggledDrawers: toggledDrawers} = toolbar;\n const menus = resolveMenus(drawers);\n const moreMenuScrollElement = React.useRef(null);\n const handleWheel = pluridFunctionsReact.useDebouncedCallback((_event => {\n if (moreMenuScrollElement.current) {\n const scrollPosition = moreMenuScrollElement.current.scrollTop;\n dispatchSetUIToolbarScrollPosition(scrollPosition);\n }\n }), 100);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.addEventListener(\"wheel\", handleWheel);\n }\n return () => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.removeEventListener(\"wheel\", handleWheel);\n }\n };\n }), [ moreMenuScrollElement.current ]);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.scrollTop = stateToolbarMenuScrollPosition;\n }\n }), [ stateToolbarMenuScrollPosition, moreMenuScrollElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridMoreMenu, {\n theme: stateInteractionTheme,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledPluridMoreMenuScroll, {\n ref: moreMenuScrollElement\n }, menus.map((moreMenu => {\n const {name: name, drawer: drawer, component: component} = moreMenu;\n const internationalizedName = pluridEngine.internatiolate(stateLanguage, name);\n return React__default[\"default\"].createElement(ConnectedPluridDrawer, {\n key: name,\n heading: internationalizedName,\n items: React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, component),\n toggled: toggledDrawers.includes(\"ALL\") || toggledDrawers.includes(drawer),\n toggle: () => dispatchToggleConfigurationToolbarToggleDrawer(drawer)\n });\n }))));\n};\n\nconst mapStateToProperties$d = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateToolbarMenuScrollPosition: selectors.ui.getToolbarScrollPosition(state)\n});\n\nconst mapDispatchToProperties$d = dispatch => ({\n dispatchToggleConfigurationToolbarToggleDrawer: drawer => dispatch(actions.configuration.toggleConfigurationToolbarToggleDrawer(drawer)),\n dispatchSetUIToolbarScrollPosition: value => dispatch(actions.ui.setUIToolbarScrollPosition(value))\n});\n\nconst ConnectedPluridMoreMenu = reactRedux.connect(mapStateToProperties$d, mapDispatchToProperties$d, null, {\n context: StateContext\n})(PluridMoreMenu);\n\nconst StyledPluridToolbarRotate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst StyledPluridTransformArrow = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n border-radius: 50px;\n width: 25px;\n height: 25px;\n display: grid;\n place-content: center;\n padding: 2px;\n\n background-color: ${({pressed: pressed, theme: theme}) => {\n if (pressed) {\n return theme.backgroundColorTertiary;\n }\n return \"initial\";\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst arrowSigns = {\n left: \"◀\",\n right: \"▶\",\n up: \"▲\",\n down: \"▼\"\n};\n\nconst events = \"tap press pressup\";\n\nconst PluridTransformArrow = properties => {\n const {direction: direction, transform: transform, interactionTheme: interactionTheme} = properties;\n const arrowSign = arrowSigns[direction] || \"\";\n const pressingInterval = React.useRef(null);\n const arrowElement = React.useRef(null);\n const [pressed, setPressed] = React.useState(false);\n const handleTouch = event => {\n const eventData = {\n altKey: event.srcEvent.altKey\n };\n switch (event.type) {\n case \"tap\":\n transform(eventData);\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n break;\n\n case \"press\":\n setPressed(true);\n pressingInterval.current = setInterval((() => {\n transform(eventData);\n }), 30);\n break;\n\n case \"pressup\":\n setPressed(false);\n if (pressingInterval.current) {\n clearInterval(pressingInterval.current);\n }\n break;\n }\n };\n const handleMouseLeave = () => {\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n };\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const loadTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n touch = new Hammer(arrowElement.current);\n touch.on(events, handleTouch);\n }));\n loadTouch();\n return () => {\n if (touch) {\n touch.off(events, handleTouch);\n }\n };\n }), [ arrowElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridTransformArrow, {\n ref: arrowElement,\n theme: interactionTheme,\n pressed: pressed,\n onMouseLeave: () => handleMouseLeave()\n }, arrowSign);\n};\n\nconst mapStateToProps$4 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$4 = dispatch => ({});\n\nconst ConnectedPluridTransformArrow = reactRedux.connect(mapStateToProps$4, mapDispatchToProps$4, null, {\n context: StateContext\n})(PluridTransformArrow);\n\nconst PluridToolbarRotate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, rotateUp: rotateUp, rotateDown: rotateDown, rotateLeft: rotateLeft, rotateRight: rotateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarRotate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => rotateRight()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => rotateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.ROTATION),\n active: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconRotate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformRotate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => rotateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => rotateLeft()\n })));\n};\n\nconst mapStateToProps$3 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$3 = dispatch => ({\n rotateUp: () => dispatch(actions.space.rotateUp()),\n rotateDown: () => dispatch(actions.space.rotateDown()),\n rotateLeft: () => dispatch(actions.space.rotateLeft()),\n rotateRight: () => dispatch(actions.space.rotateRight())\n});\n\nconst ConnectedPluridToolbarRotate = reactRedux.connect(mapStateToProps$3, mapDispatchToProps$3, null, {\n context: StateContext\n})(PluridToolbarRotate);\n\nconst StyledPluridToolbarScale = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 60px 30px\";\n}};\n`;\n\nconst PluridToolbarScale = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, scaleUp: scaleUp, scaleDown: scaleDown} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarScale, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => scaleUp()\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.SCALE),\n active: transformMode === pluridData.TRANSFORM_MODES.SCALE,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconScale, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformScale))), showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => scaleDown()\n }));\n};\n\nconst mapStateToProps$2 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$2 = dispatch => ({\n scaleUp: () => dispatch(actions.space.scaleUp()),\n scaleDown: () => dispatch(actions.space.scaleDown())\n});\n\nconst ConnectedPluridToolbarScale = reactRedux.connect(mapStateToProps$2, mapDispatchToProps$2, null, {\n context: StateContext\n})(PluridToolbarScale);\n\nconst StyledPluridToolbarTranslate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst PluridToolbarTranslate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, translateUp: translateUp, translateDown: translateDown, translateLeft: translateLeft, translateRight: translateRight, translateIn: translateIn, translateOut: translateOut} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => translateLeft()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: event => {\n if (event.altKey) {\n translateOut();\n } else {\n translateUp();\n }\n }\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.TRANSLATION),\n active: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconTranslate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformTranslate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: event => {\n if (event.altKey) {\n translateIn();\n } else {\n translateDown();\n }\n }\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => translateRight()\n })));\n};\n\nconst mapStateToProperties$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$c = dispatch => ({\n translateUp: () => dispatch(actions.space.translateUp()),\n translateDown: () => dispatch(actions.space.translateDown()),\n translateLeft: () => dispatch(actions.space.translateLeft()),\n translateRight: () => dispatch(actions.space.translateRight()),\n translateIn: () => dispatch(actions.space.translateIn()),\n translateOut: () => dispatch(actions.space.translateOut())\n});\n\nconst ConnectedPluridToolbarTranslate = reactRedux.connect(mapStateToProperties$c, mapDispatchToProperties$c, null, {\n context: StateContext\n})(PluridToolbarTranslate);\n\nconst PluridToolbar = properties => {\n const {theme: theme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationSpaceFirstPerson: dispatchToggleConfigurationSpaceFirstPerson, dispatchSetConfigurationSpaceTransformMode: dispatchSetConfigurationSpaceTransformMode} = properties;\n const {global: global, elements: elements, space: space} = configuration;\n const {transparentUI: transparentUI} = global;\n const {firstPerson: firstPerson, transformMode: transformMode, fadeInTime: fadeInTime} = space;\n const {toolbar: toolbar} = elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const showToolbar = toolbar.show;\n const menuTimeout = React.useRef(null);\n const [mouseIn, setMouseIn] = React.useState(false);\n const [showMenu, setShowMenu] = React.useState(MENUS.NONE);\n const [showIcons, setShowIcons] = React.useState(transformIcons);\n const [showTransformButtons, setShowTransformButtons] = React.useState(transformButtons);\n const [isMounted, setIsMounted] = React.useState(false);\n const toggleTransform = TYPE => {\n if (showMenu !== MENUS.NONE) {\n setShowMenu(MENUS.NONE);\n }\n dispatchSetConfigurationSpaceTransformMode(TYPE);\n };\n const handleShowMenu = menu => {\n if (showMenu === menu) {\n setShowMenu(MENUS.NONE);\n } else {\n dispatchSetConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ALL);\n setShowMenu(menu);\n }\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n React.useEffect((() => {\n if (viewSize.width < VIEW_SIZE_WIDTH_LIMIT) {\n if (transformButtons) {\n setShowTransformButtons(false);\n }\n }\n if (viewSize.width > VIEW_SIZE_WIDTH_LIMIT) {\n setShowTransformButtons(transformButtons);\n }\n }), [ viewSize.width ]);\n React.useEffect((() => {\n setShowIcons(transformIcons);\n setShowTransformButtons(transformButtons);\n }), [ transformIcons, transformButtons ]);\n React.useEffect((() => {\n if (mouseIn && menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n if (!mouseIn) {\n menuTimeout.current = setTimeout((() => {\n setShowMenu(MENUS.NONE);\n }), 400);\n }\n return () => {\n if (menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n };\n }), [ mouseIn ]);\n if (!showToolbar) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledToolbar, {\n onMouseEnter: () => setMouseIn(true),\n onMouseLeave: () => setMouseIn(false),\n mouseIn: mouseIn,\n conceal: conceal,\n showMenu: showMenu,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TOOLBAR\n }, React__default[\"default\"].createElement(StyledToolbarButtons, {\n theme: theme,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n documentsBased: false,\n mouseIn: mouseIn,\n opaque: opaque,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => dispatchToggleConfigurationSpaceFirstPerson(undefined),\n active: firstPerson,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconFirstPerson, null))), React__default[\"default\"].createElement(ConnectedPluridToolbarRotate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarScale, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => handleShowMenu(MENUS.MORE),\n active: showMenu === MENUS.MORE,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconMore, null)))), showMenu === MENUS.UNIVERSES && React__default[\"default\"].createElement(ConnectedPluridMenuUniverses, null), showMenu === MENUS.MORE && React__default[\"default\"].createElement(ConnectedPluridMoreMenu, null));\n};\n\nconst mapStateToProperties$b = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n theme: selectors.themes.getInteractionTheme(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$b = dispatch => ({\n dispatchToggleConfigurationSpaceFirstPerson: () => dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson()),\n dispatchSetConfigurationSpaceTransformMode: mode => dispatch(actions.configuration.setConfigurationSpaceTransformMode(mode))\n});\n\nconst ConnectedPluridToolbar = reactRedux.connect(mapStateToProperties$b, mapDispatchToProperties$b, null, {\n context: StateContext\n})(PluridToolbar);\n\nconst StyledPluridViewcube = styled__default[\"default\"].div`\n position: absolute;\n @media (max-width: 800px) {\n top: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n }\n bottom: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n right: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-100px\";\n }\n return \"0\";\n}};\n position: absolute;\n user-select: none;\n transition: all 300ms ease-in-out;\n z-index: 9998;\n height: 175px;\n display: grid;\n grid-template-areas: \"PVScale PVScale PVScale PVScale\"\n \"PVEmptyOne PVRotateUp PVEmptyTwo PVTranslateY\"\n \"PVRotateLeft PVModel PVRotateRight PVTranslateY\"\n \"PVEmptyThree PVRotateDown PVFitview PVTranslateY\"\n \"PVTranslateX PVTranslateX PVTranslateX PVTranslateX\";\n grid-template-rows: 20px 15px 105px 15px 20px;\n grid-template-columns: 15px 100px 15px 20px;\n\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n :hover {\n opacity: 1;\n }\n`;\n\nconst StyledPluridViewcubeArrow = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n\n /* TODO\n * Themed color\n */\n color: white;\n`;\n\nconst StyledPluridViewcubeArrowIcon = styled__default[\"default\"].div`\n user-select: none;\n font-size: 0.6rem;\n width: 1.2rem;\n height: 1.2rem;\n border-radius: 0.6rem;\n display: grid;\n place-content: center;\n cursor: pointer;\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledFitView = styled__default[\"default\"].div`\n grid-area: PVFitview;\n display: grid;\n place-content: center;\n cursor: pointer;\n user-select: none;\n\n svg {\n height: 0.8rem;\n width: 0.8rem;\n fill: white;\n }\n`;\n\nconst StyledPluridViewcubeFace = styled__default[\"default\"].div`\n font-size: 0.6rem;\n position: absolute;\n height: 50px;\n width: 50px;\n pointer-events: none;\n display: grid;\n transform-style: preserve-3d;\n grid-template-areas: \"PVFTopLeft PVFTopCenter PVFTopRight\"\n \"PVFMiddleLeft PVFMiddleCenter PVFMiddleRight\"\n \"PVFBottomLeft PVFBottomCenter PVFBottomRight\";\n grid-template-rows: 10px 30px 10px;\n grid-template-columns: 10px 30px 10px;\n box-sizing: content-box;\n transition: all 300ms linear;\n\n border: 1px solid ${({mouseOver: mouseOver, theme: theme}) => {\n if (mouseOver) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({face: face, theme: theme}) => {\n if (face === \"base\") {\n return \"0px 0px 12px 2px \" + theme.boxShadowPenumbraColor;\n }\n return \"\";\n}};\n opacity: ${({opaque: opaque, mouseOver: mouseOver}) => {\n if (!opaque) {\n if (mouseOver) {\n return \"0.8\";\n }\n if (!mouseOver) {\n return \"0.4\";\n }\n }\n return \"1\";\n}};\n transform: ${({face: face}) => {\n switch (face) {\n case \"front\":\n return \"translateZ(25px) rotateY(0deg)\";\n\n case \"back\":\n return \"translateZ(-25px) rotateY(-180deg)\";\n\n case \"left\":\n return \"translateX(-25px) rotateY(-90deg)\";\n\n case \"right\":\n return \"translateX(25px) rotateY(90deg)\";\n\n case \"top\":\n return \"translateY(-25px) rotateX(90deg)\";\n\n case \"base\":\n return \"translateY(25px) rotateX(-90deg)\";\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridViewcubeFaceZone = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n cursor: pointer;\n pointer-events: all;\n\n grid-area: ${({type: type}) => `PVF${type}`};\n color: ${({theme: theme, hovered: hovered}) => {\n if (hovered) {\n return theme.colorPrimary;\n }\n return theme.colorSecondary;\n}};\n background-color: ${({theme: theme, transparentUI: transparentUI, hovered: hovered, active: active}) => {\n if (transparentUI && !hovered) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (active) {\n return theme.backgroundColorTertiary;\n }\n if (hovered) {\n return theme.backgroundColorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n border: 1px solid ${({theme: theme, transparentUI: transparentUI, hovered: hovered}) => {\n if (transparentUI && !hovered) {\n return \"transparent\";\n }\n if (hovered) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst faceTypes = {\n topLeft: \"TopLeft\",\n topCenter: \"TopCenter\",\n topRight: \"TopRight\",\n middleLeft: \"MiddleLeft\",\n middleCenter: \"MiddleCenter\",\n middleRight: \"MiddleRight\",\n bottomLeft: \"BottomLeft\",\n bottomCenter: \"BottomCenter\",\n bottomRight: \"BottomRight\"\n};\n\nconst zoneCodes = {\n frontTopLeft: \"A1\",\n frontTopCenter: \"A2\",\n frontTopRight: \"A3\",\n frontMiddleLeft: \"B1\",\n frontMiddleCenter: \"B2\",\n frontMiddleRight: \"B3\",\n frontBottomLeft: \"C1\",\n frontBottomCenter: \"C2\",\n frontBottomRight: \"C3\",\n rightTopLeft: \"A3\",\n rightTopCenter: \"A4\",\n rightTopRight: \"A5\",\n rightMiddleLeft: \"B3\",\n rightMiddleCenter: \"B4\",\n rightMiddleRight: \"B5\",\n rightBottomLeft: \"C3\",\n rightBottomCenter: \"C4\",\n rightBottomRight: \"C5\",\n backTopLeft: \"A5\",\n backTopCenter: \"A6\",\n backTopRight: \"A7\",\n backMiddleLeft: \"B5\",\n backMiddleCenter: \"B6\",\n backMiddleRight: \"B7\",\n backBottomLeft: \"C5\",\n backBottomCenter: \"C6\",\n backBottomRight: \"C7\",\n leftTopLeft: \"A7\",\n leftTopCenter: \"A8\",\n leftTopRight: \"A1\",\n leftMiddleLeft: \"B7\",\n leftMiddleCenter: \"B8\",\n leftMiddleRight: \"B1\",\n leftBottomLeft: \"C7\",\n leftBottomCenter: \"C8\",\n leftBottomRight: \"C1\",\n topTopLeft: \"A7\",\n topTopCenter: \"A6\",\n topTopRight: \"A5\",\n topMiddleLeft: \"A8\",\n topMiddleCenter: \"D1\",\n topMiddleRight: \"A4\",\n topBottomLeft: \"A1\",\n topBottomCenter: \"A2\",\n topBottomRight: \"A3\",\n baseTopLeft: \"C1\",\n baseTopCenter: \"C2\",\n baseTopRight: \"C3\",\n baseMiddleLeft: \"C8\",\n baseMiddleCenter: \"E1\",\n baseMiddleRight: \"C4\",\n baseBottomLeft: \"C7\",\n baseBottomCenter: \"C6\",\n baseBottomRight: \"C5\"\n};\n\nconst faceTransform = {\n A1: {\n rotateX: -45,\n rotateY: 45\n },\n A2: {\n rotateX: -45,\n rotateY: 0\n },\n A3: {\n rotateX: -45,\n rotateY: -45\n },\n B1: {\n rotateX: 0,\n rotateY: 45\n },\n B2: {\n rotateX: 0,\n rotateY: 0\n },\n B3: {\n rotateX: 0,\n rotateY: -45\n },\n C1: {\n rotateX: 45,\n rotateY: 45\n },\n C2: {\n rotateX: 45,\n rotateY: 0\n },\n C3: {\n rotateX: 45,\n rotateY: -45\n },\n A4: {\n rotateX: -45,\n rotateY: 270.1\n },\n A5: {\n rotateX: -45,\n rotateY: 225\n },\n B4: {\n rotateX: 0,\n rotateY: 270.1\n },\n B5: {\n rotateX: 0,\n rotateY: 225\n },\n C4: {\n rotateX: 45,\n rotateY: 270.1\n },\n C5: {\n rotateX: 45,\n rotateY: 225\n },\n A6: {\n rotateX: -45,\n rotateY: 180\n },\n A7: {\n rotateX: -45,\n rotateY: 135\n },\n B6: {\n rotateX: 0,\n rotateY: 180.1\n },\n B7: {\n rotateX: 0,\n rotateY: 135\n },\n C6: {\n rotateX: 45,\n rotateY: 180.1\n },\n C7: {\n rotateX: 45,\n rotateY: 135\n },\n A8: {\n rotateX: -45,\n rotateY: 90.1\n },\n B8: {\n rotateX: 0,\n rotateY: 90.1\n },\n C8: {\n rotateX: 45,\n rotateY: 90.1\n },\n D1: {\n rotateX: -90.1,\n rotateY: 0\n },\n E1: {\n rotateX: 90.1,\n rotateY: 0\n }\n};\n\nconst PluridViewcubeFace = properties => {\n const {face: face, faceText: faceText, mouseOver: mouseOver, hoveredZone: hoveredZone, setHoveredZone: setHoveredZone, activeZone: activeZone, setActiveZone: setActiveZone, generalTheme: generalTheme, interactionTheme: interactionTheme, configuration: configuration, dispatchRotateX: dispatchRotateX, dispatchRotateY: dispatchRotateY, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const opaqueFace = elements.viewcube.opaque;\n const handleClick = type => {\n const faceType = `${face}${type}`;\n const zoneCode = zoneCodes[faceType];\n const transform = faceTransform[zoneCode];\n setActiveZone(zoneCode);\n dispatchSetAnimatedTransform(true);\n dispatchRotateX(transform.rotateX);\n dispatchRotateY(transform.rotateY);\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n return React__default[\"default\"].createElement(StyledPluridViewcubeFace, {\n theme: generalTheme,\n face: face,\n opaque: opaqueFace,\n mouseOver: mouseOver\n }, React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n onClick: () => handleClick(faceTypes.topLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n onClick: () => handleClick(faceTypes.topCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.topRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topRight}`],\n onClick: () => handleClick(faceTypes.topRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n onClick: () => handleClick(faceTypes.middleLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n onClick: () => handleClick(faceTypes.middleCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleCenter}`]),\n transparentUI: transparentUI\n }, faceText), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n onClick: () => handleClick(faceTypes.middleRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n onClick: () => handleClick(faceTypes.bottomLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n onClick: () => handleClick(faceTypes.bottomCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n onClick: () => handleClick(faceTypes.bottomRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomRight}`]),\n transparentUI: transparentUI\n }));\n};\n\nconst mapStateToProperties$a = state => ({\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$a = dispatch => ({\n dispatchRotateX: angleX => dispatch(actions.space.rotateX(angleX)),\n dispatchRotateY: angleY => dispatch(actions.space.rotateY(angleY)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated))\n});\n\nconst ConnectedPluridViewcubeFace = reactRedux.connect(mapStateToProperties$a, mapDispatchToProperties$a, null, {\n context: StateContext\n})(PluridViewcubeFace);\n\nconst StyledPluridViewcubeModel = styled__default[\"default\"].div`\n grid-area: PVModel;\n margin-left: -7px;\n margin-top: 5px;\n`;\n\nconst StyledPluridViewcubeModelContainer = styled__default[\"default\"].div`\n perspective: 2000px;\n perspective-origin: 50% 50%;\n`;\n\nconst StyledPluridViewcubeModelCube = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n width: 50px;\n height: 50px;\n`;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix, rotateMatrix: rotateMatrix, multiplyArrayOfMatrices: multiplyArrayOfMatrices, scaleMatrix: scaleMatrix, translateMatrix: translateMatrix} = pluridEngine.interaction.matrix;\n\nconst {degToRad: degToRad} = pluridEngine.interaction.quaternion;\n\nconst PluridViewcubeModel = properties => {\n const {mouseOver: mouseOver, stateLanguage: stateLanguage, spaceRotationX: spaceRotationX, spaceRotationY: spaceRotationY, stateAnimatedTransform: stateAnimatedTransform, stateTransformTime: stateTransformTime} = properties;\n const [hoveredZone, setHoveredZone] = React.useState(\"\");\n const [activeZone, setActiveZone] = React.useState(\"\");\n const handleMouseLeave = () => {\n setHoveredZone(\"\");\n };\n const computeTransform = () => {\n const offsets = {\n x: 32,\n y: 23,\n z: 0\n };\n const transformOrigins = {\n x: 0,\n y: 0,\n z: 0\n };\n const scale = 1;\n const rotationMatrix = rotateMatrix(degToRad(-spaceRotationX), degToRad(-spaceRotationY));\n const translationMatrix = translateMatrix(offsets.x, offsets.y, offsets.z);\n const scalationMatrix = scaleMatrix(scale);\n const transformMatrix = multiplyArrayOfMatrices([ translationMatrix, multiplyArrayOfMatrices([ translateMatrix(transformOrigins.x, transformOrigins.y, transformOrigins.z), rotationMatrix, translateMatrix(-transformOrigins.x, -transformOrigins.y, -transformOrigins.z) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix(transformMatrix);\n return transform;\n };\n React.useEffect((() => {\n if (!hoveredZone) {\n setActiveZone(\"\");\n }\n }), [ spaceRotationX, spaceRotationY ]);\n const transform = computeTransform();\n return React__default[\"default\"].createElement(StyledPluridViewcubeModel, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelContainer, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelCube, {\n suppressHydrationWarning: true,\n style: {\n transform: transform,\n transition: mouseOver || stateAnimatedTransform ? `transform ${stateTransformTime}ms ease-in-out` : \"\"\n },\n onMouseLeave: () => handleMouseLeave()\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"front\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeFront),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"back\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBack),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"left\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeLeft),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"right\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeRight),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"top\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeTop),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"base\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBase),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }))));\n};\n\nconst mapStateToProperties$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n spaceRotationX: selectors.space.getRotationX(state),\n spaceRotationY: selectors.space.getRotationY(state),\n stateAnimatedTransform: selectors.space.getAnimatedTransform(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$9 = dispatch => ({});\n\nconst ConnectedPluridViewcubeModel = reactRedux.connect(mapStateToProperties$9, mapDispatchToProperties$9, null, {\n context: StateContext\n})(PluridViewcubeModel);\n\nconst PluridViewcube = properties => {\n const {stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, stateTransformTime: stateTransformTime, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateYWith: dispatchRotateYWith, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSpaceResetTransform: dispatchSpaceResetTransform} = properties;\n const {elements: elements, space: space} = stateConfiguration;\n const {viewcube: viewcube} = elements;\n const {buttons: buttons, conceal: conceal} = viewcube;\n const {fadeInTime: fadeInTime} = space;\n const showViewcube = viewcube.show;\n const [mouseOver, setMouseOver] = React.useState(false);\n const [isMounted, setIsMounted] = React.useState(false);\n const animatedRotate = (type, value) => {\n dispatchSetAnimatedTransform(true);\n switch (type) {\n case \"rotateX\":\n dispatchRotateXWith(value);\n break;\n\n case \"rotateY\":\n dispatchRotateYWith(value);\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n const animatedReset = event => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n dispatchSetAnimatedTransform(true);\n dispatchSpaceResetTransform();\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n if (!showViewcube) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridViewcube, {\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseMove: () => !mouseOver ? setMouseOver(true) : null,\n conceal: conceal,\n mouseOver: mouseOver,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEWCUBE\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeModel, {\n mouseOver: mouseOver\n }), mouseOver && buttons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n style: {\n gridArea: \"PVRotateUp\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", -90.1)\n }, \"▲\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateDown\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", 90.1)\n }, \"▼\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateLeft\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", 90.1)\n }, \"◀\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateRight\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", -90.1)\n }, \"▶\")), React__default[\"default\"].createElement(StyledFitView, {\n onClick: animatedReset\n }, React__default[\"default\"].createElement(pluridIconsReact.PluridIconGlobal, null))));\n};\n\nconst mapStateToProperties$8 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$8 = dispatch => ({\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSpaceResetTransform: () => dispatch(actions.space.spaceResetTransform())\n});\n\nconst ConnectedPluridViewcube = reactRedux.connect(mapStateToProperties$8, mapDispatchToProperties$8, null, {\n context: StateContext\n})(PluridViewcube);\n\nconst PluridViewContainer = _properties => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridSpace, null), React__default[\"default\"].createElement(ConnectedOrigin, null), React__default[\"default\"].createElement(ConnectedPluridToolbar, null), React__default[\"default\"].createElement(ConnectedPluridViewcube, null));\n\nconst PluridView = properties => {\n const {planesRegistrar: planesRegistrar, customPlane: customPlane, planeContext: planeContext, planeContextValue: planeContextValue, pubsub: pubsub, planeNotFound: planeNotFound, planeRenderError: planeRenderError, matchedRoute: matchedRoute, hostname: hostname, state: state, stateConfiguration: stateConfiguration, stateTransform: stateTransform, stateSpaceView: stateSpaceView, stateTree: stateTree, stateGeneralTheme: stateGeneralTheme, dispatch: dispatch, dispatchSetConfiguration: dispatchSetConfiguration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetSpaceField: dispatchSetSpaceField, dispatchSetSpaceLocation: dispatchSetSpaceLocation, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransformTime: dispatchSetTransformTime, dispatchSetTree: dispatchSetTree, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateX: dispatchRotateX, dispatchRotateYWith: dispatchRotateYWith, dispatchRotateY: dispatchRotateY, dispatchTranslateXWith: dispatchTranslateXWith, dispatchTranslateYWith: dispatchTranslateYWith, dispatchTranslateZWith: dispatchTranslateZWith, dispatchScaleUpWith: dispatchScaleUpWith, dispatchScaleDownWith: dispatchScaleDownWith, dispatchSpaceSetViewSize: dispatchSpaceSetViewSize, dispatchSpaceSetView: dispatchSpaceSetView} = properties;\n const viewElement = React.useRef(null);\n const scrollTimeout = React.useRef();\n const [pluridPubSub, setPluridPubSub] = React.useState(pubsub ? [ pubsub ] : [ new PluridPubSub__default[\"default\"] ]);\n const [preventOverscroll, setPreventOverscroll] = React.useState(false);\n const handlePreventOverscroll = event => {\n if (event.shiftKey || event.altKey || event.metaKey || event.ctrlKey) {\n setPreventOverscroll(true);\n }\n clearTimeout(scrollTimeout.current);\n scrollTimeout.current = setTimeout((() => {\n setPreventOverscroll(false);\n }), pluridData.PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT);\n };\n const shortcutsCallback = React.useCallback((event => {\n const {transformLocks: transformLocks} = stateConfiguration.space;\n handleGlobalShortcuts(dispatch, state, pluridPubSub[0], event, stateConfiguration.space.firstPerson, transformLocks);\n }), [ JSON.stringify(state), stateConfiguration.space.firstPerson, stateConfiguration.space.transformLocks, dispatch ]);\n const wheelCallback = React.useCallback((event => {\n handlePreventOverscroll(event);\n const {transformMode: transformMode, transformLocks: transformLocks} = stateConfiguration.space;\n const transformModes = {\n rotation: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n translation: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n scale: transformMode === pluridData.TRANSFORM_MODES.SCALE\n };\n handleGlobalWheel(dispatch, event, transformModes, transformLocks);\n }), [ dispatch, stateConfiguration.space.transformMode, stateConfiguration.space.transformLocks ]);\n const treeUpdate = (view, configuration = stateConfiguration) => {\n const planes = getRegisteredPlanes(planesRegistrar);\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: planes,\n configuration: configuration,\n view: view\n }, hostname);\n const computedTree = spaceTree.compute();\n for (const statePlane of stateTree) {\n for (const [index, computedPlane] of computedTree.entries()) {\n if (statePlane.route === computedPlane.route && pluridFunctions.objects.equals(statePlane.location, computedPlane.location)) {\n computedPlane.planeID = statePlane.planeID;\n if (statePlane.children) {\n computedTree[index].children = statePlane.children;\n }\n }\n }\n }\n dispatchSetTree(computedTree);\n };\n const treeUpdateCallback = React.useCallback((() => {\n treeUpdate(stateSpaceView);\n }), [ hostname, stateSpaceView, stateConfiguration, JSON.stringify(stateTree) ]);\n const handlePubSubSubscribe = pubsub => {\n const subscriptions = [ {\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n callback: data => {\n if (data.internal) {\n return;\n }\n const computedConfiguration = pluridEngine.general.configuration.merge(data, stateConfiguration);\n if (typeof computedConfiguration.global.theme === \"object\") {\n if (typeof computedConfiguration.global.theme.general === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme.general]);\n } else {\n dispatchSetGeneralTheme(computedConfiguration.global.theme.general);\n }\n if (typeof computedConfiguration.global.theme.interaction === \"string\") {\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme.interaction]);\n } else {\n dispatchSetInteractionTheme(computedConfiguration.global.theme.interaction);\n }\n } else if (typeof computedConfiguration.global.theme === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n }\n dispatchSetConfiguration(computedConfiguration);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n callback: data => {\n const {value: value, internal: internal} = data;\n if (internal) {\n return;\n }\n dispatchSetSpaceLocation(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM,\n callback: data => {\n const {value: value} = data;\n dispatchSetAnimatedTransform(value.active);\n if (value.time) {\n dispatchSetTransformTime(value.time);\n } else {\n dispatchSetTransformTime(450);\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateXWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateX(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateYWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateY(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateXWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateYWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Z_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateZWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Z_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = [ ...stateSpaceView, plane ];\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES,\n callback: data => {\n const {view: view} = data;\n dispatchSpaceSetView([ ...view ]);\n treeUpdate(view);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = stateSpaceView.filter((view => {\n if (typeof view === \"string\") {\n return view === plane;\n }\n return true;\n }));\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NAVIGATE_TO_PLANE,\n callback: data => {\n const {id: id} = data;\n const plane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, id);\n navigateToPluridPlane(dispatch, plane);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n callback: data => {\n const {id: id} = data;\n if (typeof id !== \"string\") {\n return;\n }\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: id\n });\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE,\n callback: () => {\n const treePlane = stateTree.find((plane => plane.planeID === state.space.lastClosedPlane));\n if (treePlane) {\n const forceShow = true;\n const {updatedTree: updatedTree} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, treePlane.planeID, forceShow);\n dispatchSetTree(updatedTree);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: \"\"\n });\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n callback: data => {\n const {id: id} = data;\n const treePlane = stateTree.find((plane => plane.planeID === id));\n if (treePlane) {\n const forceShow = false;\n const {updatedTree: updatedTree} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, treePlane.planeID, forceShow);\n dispatchSetTree(updatedTree);\n setTimeout((() => {\n dispatchSetTree(updatedTree);\n }), 50);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: id\n });\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.PREVIOUS_ROOT,\n callback: () => {\n focusPreviousRoot(dispatch, state);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NEXT_ROOT,\n callback: () => {\n focusNextRoot(dispatch, state);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NAVIGATE_TO_ROOT,\n callback: data => {\n const index = data.index;\n if (typeof index !== \"undefined\") {\n focusRootIndex(dispatch, state, index);\n return;\n }\n const id = data.id;\n focusRootID(dispatch, state, id);\n }\n } ];\n const indexes = [];\n for (const subscription of subscriptions) {\n const index = pubsub.subscribe(subscription);\n indexes.push(index);\n }\n return () => {\n for (const index of indexes) {\n pubsub.unsubscribe(index);\n }\n };\n };\n const handlePubSubPublish = pubsub => {\n const internalTransform = {\n value: Object.assign({}, stateTransform),\n internal: true\n };\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n data: internalTransform\n });\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n data: Object.assign(Object.assign({}, stateConfiguration), {\n internal: true\n })\n });\n };\n const registerPubSub = pubsub => {\n const pluridPubSubs = [ ...pluridPubSub, pubsub ];\n setPluridPubSub(pluridPubSubs);\n };\n const handleSwipe = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const {altKey: altKey} = event.srcEvent;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n useAnimatedTransform(dispatch);\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * distance);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(distance);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(-1 * distance);\n } else {\n dispatchTranslateYWith(-1 * distance);\n }\n }\n if (scalationMode) {\n dispatchScaleUpWith(velocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(distance);\n } else {\n dispatchTranslateYWith(distance);\n }\n }\n if (scalationMode) {\n dispatchScaleDownWith(velocity);\n }\n break;\n }\n };\n const handlePan = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const {altKey: altKey} = event.srcEvent;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n const rotationVelocity = velocity * 20;\n const translationVelocity = distance / 5;\n const scaleVelocity = velocity / 4;\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * translationVelocity);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(translationVelocity);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(-1 * translationVelocity);\n } else {\n dispatchTranslateYWith(-1 * translationVelocity);\n }\n }\n if (scalationMode) {\n dispatchScaleUpWith(scaleVelocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(translationVelocity);\n } else {\n dispatchTranslateYWith(translationVelocity);\n }\n }\n if (scalationMode) {\n dispatchScaleDownWith(scaleVelocity);\n }\n break;\n }\n };\n const handlePinch = (event, type) => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode !== \"TRANSLATION\") {\n return;\n }\n const direction = type === \"in\" ? 1 : -1;\n const velocity = direction * 20;\n dispatchTranslateZWith(velocity);\n };\n const handlePinchin = event => {\n handlePinch(event, \"in\");\n };\n const handlePinchout = event => {\n handlePinch(event, \"out\");\n };\n React.useEffect((() => {\n if (viewElement.current) {\n viewElement.current.addEventListener(\"keydown\", shortcutsCallback, {\n passive: false\n });\n viewElement.current.addEventListener(\"wheel\", wheelCallback, {\n passive: false\n });\n }\n return () => {\n if (viewElement.current) {\n viewElement.current.removeEventListener(\"keydown\", shortcutsCallback);\n viewElement.current.removeEventListener(\"wheel\", wheelCallback);\n }\n };\n }), [ JSON.stringify(state), viewElement.current, stateConfiguration.space.transformMode, stateConfiguration.space.firstPerson ]);\n React.useEffect((() => {\n const handleResize = pluridFunctions.meta.debounce((() => {\n if (viewElement && viewElement.current) {\n const width = viewElement.current.offsetWidth;\n const height = viewElement.current.offsetHeight;\n dispatchSpaceSetViewSize({\n width: width,\n height: height\n });\n }\n }), pluridData.PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME);\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }), []);\n React.useEffect((() => {\n window.addEventListener(\"resize\", treeUpdateCallback);\n return () => {\n window.removeEventListener(\"resize\", treeUpdateCallback);\n };\n }), [ stateSpaceView, stateConfiguration, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const handleTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n const {transformTouch: transformTouch} = stateConfiguration.space;\n delete Hammer.defaults.cssProps.userSelect;\n delete Hammer.defaults.cssProps.userDrag;\n delete Hammer.defaults.cssProps.tapHighlightColor;\n delete Hammer.defaults.cssProps.touchSelect;\n if (!viewElement.current) {\n return;\n }\n touch = new Hammer(viewElement.current);\n touch.get(\"pan\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"swipe\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"pinch\").set({\n enable: true\n });\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.on(\"pan\", handlePan);\n } else {\n touch.on(\"swipe\", handleSwipe);\n }\n touch.on(\"pinchin\", handlePinchin);\n touch.on(\"pinchout\", handlePinchout);\n }));\n handleTouch();\n return () => {\n if (!touch) {\n return;\n }\n const {transformTouch: transformTouch} = stateConfiguration.space;\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.off(\"pan\", handlePan);\n } else {\n touch.off(\"swipe\", handleSwipe);\n }\n touch.off(\"pinchin\", handlePinchin);\n touch.off(\"pinchout\", handlePinchout);\n };\n }), [ viewElement.current, stateConfiguration.space.transformTouch, stateConfiguration.space.transformMode ]);\n React.useEffect((() => {\n const handleGamepadConnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n const handleGamepadDisconnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n window.addEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.addEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n return () => {\n window.removeEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.removeEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n };\n }), []);\n React.useEffect((() => {\n const unsubscribers = [];\n for (const pubsub of pluridPubSub) {\n const unsubscriber = handlePubSubSubscribe(pubsub);\n unsubscribers.push(unsubscriber);\n }\n return () => {\n for (const unsubscriber of unsubscribers) {\n unsubscriber();\n }\n };\n }), [ state.space.lastClosedPlane, pluridPubSub.length, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n for (const pubsub of pluridPubSub) {\n handlePubSubPublish(pubsub);\n }\n }), [ pluridPubSub.length, stateConfiguration, stateTransform ]);\n React.useEffect((() => {\n treeUpdateCallback();\n }), []);\n const pluridContext = {\n planesRegistrar: planesRegistrar,\n planeContext: planeContext,\n planeContextValue: planeContextValue,\n customPlane: customPlane,\n planeNotFound: planeNotFound,\n planeRenderError: planeRenderError,\n matchedRoute: matchedRoute,\n hostname: hostname,\n defaultPubSub: pluridPubSub[0],\n registerPubSub: registerPubSub\n };\n return React__default[\"default\"].createElement(StyledView, {\n ref: viewElement,\n tabIndex: 0,\n transformMode: stateConfiguration.space.transformMode,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEW\n }, React__default[\"default\"].createElement(GlobalStyle, {\n theme: stateGeneralTheme,\n preventOverscroll: preventOverscroll\n }), React__default[\"default\"].createElement(Context.Provider, {\n value: pluridContext\n }, stateSpaceView.length !== 0 ? React__default[\"default\"].createElement(PluridViewContainer, null) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null)));\n};\n\nconst mapStateToProperties$7 = state => ({\n state: state,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateTransform: selectors.space.getTransform(state),\n stateTree: selectors.space.getTree(state),\n stateSpaceLoading: selectors.space.getLoading(state),\n stateSpaceView: selectors.space.getView(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$7 = dispatch => ({\n dispatch: dispatch,\n dispatchSetConfiguration: payload => dispatch(actions.configuration.setConfiguration(payload)),\n dispatchSetConfigurationMicro: () => dispatch(actions.configuration.setConfigurationMicro()),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchSpaceSetViewSize: payload => dispatch(actions.space.setViewSize(payload)),\n dispatchSetSpaceLoading: payload => dispatch(actions.space.setSpaceLoading(payload)),\n dispatchSetAnimatedTransform: payload => dispatch(actions.space.setAnimatedTransform(payload)),\n dispatchSetTransformTime: payload => dispatch(actions.space.setTransformTime(payload)),\n dispatchSetSpaceLocation: payload => dispatch(actions.space.setSpaceLocation(payload)),\n dispatchSetTree: payload => dispatch(actions.space.setTree(payload)),\n dispatchSetGeneralTheme: payload => dispatch(actions.themes.setGeneralTheme(payload)),\n dispatchSetInteractionTheme: payload => dispatch(actions.themes.setInteractionTheme(payload)),\n dispatchRotateX: payload => dispatch(actions.space.rotateX(payload)),\n dispatchRotateXWith: payload => dispatch(actions.space.rotateXWith(payload)),\n dispatchRotateY: payload => dispatch(actions.space.rotateY(payload)),\n dispatchRotateYWith: payload => dispatch(actions.space.rotateYWith(payload)),\n dispatchTranslateXWith: payload => dispatch(actions.space.translateXWith(payload)),\n dispatchTranslateYWith: payload => dispatch(actions.space.translateYWith(payload)),\n dispatchTranslateZWith: payload => dispatch(actions.space.translateZWith(payload)),\n dispatchScaleUpWith: payload => dispatch(actions.space.scaleUpWith(payload)),\n dispatchScaleDownWith: payload => dispatch(actions.space.scaleDownWith(payload)),\n dispatchSpaceSetView: payload => dispatch(actions.space.spaceSetView(payload))\n});\n\nconst ConnectedPluridView = reactRedux.connect(mapStateToProperties$7, mapDispatchToProperties$7, null, {\n context: StateContext\n})(PluridView);\n\nclass PluridApplication extends React.Component {\n constructor(properties, context) {\n super(properties);\n this.storeID = properties.id || \"default\";\n this.context = context;\n const defaultStore = this.computeStore();\n this.store = store(defaultStore);\n this.subscribeStore();\n }\n componentDidUpdate() {\n const updatedStore = this.computeStore();\n this.store.dispatch({\n type: \"SET_STATE\",\n payload: updatedStore\n });\n }\n componentWillUnmount() {\n if (this.storeUnubscriber) {\n this.storeUnubscriber();\n }\n }\n render() {\n return React__default[\"default\"].createElement(reactRedux.Provider, {\n store: this.store,\n context: StateContext\n }, React__default[\"default\"].createElement(ConnectedPluridView, Object.assign({}, this.props)));\n }\n computeStore() {\n const {view: view, planes: planes, configuration: configuration, precomputedState: precomputedState, planesRegistrar: planesRegistrar, useLocalStorage: useLocalStorage, hostname: hostname, space: space} = this.props;\n registerPlanes(planes, planesRegistrar, hostname);\n const currentState = this.store ? this.store.getState() : undefined;\n const localState = pluridEngine.state.local.load(this.storeID, useLocalStorage);\n const contextState = loadStateFromContext(this.context, space);\n const store = pluridEngine.state.compute(view, configuration, planesRegistrar, currentState, localState, precomputedState, contextState, hostname);\n return store;\n }\n subscribeStore() {\n if (!this.store) {\n return;\n }\n if (typeof localStorage === \"undefined\") {\n return;\n }\n if (!this.props.useLocalStorage) {\n return;\n }\n this.storeUnubscriber = this.store.subscribe((() => {\n const state = this.store.getState();\n const stateData = JSON.stringify(state);\n localStorage.setItem(\"pluridState-\" + this.storeID, stateData);\n }));\n }\n}\n\nPluridApplication.contextType = PluridContext;\n\nconst StyledSpaces = styled__default[\"default\"].div`\n scroll-snap-type: ${properties => {\n const {alignment: alignment, snapType: snapType} = properties;\n if (snapType === \"none\") {\n return \"none\";\n }\n return alignment + \" \" + snapType;\n}};\n\n flex-direction: ${properties => {\n const {alignment: alignment} = properties;\n if (alignment === \"x\") {\n return \"row\";\n }\n return \"column\";\n}};\n\n outline: none;\n overflow: auto;\n /* display: flex; */\n height: 100vh;\n height: -webkit-fill-available;\n width: 100vw;\n`;\n\nconst collectApplicationsFromPath = (isoMatch, protocol, host, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const path = {\n planes: [],\n spaces: [],\n view: [],\n value: \"\"\n };\n let defaultConfiguration;\n if (isoMatch.kind === \"Route\") {\n let routeData = isoMatch.data;\n defaultConfiguration = routeData.defaultConfiguration;\n if (isoMatch.data.resolver) {\n routeData = yield isoMatch.data.resolver(globals);\n }\n path.planes = routeData.planes || [];\n path.spaces = routeData.spaces || [];\n path.view = routeData.view || [];\n path.value = isoMatch.data.value || \"\";\n }\n const {planes: planes, spaces: spaces, view: view} = path;\n const plurids = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n }\n const pluridApplication = {\n planes: planes,\n view: view,\n configuration: defaultConfiguration\n };\n plurids.push(pluridApplication);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {value: value, component: component} = planeData;\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n const pluridPlane = {\n component: component,\n route: value\n };\n pluridPlanes.push(pluridPlane);\n }\n const pluridApplication = {\n planes: pluridPlanes,\n view: view,\n configuration: defaultConfiguration\n };\n plurids.push(pluridApplication);\n }\n return plurids;\n}));\n\nconst gatherPluridPlanes = (routes, planes) => {\n const pluridPlanes = [];\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planeRoute = planeData.link ? planeData.link : planeData.value.startsWith(\"/\") ? planeData.value : route.value + \"/\" + planeData.value;\n const pluridPlane = {\n route: planeRoute,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n if (route.spaces) ;\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pluridPlane = {\n route: planeData.value,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n return pluridPlanes;\n};\n\nconst renderMultispace = (matchedRoute, hostname = \"origin\") => {\n var _a, _b, _c, _d, _e, _f;\n if (matchedRoute.kind !== \"Route\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const protocol = \"http\";\n const host = hostname;\n const {match: match, data: path} = matchedRoute;\n const {parameters: parameters, query: query} = match;\n const pluridRouteProperty = {\n value: match.value,\n parameters: parameters,\n query: query\n };\n const {exterior: exterior, planes: planes, spaces: spaces, slotted: slotted} = matchedRoute.data;\n const multispaceAlignment = ((_a = path.multispace) === null || _a === void 0 ? void 0 : _a.alignment) || \"y\";\n const multispaceSnapType = ((_b = path.multispace) === null || _b === void 0 ? void 0 : _b.snapType) || \"mandatory\";\n let PluridExterior = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (isReactRenderable(exterior)) {\n PluridExterior = exterior;\n }\n let PluridSpaces = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n const spacesArray = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n }\n }\n const pluridPlanesRegistrar = new PluridPlanesRegistrar([], \"localhost:63000\");\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: planes,\n view: view,\n configuration: space.configuration,\n planesRegistrar: pluridPlanesRegistrar,\n hostname: hostname\n });\n spacesArray.push(App);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n const view = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = pluridData.PLURID_ROUTE_DEFAULT_SPACE;\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n pluridPlanes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: pluridPlanes,\n view: view,\n configuration: path.defaultConfiguration,\n hostname: hostname\n });\n spacesArray.push(App);\n }\n let MultispaceHeader;\n let MultispaceFooter;\n if (isReactRenderable((_c = path.multispace) === null || _c === void 0 ? void 0 : _c.header)) {\n MultispaceHeader = (_d = path.multispace) === null || _d === void 0 ? void 0 : _d.header;\n }\n if (isReactRenderable((_e = path.multispace) === null || _e === void 0 ? void 0 : _e.footer)) {\n MultispaceFooter = (_f = path.multispace) === null || _f === void 0 ? void 0 : _f.footer;\n }\n PluridSpaces = () => React__default[\"default\"].createElement(StyledSpaces, {\n alignment: multispaceAlignment,\n snapType: multispaceSnapType,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_MULTISPACE\n }, MultispaceHeader && React__default[\"default\"].createElement(MultispaceHeader, {\n plurid: pluridRouteProperty\n }), spacesArray, MultispaceFooter && React__default[\"default\"].createElement(MultispaceFooter, {\n plurid: pluridRouteProperty\n }));\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, exterior && React__default[\"default\"].createElement(PluridExterior, {\n spaces: slotted ? spacesArray : undefined,\n plurid: pluridRouteProperty\n }), (spaces || planes) && !slotted && React__default[\"default\"].createElement(PluridSpaces, null));\n return PluridRoute;\n };\n};\n\nconst computePluridRoute = (matchedRoute, planesRegistrar, isoMatcher, directPlane, hostname = \"origin\") => {\n if (directPlane || (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.kind) === \"RoutePlane\") {\n const match = directPlane || matchedRoute;\n if (!match) {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = renderDirectPlane(match, planesRegistrar, hostname);\n return DirectPlane;\n }\n if (!matchedRoute) {\n const notFoundRoute = isoMatcher.match(\"/not-found\", \"route\");\n if (notFoundRoute && notFoundRoute.kind === \"Route\") {\n const notFoundRender = computePluridRoute(notFoundRoute, planesRegistrar, isoMatcher, undefined, hostname);\n return notFoundRender;\n }\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {exterior: exterior, view: view, planes: planes, spaces: spaces, defaultConfiguration: defaultConfiguration, slotted: slotted, resolver: resolver} = matchedRoute.data;\n if (resolver) {\n resolver(undefined);\n }\n const pluridRouteProperty = {\n value: matchedRoute.match.value,\n parameters: matchedRoute.match.parameters,\n query: matchedRoute.match.query\n };\n let PluridRouteExterior;\n if (isReactRenderable(exterior)) {\n PluridRouteExterior = exterior;\n if (PluridRouteExterior) {\n PluridRouteExterior.displayName = \"PluridRouteExterior\";\n }\n }\n if (exterior && PluridRouteExterior && !view && !planes && !spaces) {\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty\n }));\n return PluridRoute;\n };\n }\n if (view) {\n return () => {\n const pubsub = new PluridPubSub__default[\"default\"];\n const space = matchedRoute.data.value;\n const pluridApplication = React__default[\"default\"].createElement(PluridApplication, {\n view: view,\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n pubsub: pubsub,\n matchedRoute: matchedRoute,\n hostname: hostname,\n space: space\n });\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty,\n pubsub: pubsub,\n spaces: slotted ? [ pluridApplication ] : undefined\n }), !slotted && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridApplication));\n return PluridRoute;\n };\n }\n return renderMultispace(matchedRoute);\n};\n\nconst computeInitialMatchedPath = staticContext => {\n if (staticContext) {\n return staticContext.path;\n }\n if (typeof window !== \"undefined\") {\n return window.location.pathname + window.location.search;\n }\n return \"/\";\n};\n\nconst getDirectPlaneMatch = (matchedPath, routes, planes) => {\n let matchRoute;\n let matchPlane;\n let matchPath;\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planePath = route.value === \"/\" ? planeData.value : route.value + planeData.value;\n matchPath = planePath;\n if (matchedPath === planePath) {\n matchPlane = plane;\n break;\n }\n }\n }\n if (matchPlane) {\n matchRoute = route;\n break;\n }\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n if (matchedPath === planeData.value) {\n matchPlane = plane;\n break;\n }\n }\n }\n return {\n matchRoute: matchRoute,\n matchPlane: matchPlane,\n matchPath: matchPath\n };\n};\n\nconst renderDirectPlane = (routePlane, planesRegistrar, hostname = \"origin\") => {\n if (routePlane.match.query.flat) {\n const flat = routePlane.match.query.flat.toLowerCase();\n const renderFlat = flat === \"true\" || flat === \"1\";\n if (renderFlat) {\n const pluridRoute = planesRegistrar.get(routePlane.match.value);\n if (pluridRoute) {\n const Flat = pluridRoute.component;\n if (typeof Flat !== \"function\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(Flat, null));\n return PluridRoute;\n };\n return DirectPlane;\n }\n }\n }\n const {defaultConfiguration: defaultConfiguration} = routePlane === null || routePlane === void 0 ? void 0 : routePlane.data;\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridApplication, {\n view: [ routePlane.match.value ],\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n hostname: hostname\n }));\n return PluridRoute;\n };\n return DirectPlane;\n};\n\nconst PluridScrollTop = styled__default[\"default\"].div`\n height: 0;\n width: 0;\n`;\n\nconst PluridRouterBrowser = properties => {\n const {routes: routes, planes: planes, exterior: exterior, shell: shell, hostname: hostname, scrollToTop: scrollToTop, static: staticContext, view: cleanNavigationView, cleanNavigation: cleanNavigation, notFoundPath: notFoundPathProperty} = properties;\n const notFoundPath = notFoundPathProperty || \"/not-found\";\n const pluridPlanes = gatherPluridPlanes(routes, planes);\n const topContainer = React.useRef(null);\n const pluridPlanesRegistrar = React.useRef(new PluridPlanesRegistrar(pluridPlanes, hostname));\n const pluridIsoMatcher = React.useRef(new PluridIsoMatcher$1({\n routes: routes,\n routePlanes: planes\n }, hostname));\n const mounted = pluridFunctionsReact.useMounted();\n const [matchedPath, setMatchedPath] = React.useState(computeInitialMatchedPath(staticContext));\n const [matchedRoute, setMatchedRoute] = React.useState(pluridIsoMatcher.current.match(matchedPath, \"route\"));\n const [PluridRoute, setPluridRoute] = React.useState(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, staticContext && staticContext.directPlane ? pluridIsoMatcher.current.match(staticContext.directPlane, \"route\") : undefined, hostname));\n const scrollTop = () => {\n if (!topContainer.current || scrollToTop === false) {\n return;\n }\n const behavior = typeof scrollToTop === \"undefined\" || scrollToTop === true || scrollToTop === \"smooth\" ? \"smooth\" : \"auto\";\n topContainer.current.scrollIntoView({\n behavior: behavior\n });\n };\n const handleLocation = event => {\n let matchedPath;\n if (event && event.detail && event.detail.path && !matchedPath) {\n matchedPath = event.detail.path;\n }\n if (cleanNavigation && cleanNavigationView && !matchedPath) {\n matchedPath = cleanNavigationView;\n }\n const pathname = window.location.pathname;\n if (!matchedPath) {\n matchedPath = pathname + window.location.search;\n }\n setMatchedPath(matchedPath);\n scrollTop();\n };\n React.useEffect((() => {\n window.addEventListener(\"popstate\", handleLocation);\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n return () => {\n window.removeEventListener(\"popstate\", handleLocation);\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n };\n }), []);\n React.useEffect((() => {\n if (!mounted) {\n return;\n }\n if (!cleanNavigation) {\n if (location.pathname !== matchedPath) {\n history.pushState(null, \"\", matchedPath);\n }\n }\n let matchedRoute = pluridIsoMatcher.current.match(matchedPath, \"route\");\n if (matchedRoute && matchedRoute.kind === \"RoutePlane\") {\n const DirectPlane = renderDirectPlane(matchedRoute, pluridPlanesRegistrar.current, hostname);\n setMatchedRoute(matchedRoute);\n setPluridRoute(DirectPlane);\n return;\n }\n if (!matchedRoute) {\n matchedRoute = pluridIsoMatcher.current.match(notFoundPath, \"route\");\n }\n setMatchedRoute(matchedRoute);\n setPluridRoute(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, undefined, hostname));\n }), [ mounted, matchedPath ]);\n React.useEffect((() => {\n if (!matchedRoute) {\n return;\n }\n if (matchedRoute.kind !== \"Route\") {\n return;\n }\n const path = matchedRoute.match.value;\n pluridFunctions.storage.saveState(path, pluridData.PLURID_ROUTER_STORAGE);\n const locationStoredEvent = new CustomEvent(pluridData.PLURID_ROUTER_LOCATION_STORED, {\n detail: {\n path: path\n }\n });\n window.dispatchEvent(locationStoredEvent);\n }), [ cleanNavigation, matchedRoute ]);\n let PluridRouterExterior;\n if (isReactRenderable(exterior)) {\n PluridRouterExterior = exterior;\n if (PluridRouterExterior) {\n PluridRouterExterior.displayName = \"PluridRouterExterior\";\n }\n }\n let PluridRouterShell = ({children: children}) => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (isReactRenderable(shell)) {\n PluridRouterShell = shell;\n if (PluridRouterShell) {\n PluridRouterShell.displayName = \"PluridRouterShell\";\n }\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridScrollTop, {\n ref: topContainer\n }), PluridRouterExterior && React__default[\"default\"].createElement(PluridRouterExterior, {\n matchedRoute: matchedRoute\n }), React__default[\"default\"].createElement(PluridRouterShell, {\n matchedRoute: matchedRoute\n }, React__default[\"default\"].createElement(PluridRoute, null)));\n};\n\nconst PluridRouterStatic = properties => {\n const {path: path, directPlane: directPlane, routes: routes, planes: planes, exterior: exterior, shell: shell, protocol: protocolProperty, hostname: hostnameProperty, gateway: gateway, gatewayQuery: gatewayQueryProperty, gatewayEndpoint: gatewayEndpointProperty} = properties;\n const protocol = protocolProperty || \"http\";\n const hostname = hostnameProperty || \"origin\";\n return React__default[\"default\"].createElement(PluridRouterBrowser, {\n routes: routes,\n planes: planes,\n exterior: exterior,\n shell: shell,\n static: {\n path: path,\n directPlane: directPlane\n },\n protocol: protocol,\n hostname: hostname\n });\n};\n\nclass PluridProvider extends React.Component {\n constructor(properties) {\n super(properties);\n this.properties = properties;\n }\n render() {\n const {metastate: metastate, children: children} = this.properties;\n return React__default[\"default\"].createElement(PluridContext.Provider, {\n value: metastate\n }, children);\n }\n}\n\nPluridProvider.displayName = \"PluridProvider\";\n\nconst DEFAULT_ROUTER_LINK_AS_ANCHOR = true;\n\nconst defaultLinkCoordinates = {\n x: 0,\n y: 0\n};\n\nconst PluridPortal = properties => {\n const {elementID: elementID, rootID: rootID, children: children} = properties;\n const target = pluridFunctionsReact.usePortal(elementID, rootID);\n return reactDom.createPortal(children, target);\n};\n\nconst StyledPluridPlanePreview = styled__default[\"default\"].div`\n position: absolute;\n min-width: 600px;\n min-height: 300px;\n z-index: 99999;\n\n top: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.y;\n return location + \"px\";\n}};\n left: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.x + 5;\n return location + \"px\";\n}};\n background-color: ${({theme: theme}) => theme.backgroundColorSecondary};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n`;\n\nconst PluridPlanePreview = properties => {\n const {planeRoute: planeRoute, linkCoordinates: linkCoordinates, previewComponent: previewComponent, previewOffsetX: previewOffsetX, previewOffsetY: previewOffsetY, stateGeneralTheme: stateGeneralTheme} = properties;\n const resolvedLinkCoordinates = {\n x: linkCoordinates.x + (previewOffsetX !== null && previewOffsetX !== void 0 ? previewOffsetX : 0),\n y: linkCoordinates.y + (previewOffsetY !== null && previewOffsetY !== void 0 ? previewOffsetY : 0)\n };\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const plane = planesRegistry.get(planeRoute);\n if (!plane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Component = previewComponent !== null && previewComponent !== void 0 ? previewComponent : plane.component;\n if (typeof Component !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridPlanePreview, {\n theme: stateGeneralTheme,\n linkCoordinates: resolvedLinkCoordinates\n }, React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$6 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$6 = dispatch => ({});\n\nconst ConnectedPluridPlanePreview = reactRedux.connect(mapStateToProperties$6, mapDispatchToProperties$6, null, {\n context: StateContext\n})(PluridPlanePreview);\n\nconst StyledPluridLink = styled__default[\"default\"].a`\n /**\n * Forces element to go to the second row if inlined.\n */\n display: inline-block;\n\n cursor: pointer;\n color: ${({theme: theme}) => theme.colorTertiary};\n\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n\n ::after {\n content: \"${({devisible: devisible, suffix: suffix}) => {\n if (!devisible) {\n if (suffix) {\n return suffix;\n }\n return \"'\";\n }\n return \"\";\n}}\";\n }\n`;\n\nconst PluridLink = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, properties.children);\n }\n const {hostname: hostname, planesRegistrar: planesRegistrar, defaultPubSub: defaultPubSub} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, properties.children);\n }\n const {children: children, route: planeRoute, devisible: _devisible, suffix: _suffix, atClick: atClick, style: style, className: className, preview: preview, previewComponent: previewComponent, previewFadeIn: previewFadeIn, previewFadeOut: previewFadeOut, previewOffsetX: previewOffsetX, previewOffsetY: previewOffsetY, stateTree: stateTree, stateLastClosedPlane: stateLastClosedPlane, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, stateViewSize: stateViewSize, dispatch: dispatch, dispatchSetTree: dispatchSetTree, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceLinkCoordinates: dispatchUpdateSpaceLinkCoordinates} = properties;\n const planeControls = stateConfiguration.elements.plane.controls.show;\n const previewAppearTime = previewFadeIn || pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN;\n const previewDisappearTime = previewFadeOut || pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT;\n const planeRouteResolved = computePlaneAddress(planeRoute);\n const absolutePlaneRoute = resolveRoute(planeRouteResolved, stateConfiguration.network.protocol, hostname || stateConfiguration.network.host);\n const suffix = _suffix !== null && _suffix !== void 0 ? _suffix : pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX;\n const devisible = _devisible !== null && _devisible !== void 0 ? _devisible : false;\n const linkElement = React.useRef(null);\n const hoverInTimeout = React.useRef(null);\n const hoverOutTimeout = React.useRef(null);\n const [mouseOver, setMouseOver] = React.useState(false);\n const [showPreview, setShowPreview] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n const [pluridPlaneID, setPluridPlaneID] = React.useState(\"\");\n const [parentPlaneID, setParentPlaneID] = React.useState(getPluridPlaneIDByData$1(linkElement.current));\n const [linkCoordinates, setLinkCoordinates] = React.useState(defaultLinkCoordinates);\n const getPluridLinkCoordinates = () => {\n const link = linkElement.current;\n if (!link) {\n return Object.assign({}, defaultLinkCoordinates);\n }\n let partialTop = 0;\n let partialLeft = 0;\n let staticSet = false;\n let element = link;\n let searching = true;\n let top = 0;\n let left = 0;\n while (searching) {\n if (window.getComputedStyle(element).position === \"static\" && !staticSet) {\n partialTop += element.offsetTop;\n partialLeft += element.offsetLeft;\n staticSet = true;\n }\n if (window.getComputedStyle(element).position === \"relative\") {\n top += partialTop;\n left += partialLeft;\n partialTop = 0;\n partialLeft = 0;\n staticSet = false;\n }\n if (element.scrollLeft) {\n left += -element.scrollLeft;\n }\n if (element.scrollTop) {\n top += -element.scrollTop;\n }\n if (element.parentElement) {\n const pluridEntity = element.parentElement.dataset.pluridEntity;\n if (pluridEntity === \"PluridPlane\") {\n searching = false;\n }\n element = element.parentElement;\n } else {\n searching = false;\n }\n }\n const planeControlsHeight = planeControls ? 56 : 0;\n const x = left + link.offsetWidth;\n const y = top + planeControlsHeight;\n return {\n x: x,\n y: y\n };\n };\n const updateLinkCoordinates = () => {\n const newLinkCoordinates = getPluridLinkCoordinates();\n const payload = {\n planeID: pluridPlaneID,\n linkCoordinates: newLinkCoordinates\n };\n dispatchUpdateSpaceLinkCoordinates(payload);\n const updatedTree = pluridEngine.space.tree.logic.updatePlaneLocation(pluridFunctions.objects.clone(stateTree), parentPlaneID, pluridPlaneID, pluridFunctions.objects.clone(newLinkCoordinates));\n dispatchSetTree(updatedTree);\n };\n const debouncedUpdateLinkCoordinates = pluridFunctionsReact.useDebouncedCallback((() => {\n updateLinkCoordinates();\n }), pluridData.PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME);\n const updateTreeWithLink = event => {\n if (!parentPlaneID || !absolutePlaneRoute) {\n return;\n }\n const {route: route} = absolutePlaneRoute;\n const linkCoordinates = getPluridLinkCoordinates();\n const {pluridPlaneID: pluridPlaneID, updatedTree: updatedTree, updatedTreePlane: updatedTreePlane} = pluridEngine.space.tree.logic.updateTreeWithNewPlane(route, parentPlaneID, linkCoordinates, pluridFunctions.objects.clone(stateTree), planesRegistry.getAll(), stateConfiguration, hostname);\n if (pluridPlaneID) {\n handlePlaneNavigation(event, updatedTreePlane);\n dispatchSetTree(updatedTree);\n setShowLink(true);\n setPluridPlaneID(pluridPlaneID);\n }\n };\n const togglePlane = forceShow => {\n const {updatedTree: updatedTree, updatedPlane: updatedPlane} = pluridEngine.space.tree.logic.togglePlaneFromTree(pluridFunctions.objects.clone(stateTree), pluridPlaneID, forceShow);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n return {\n updatedPlane: updatedPlane\n };\n };\n const toggleLinkFromTree = event => {\n const {updatedPlane: updatedPlane} = togglePlane();\n handlePlaneNavigation(event, updatedPlane);\n };\n const handlePlaneNavigation = (event, updatedPlane) => {\n if (!updatedPlane) {\n return;\n }\n if (showLink) {\n return;\n }\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: \"\"\n });\n navigateToPluridPlane(dispatch, updatedPlane, event);\n };\n const handleShowPluridPlane = event => {\n if (event.altKey) {\n if (showLink && pluridPlaneID) {\n const plane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, pluridPlaneID);\n navigateToPluridPlane(dispatch, plane, event);\n return;\n }\n }\n if (!showLink && !pluridPlaneID) {\n updateTreeWithLink(event);\n } else {\n toggleLinkFromTree(event);\n }\n };\n const defocusLink = () => {\n if (linkElement.current) {\n linkElement.current.blur();\n }\n };\n const removePlane = () => {\n const updatedTree = pluridEngine.space.tree.logic.removePlaneFromTree(pluridFunctions.objects.clone(stateTree), pluridPlaneID);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n };\n const handleClick = React.useCallback((event => {\n event.preventDefault();\n if (atClick !== undefined) {\n atClick(event);\n }\n handleShowPluridPlane(event);\n defocusLink();\n }), [ parentPlaneID, JSON.stringify(stateTree), linkElement.current ]);\n const handleKeyUp = event => {\n if (event.code === \"Enter\") {\n handleClick(event);\n defocusLink();\n return;\n }\n return;\n };\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData$1(linkElement.current);\n setParentPlaneID(parentPlaneID);\n const linkCoordinates = getPluridLinkCoordinates();\n setLinkCoordinates(linkCoordinates);\n }), []);\n React.useEffect((() => {\n if (showLink) {\n debouncedUpdateLinkCoordinates();\n }\n }), [ showLink, JSON.stringify(stateViewSize), JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n if (!preview) {\n return;\n }\n if (mouseOver && hoverOutTimeout.current) {\n hoverInTimeout.current = setTimeout((() => {\n setShowPreview(true);\n }), previewAppearTime);\n clearTimeout(hoverOutTimeout.current);\n }\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout((() => {\n setShowPreview(false);\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n }), previewDisappearTime);\n }\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n };\n }), [ preview, mouseOver ]);\n React.useEffect((() => {}), []);\n React.useEffect((() => {\n const openClosedPlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE,\n callback: () => {\n if (stateLastClosedPlane === pluridPlaneID) {\n togglePlane();\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: \"\"\n });\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(openClosedPlaneIndex);\n };\n }), [ showLink, pluridPlaneID, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n const closePlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n callback: data => {\n const {id: id} = data;\n if (id === pluridPlaneID) {\n if (showLink) {\n const show = false;\n togglePlane(show);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: id\n });\n }\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(closePlaneIndex);\n };\n }), [ showLink, pluridPlaneID, JSON.stringify(stateTree) ]);\n React.useEffect((() => () => {\n if (showLink && linkElement.current === null) {\n removePlane();\n }\n }), [ showLink, showPreview, pluridPlaneID, parentPlaneID, JSON.stringify(stateTree) ]);\n return React__default[\"default\"].createElement(StyledPluridLink, {\n ref: linkElement,\n onClick: event => handleClick(event),\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onKeyUp: event => handleKeyUp(event),\n theme: stateGeneralTheme,\n suffix: suffix,\n devisible: devisible,\n style: Object.assign({}, style),\n className: className,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_LINK,\n tabIndex: 0\n }, children, showPreview && !showLink && React__default[\"default\"].createElement(PluridPortal, {\n elementID: `preview-${parentPlaneID}`,\n rootID: parentPlaneID\n }, React__default[\"default\"].createElement(ConnectedPluridPlanePreview, {\n planeRoute: planeRouteResolved,\n linkCoordinates: linkCoordinates,\n previewComponent: previewComponent,\n previewOffsetX: previewOffsetX,\n previewOffsetY: previewOffsetY\n })));\n};\n\nconst mapStateToProperties$5 = state => ({\n stateTree: selectors.space.getTree(state),\n stateLastClosedPlane: selectors.space.getLastClosedPlane(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateViewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$5 = dispatch => ({\n dispatch: dispatch,\n dispatchSetTree: payload => dispatch(actions.space.setTree(payload)),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceLinkCoordinates: payload => dispatch(actions.space.updateSpaceLinkCoordinates(payload))\n});\n\nconst ConnectedPluridLink = reactRedux.connect(mapStateToProperties$5, mapDispatchToProperties$5, null, {\n context: StateContext\n})(PluridLink);\n\nconst commonStyle = styled.css`\n color: ${({theme: theme}) => theme.colorTertiary};\n\n @media (hover:hover) {\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n }\n`;\n\nconst StyledPluridRouterLinkAnchor = styled__default[\"default\"].a`\n ${commonStyle}\n`;\n\nconst StyledPluridRouterLinkDiv = styled__default[\"default\"].div`\n cursor: pointer;\n\n ${commonStyle}\n`;\n\nconst PluridRouterLink = properties => {\n const {route: route, children: children, asAnchor: asAnchorProperty, target: target, theme: themeProperty, style: style, className: className, atClick: atClick} = properties;\n const asAnchor = asAnchorProperty !== null && asAnchorProperty !== void 0 ? asAnchorProperty : DEFAULT_ROUTER_LINK_AS_ANCHOR;\n const theme = themeProperty || themes$2.plurid;\n const handleClick = event => {\n if (atClick) {\n const exit = atClick(event);\n if (exit) {\n return;\n }\n }\n event.preventDefault();\n if (target === \"_blank\") {\n window.open(route);\n return;\n }\n pluridEngine.pluridRouterNavigate(route);\n };\n const handleKeyUp = event => {\n if (event.code === \"Enter\") {\n handleClick(event);\n return;\n }\n return;\n };\n const renderProperties = {\n tabIndex: 0,\n theme: theme,\n style: style,\n className: className,\n onClick: handleClick,\n onKeyUp: handleKeyUp\n };\n if (!asAnchor) {\n return React__default[\"default\"].createElement(StyledPluridRouterLinkDiv, Object.assign({}, renderProperties), children);\n }\n return React__default[\"default\"].createElement(StyledPluridRouterLinkAnchor, Object.assign({\n href: route\n }, renderProperties), children);\n};\n\nconst StyledPluridApplicationConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst PluridApplicationConfigurator = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {registerPubSub: registerPubSub} = context;\n const {configuration: configuration, pubsub: pubsub, stateConfiguration: stateConfiguration, dispatchSetConfiguration: dispatchSetConfiguration} = properties;\n const configuratorElement = React.useRef(null);\n React.useEffect((() => {\n const computedConfiguration = pluridEngine.general.configuration.merge(configuration, stateConfiguration);\n dispatchSetConfiguration(computedConfiguration);\n }), [ configuration ]);\n React.useEffect((() => {\n if (pubsub) {\n registerPubSub(pubsub);\n }\n }), [ pubsub ]);\n return React__default[\"default\"].createElement(StyledPluridApplicationConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_APPLICATION_CONFIGURATOR\n });\n};\n\nconst mapStateToProps$1 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$1 = dispatch => ({\n dispatchSetConfiguration: payload => dispatch(actions.configuration.setConfiguration(payload))\n});\n\nconst ConnectedPluridApplicationConfigurator = reactRedux.connect(mapStateToProps$1, mapDispatchToProps$1, null, {\n context: StateContext\n})(PluridApplicationConfigurator);\n\nconst StyledPluridPlaneConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst {getPluridPlaneIDByData: getPluridPlaneIDByData} = pluridEngine.planes;\n\nconst PluridPlaneConfigurator = properties => {\n const configuratorElement = React.useRef(null);\n const [planePlaneID, setParentPlaneID] = React.useState(\"\");\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData(configuratorElement.current);\n setParentPlaneID(parentPlaneID);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridPlaneConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONFIGURATOR\n });\n};\n\nconst mapStateToProperties$4 = state => ({});\n\nconst mapDispatchToProperties$4 = dispatch => ({});\n\nconst ConnectedPluridPlaneConfigurator = reactRedux.connect(mapStateToProperties$4, mapDispatchToProperties$4, null, {\n context: StateContext\n})(PluridPlaneConfigurator);\n\nconst StyledExternalPlane = styled__default[\"default\"].div`\n`;\n\nconst getPttpUrl = path => {\n const re = /^pttp:\\/\\/(\\w+(\\.|:)\\w+)\\/?/;\n const match = path.match(re);\n if (!match) {\n return {\n domain: \"\",\n url: \"\"\n };\n }\n const domain = match[1];\n const protocol = \"http\";\n const url = `${protocol}://${domain}/pttp`;\n return {\n domain: domain,\n url: url\n };\n};\n\nconst getPttpPath = (domain, path) => {\n if (!domain) {\n return;\n }\n const pttpPath = path.replace(`pttp://${domain}`, \"\");\n return pttpPath;\n};\n\nconst elementRequest = (url, path) => __awaiter(void 0, void 0, void 0, (function*() {\n try {\n const response = yield fetch__default[\"default\"](url, {\n method: \"post\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n path: path\n }),\n credentials: \"include\"\n });\n const data = yield response.json();\n if (!data.element) {\n return;\n }\n const {element: element} = data;\n const elementQLClient = new elementqlClientReact.ElementQLClient({\n url: element.url\n });\n const {status: status, Elements: Elements} = yield elementQLClient.get(element.json, \"json\");\n if (!status) {\n return;\n }\n const Element = Elements[element.name];\n return () => Element;\n } catch (error) {\n return;\n }\n}));\n\nconst ExternalPlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n const mounted = React.useRef(false);\n const [Component, setComponent] = React.useState();\n React.useEffect((() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }));\n React.useEffect((() => {\n let loading = false;\n const load = () => __awaiter(void 0, void 0, void 0, (function*() {\n if (loading) {\n return;\n }\n loading = true;\n try {\n const {domain: domain, url: url} = getPttpUrl(route);\n const pttpPath = getPttpPath(domain, route);\n if (!url || !pttpPath) {\n return;\n }\n const Component = yield elementRequest(url, pttpPath);\n if (!mounted.current) {\n return;\n }\n if (Component) {\n setComponent(Component);\n }\n } catch (error) {\n return;\n }\n }));\n load();\n }), []);\n return React__default[\"default\"].createElement(StyledExternalPlane, null, Component && React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$3 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$3 = dispatch => ({});\n\nconst ConnectedExternalPlane = reactRedux.connect(mapStateToProperties$3, mapDispatchToProperties$3, null, {\n context: StateContext\n})(ExternalPlane);\n\nconst StyledIframePlane = styled__default[\"default\"].div`\n`;\n\nconst IframePlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n return React__default[\"default\"].createElement(StyledIframePlane, null, React__default[\"default\"].createElement(\"iframe\", {\n src: route\n }));\n};\n\nconst mapStateToProperties$2 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$2 = dispatch => ({});\n\nconst ConnectedIframePlane = reactRedux.connect(mapStateToProperties$2, mapDispatchToProperties$2, null, {\n context: StateContext\n})(IframePlane);\n\nconst VirtualListItem = properties => {\n const {top: top, index: index, element: element, setHeight: setHeight} = properties;\n const el = React.useRef(null);\n React.useEffect((() => {\n if (el.current) {\n setHeight(el.current.offsetHeight, index);\n }\n }), [ el.current ]);\n return React__default[\"default\"].createElement(\"div\", {\n ref: el,\n style: {\n position: \"absolute\",\n top: top + \"px\"\n }\n }, element);\n};\n\nconst {markers: {Spinner: PluridSpinner}} = pluridUiComponentsReact.universal;\n\nconst PluridVirtualList = properties => {\n const {items: items, generalHeight: generalHeight, translationY: translationY, viewSize: viewSize} = properties;\n const _generalHeight = generalHeight || 100;\n const listElement = React.useRef(null);\n const rows = React.useRef([]);\n const heights = React.useRef(Array(items.length).fill(_generalHeight));\n const [start, setStart] = React.useState(0);\n const [end, setEnd] = React.useState(Math.floor(1e3 / _generalHeight));\n const [elementHeight, setElementHeight] = React.useState(_generalHeight * (end - start));\n const [resizing, setResizing] = React.useState(false);\n const setHeight = (value, index) => {\n heights.current[index] = value;\n };\n const renderRows = () => {\n rows.current = [];\n for (let i = start; i <= end; i++) {\n const item = items[i];\n rows.current.push(React__default[\"default\"].createElement(VirtualListItem, {\n key: i + Math.random(),\n index: i,\n top: pluridFunctions.mathematics.arithmetic.sum(heights.current, i),\n element: item,\n setHeight: setHeight\n }));\n }\n return rows.current;\n };\n React.useEffect((() => {\n if (heights.current) {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n }\n }), [ start, end, heights.current ]);\n React.useEffect((() => {\n let sum = 0;\n for (const [index, value] of heights.current.entries()) {\n sum += value;\n if (translationY < 0) {\n if (sum < Math.abs(translationY)) {\n setStart(index);\n }\n if (sum > Math.abs(translationY) + viewSize.height && sum < Math.abs(translationY) + viewSize.height + 400) {\n setEnd(index);\n }\n } else {\n setStart(0);\n setEnd(10);\n }\n }\n }), [ viewSize.height, translationY ]);\n React.useEffect((() => {\n setResizing(true);\n setTimeout((() => {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n setResizing(false);\n }), 400);\n }), [ viewSize ]);\n return React__default[\"default\"].createElement(\"div\", {\n style: {\n height: elementHeight\n },\n ref: listElement\n }, resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridSpinner, null)), !resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, renderRows()));\n};\n\nconst mapStateToProps = state => ({\n translationY: selectors.space.getTranslationY(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps = dispatch => ({});\n\nconst ConnectedPluridVirtualList = reactRedux.connect(mapStateToProps, mapDispatchToProps, null, {\n context: StateContext\n})(PluridVirtualList);\n\nconst StyledPluridPlaneDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridPlaneDebugger = properties => React__default[\"default\"].createElement(StyledPluridPlaneDebugger, null, \"PluridPlaneDebugger\");\n\nconst mapStateToProperties$1 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$1 = dispatch => ({});\n\nconst ConnectedPluridPlaneDebugger = reactRedux.connect(mapStateToProperties$1, mapDispatchToProperties$1, null, {\n context: StateContext\n})(PluridPlaneDebugger);\n\nconst StyledPluridSpaceDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridSpaceDebugger = properties => React__default[\"default\"].createElement(StyledPluridSpaceDebugger, null, \"PluridSpaceDebugger\");\n\nconst mapStateToProperties = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties = dispatch => ({});\n\nconst ConnectedPluridSpaceDebugger = reactRedux.connect(mapStateToProperties, mapDispatchToProperties, null, {\n context: StateContext\n})(PluridSpaceDebugger);\n\nconst serverComputeMetastate = (isoMatch, paths, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const pluridApplications = yield collectApplicationsFromPath(isoMatch, protocol, host, globals);\n const states = {};\n for (const application of pluridApplications) {\n const {planes: planes, view: view, configuration: configuration} = application;\n const {computedTree: computedTree, appConfiguration: appConfiguration} = computeApplication(planes, isoMatch.data.defaultConfiguration, view);\n const state = {\n configuration: Object.assign({}, appConfiguration),\n shortcuts: {\n global: true\n },\n themes: {\n general: themes__default[\"default\"].plurid,\n interaction: themes__default[\"default\"].plurid\n },\n ui: {\n toolbarScrollPosition: 50\n },\n space: {\n loading: false,\n animatedTransform: false,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n tree: computedTree,\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: 1440,\n height: 821\n },\n spaceSize: {\n width: 1440,\n height: 821,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: view,\n culledView: []\n }\n };\n const id = isoMatch.data.value;\n states[id] = state;\n }\n return {\n states: states\n };\n}));\n\nconst usePluridRouter = () => {\n const [routerValue, setRouterValue] = React.useState(\"\");\n React.useEffect((() => {\n const fetchState = () => {\n const state = pluridFunctions.storage.loadState(pluridData.PLURID_ROUTER_STORAGE);\n if (state) {\n setRouterValue(state);\n }\n };\n fetchState();\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n return () => {\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n };\n }), []);\n return routerValue;\n};\n\nconst {IsoMatcher: PluridIsoMatcher, RouteParser: PluridRouteParser} = pluridEngine.routing;\n\nconst internals = {\n PluridPlaneBridge: ConnectedPluridPlaneBridge,\n PluridPlaneContent: PluridPlaneContent,\n PluridPlaneControls: ConnectedPluridPlaneControls,\n PluridPlaneDebugger: ConnectedPluridPlaneDebugger,\n PluridSpaceDebugger: ConnectedPluridSpaceDebugger\n};\n\nconst Plurid = {\n Application: PluridApplication,\n RouterStatic: PluridRouterStatic,\n RouterBrowser: PluridRouterBrowser,\n Provider: PluridProvider,\n Link: ConnectedPluridLink,\n RouterLink: PluridRouterLink,\n ApplicationConfigurator: ConnectedPluridApplicationConfigurator,\n PlaneConfigurator: ConnectedPluridPlaneConfigurator,\n ExternalPlane: ConnectedExternalPlane,\n IframePlane: ConnectedIframePlane,\n VirtualList: ConnectedPluridVirtualList,\n SPACE_LAYOUT: pluridData.LAYOUT_TYPES,\n SIZES: pluridData.SIZES,\n TRANSFORM_MODES: pluridData.TRANSFORM_MODES,\n TRANSFORM_TOUCHES: pluridData.TRANSFORM_TOUCHES,\n PubSub: PluridPubSub__default[\"default\"],\n PUBSUB_TOPIC: pluridData.PLURID_PUBSUB_TOPIC,\n serverComputeMetastate: serverComputeMetastate,\n IsoMatcher: PluridIsoMatcher,\n routerNavigate: pluridEngine.pluridRouterNavigate,\n internals: internals\n};\n\nObject.defineProperty(exports, \"PLURID_PUBSUB_TOPIC\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_PUBSUB_TOPIC;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_CHANGED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_CHANGED;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_STORED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_STORED;\n }\n});\n\nObject.defineProperty(exports, \"SIZES\", {\n enumerable: true,\n get: function() {\n return pluridData.SIZES;\n }\n});\n\nObject.defineProperty(exports, \"SPACE_LAYOUT\", {\n enumerable: true,\n get: function() {\n return pluridData.LAYOUT_TYPES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_MODES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_MODES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_TOUCHES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_TOUCHES;\n }\n});\n\nObject.defineProperty(exports, \"pluridRouterNavigate\", {\n enumerable: true,\n get: function() {\n return pluridEngine.pluridRouterNavigate;\n }\n});\n\nObject.defineProperty(exports, \"PluridPubSub\", {\n enumerable: true,\n get: function() {\n return PluridPubSub__default[\"default\"];\n }\n});\n\nexports.PluridApplication = PluridApplication;\n\nexports.PluridApplicationConfigurator = ConnectedPluridApplicationConfigurator;\n\nexports.PluridExternalPlane = ConnectedExternalPlane;\n\nexports.PluridIframePlane = ConnectedIframePlane;\n\nexports.PluridIsoMatcher = PluridIsoMatcher;\n\nexports.PluridLink = ConnectedPluridLink;\n\nexports.PluridPlaneConfigurator = ConnectedPluridPlaneConfigurator;\n\nexports.PluridProvider = PluridProvider;\n\nexports.PluridRouteParser = PluridRouteParser;\n\nexports.PluridRouterBrowser = PluridRouterBrowser;\n\nexports.PluridRouterLink = PluridRouterLink;\n\nexports.PluridRouterStatic = PluridRouterStatic;\n\nexports.PluridVirtualList = ConnectedPluridVirtualList;\n\nexports[\"default\"] = Plurid;\n\nexports.getDirectPlaneMatch = getDirectPlaneMatch;\n\nexports.internals = internals;\n\nexports.pluridStateModules = modules;\n\nexports.serverComputeMetastate = serverComputeMetastate;\n\nexports.usePluridRouter = usePluridRouter;\n//# sourceMappingURL=index.js.map\n"],"names":["Object","defineProperty","exports","value","pluridData","require$$0","pluridEngine","require$$1","PluridPubSub","require$$2","React","require$$3","reactRedux","require$$4","toolkit","require$$5","pluridFunctions","require$$6","themes$2","require$$7","styled","require$$8","pluridFunctionsReact","require$$9","pluridIconsReact","require$$10","pluridUiComponentsReact","require$$11","reactDom","require$$12","fetch","require$$13","elementqlClientReact","require$$14","_interopDefaultLegacy","e","default","PluridPubSub__default","React__default","themes__default","styled__default","fetch__default","PluridContext","createContext","undefined","initialState$5","assign","defaultConfiguration","configuration","createSlice","name","initialState","reducers","setConfiguration","state","action","payload","setConfigurationMicro","elements","toolbar","show","plane","controls","viewcube","setConfigurationPlaneControls","setConfigurationPlaneOpacity","opacity","setConfigurationThemeGeneral","updatedTheme","general","interaction","global","theme","setConfigurationThemeInteraction","setConfigurationLanguage","language","toggleConfigurationViewcubeHide","toggleConfigurationViewcubeButtons","buttons","toggleConfigurationViewcubeOpaque","opaque","toggleConfigurationViewcubeConceal","conceal","toggleConfigurationToolbarConceal","toggleConfigurationToolbarTransformIcons","transformIcons","toggleConfigurationToolbarTransformButtons","transformButtons","toggleConfigurationShowTransformOrigin","space","transformOrigin","toggleConfigurationToolbarOpaque","toggleConfigurationSpaceTransparentUI","transparentUI","setConfigurationSpaceTransformOriginSize","size","setConfigurationSpaceTransformMode","transformMode","TRANSFORM_MODES","ALL","toggleConfigurationSpaceTransformMultimode","transformMultimode","setConfigurationSpaceTransformTouch","transformTouch","toggleConfigurationSpaceFirstPerson","firstPerson","toggleConfigurationToolbarToggleDrawer","toggledDrawers","includes","updatedDrawers","filter","el","setConfigurationSpaceTransformLocks","transformLocks","updatedTransformLocks","setConfigurationSpaceLayout","layout","type","LAYOUT_TYPES","setConfigurationSpaceCullingDistance","cullingDistance","actions$6","actions","getConfiguration","selectors$6","reducer$6","reducer","configuration$1","freeze","__proto__","selectors","actions$5","getGeneral","selectors$5","reducer$5","general$1","shortcuts","setGlobalShortcuts","actions$4","getGlobal","selectors$4","reducer$4","shortcuts$1","registerPlanes","getRegisteredPlanes","getPlanesRegistrar","getPluridPlaneIDByData","getPluridPlaneIDByData$1","getRegisteredPlane","resolvePluridRoutePlaneData","resolvePluridPlaneData","Registrar","PluridPlanesRegistrar","planes","IsoMatcher","PluridIsoMatcher$1","resolveRoute","computePlaneAddress","routing","quaternion","quaternion$1","matrix","matrix$1","degToRad","degToRad$2","matrixArrayToCSSMatrix","matrixArrayToCSSMatrix$1","rotateMatrix","rotateMatrix$2","multiplyArrayOfMatrices","multiplyArrayOfMatrices$2","scaleMatrix","scaleMatrix$2","translateMatrix","translateMatrix$2","computeMatrix","spaceState","translationX","translationY","translationZ","rotationX","rotationY","scale","transformOriginX","window","innerWidth","transformOriginY","innerHeight","transformOriginZ","rotationMatrix","translationMatrix","scalationMatrix","transformMatrix","transform","selectors$3","getSpace","getLoading","loading","getTransformMatrix","getAnimatedTransform","animatedTransform","getTransformTime","transformTime","getRotationX","getRotationY","getTranslationX","getTranslationY","getTranslationZ","getScale","getTree","tree","getTransform","getActiveUniverseID","activeUniverseID","getView","view","getViewSize","viewSize","getCulledView","culledView","getActivePlaneID","activePlaneID","getIsolatePlane","isolatePlane","getLastClosedPlane","lastClosedPlane","toRadians","mathematics","geometry","initialState$2","camera","x","y","z","width","height","spaceSize","depth","topCorner","setSpaceField","field","setSpaceLoading","changeTransform","setTransform","resolvedTranslationX","resolvedTranslationY","resolvedTranslationZ","resolvedRotationX","resolvedRotationY","resolvedScale","setAnimatedTransform","setTransformTime","setSpaceLocation","newState","viewCameraMoveForward","TRANSLATION_STEP","Math","cos","sin","viewCameraMoveBackward","viewCameraMoveLeft","viewCameraMoveRight","viewCameraMoveUp","viewCameraMoveDown","viewCameraTurnUp","ROTATION_STEP","viewCameraTurnDown","viewCameraTurnLeft","viewCameraTurnRight","rotateUp","rotateDown","rotateX","rotateXWith","rotateLeft","rotateRight","rotateY","rotateYWith","translateUp","translateDown","translateLeft","translateRight","translateIn","translateOut","translateXWith","translateYWith","translateZWith","scaleUp","computedScale","SCALE_STEP","SCALE_UPPER_LIMIT","scaleDown","SCALE_LOWER_LIMIT","scaleUpWith","abs","scaleDownWith","setTree","setActiveUniverse","spaceResetTransform","setViewSize","setSpaceSize","updateSpaceTreePlane","updatedTree","updateTreePlane","updateSpaceLinkCoordinates","planeID","linkCoordinates","updateTreeByPlaneIDWithLinkCoordinates","spaceSetView","spaceSetCulledView","actions$3","reducer$3","space$1","initialState$1","plurid","themes","setGeneralTheme","setInteractionTheme","actions$2","getGeneralTheme","getInteractionTheme","selectors$2","reducer$2","themes$1","ui","toolbarScrollPosition","setUIToolbarScrollPosition","actions$1","getToolbarScrollPosition","selectors$1","reducer$1","modules","combineReducers","store","preloadedState","configureStore","devTools","StateContext","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","Context","degToRad$1","radToDeg","multiplyMatricesArray","translateMatrix$1","rotateYMatrix","matrixToCSSMatrix","arrayToMatrix","inverseMatrix","getTransformRotate","getTransformTranslate","getTransformScale","matrix3d","rotateMatrix$1","translateMatrixArray","scaleMatrix$1","multiplyArrayOfMatrices$1","computeApplication","appConfiguration","merge","planeData","route","currentView","absoluteView","viewItem","viewPath","push","origin","registrarPlanes","getAll","computedTree","Tree","compute","data","useAnimatedTransform","timeout","dispatch","dispatchSetAnimatedTransform","clearTimeout","setTimeout","PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT","factoryUseAnimatedTransform","navigateToPluridPlane","event","deisolate","ctrlKey","metaKey","dispatchSetSpaceField","location","translateX","translateY","translateZ","inverseTransformMatrix","matrix3dTransformMatrix","rotate","translate","zSign1","zSign2","xOffset","parentPlaneID","newMatrix","getMatrix3d","computePlaneLocation","selector","FOCUS_ANCHOR_SUFFIX","focusAnchor","document","querySelector","focus","focusPluridPlaneAnchor","getActivePlane","logic","getTreePlaneByID","treePlane","findRootIndex","currentRootIndex","index","entries","children","rootIndex","navigateToRoot","root","length","focusPreviousRoot","focusNextRoot","focusRootIndex","direction","directionLogic","handleGlobalShortcuts","pubsub","locks","defaultPrevented","dom","verifyPathInputElement","getEventPath","noModifiers","shiftKey","altKey","handleEvent","preventDefault","code","ROTATION","TRANSLATION","SCALE","key","activePlane","focusActivePlane","parentPlane","focusParentActivePlane","id","publish","topic","PLURID_PUBSUB_TOPIC","REFRESH_PLANE","refreshActivePlane","ISOLATE_PLANE","isolateActivePlane","OPEN_CLOSED_PLANE","openClosedPlane","CLOSE_PLANE","closeActivePlane","startsWith","parseInt","replace","loadHammer","__esModule","n","create","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","_interopNamespace","require$$15","GlobalStyle","createGlobalStyle","preventOverscroll","fontFamilySansSerif","StyledView","div","props","fullHeight","backgroundColorTertiary","backgroundColorPrimary","ErrorBoundary","Component","constructor","super","this","hasError","static","error","componentDidCatch","errorInfo","render","renderError","createElement","StyledPluridPlane","mouseOver","planeOpacity","backgroundColorPrimaryAlpha","decomposedColor","decomposeColor","hue","saturation","lightness","boxShadowUmbra","colorPrimary","planeControls","StyledFocusAnchor","a","StyledPluridPlaneBridge","backgroundColorDark","ConnectedPluridPlaneBridge","connect","stateGeneralTheme","stateConfiguration","context","properties","PLURID_ENTITY_PLANE_BRIDGE","ControlRefresh","refreshing","refreshPlane","PluridIconReset","atClick","title","style","pointerEvents","ControlIsolate","isolated","fill","PluridIconRectangle","StyledPluridPlaneControls","boxShadowUmbraInset","styleCommonControls","css","StyledPluridPlaneControlsLeft","StyledPluridPlaneControlsCenter","StyledPluridPlaneControlsRight","ConnectedPluridPlaneControls","stateInteractionTheme","stateIsolatePlane","parentTreePlane","closePlane","pathbar","routeDivisions","protocol","host","encodeURIComponent","path","setPath","useState","PLURID_ENTITY_PLANE_CONTROLS","PluridIconArrowLeft","PluridIconFrame","Fragment","PluridIconDelete","StyledPluridPlaneContent","PluridPlaneContent","planeContentElement","useRef","ref","PLURID_ENTITY_PLANE_CONTENT","ConnectedPluridPlane","stateTree","stateViewSize","stateActivePlaneID","dispatchUpdateSpaceTreePlane","useContext","planeRenderError","defaultPubSub","planeWidth","showPlaneControls","numbers","checkIntegerNonUnit","planeRef","remountKey","setRemountKey","setRefreshing","setMouseOver","REFRESH_TIMEOUT","debouncedSetActivePlane","useDebouncedCallback","useEffect","refreshPlaneIndex","subscribe","callback","unsubscribe","focusAnchorID","isolatePlaneOpacity","computeIsolatePlaneOpacity","isolatePointerEvents","computeIsolatePointerEvents","cleanTemplate","planeContentProperties","onMouseEnter","onMouseLeave","onMouseOver","onMouseMove","PLURID_ENTITY_PLANE","tabIndex","isReactRenderable","component","url","StyledPluridRoot","ConnectedPluridRoot","planesRegistrar","planeContext","PlaneContext","planeContextValue","customPlane","matchedRoute","CustomPluridPlane","computeChildrenPlanes","planesRegistry","child","sourceID","renderPlane","Plane","pluridProperty","absolute","fragments","parameters","query","match","pubSub","renderablePlane","renderableCustomPlane","planeProperties","Provider","childrenPlanes","useMemo","JSON","stringify","pluridPlaneID","pluridPlane","PLURID_ENTITY_ROOT","StyledPluridRoots","ConnectedPluridRoots","spaceTransformMatrix","spaceAnimatedTransform","spaceTransformTime","transition","PLURID_ENTITY_ROOTS","map","fadeIn","keyframes","fadeInAnimation","fadeInTime","StyledPluridSpace","isMounted","ConnectedPluridSpace","setIsMounted","PLURID_ENTITY_SPACE","resolveSize","SIZES","SMALL","NORMAL","LARGE","StyledOrigin","backgroundColorTertiaryAlpha","ConnectedOrigin","showTransformOrigin","transformOriginSize","PLURID_ENTITY_TRANSFORM_ORIGIN","MENUS","StyledToolbar","mouseIn","showMenu","NONE","StyledToolbarButtons","backgroundColorSecondary","showIcons","showTransformButtons","documentsBased","StyledToolbarButton","button","active","StyledIcon","StyledPluridMenuUniverses","afterline","StyledPluridMenuUniversesScroll","li","boxShadowUmbraColor","ConnectedPluridMenuUniverses","interactionTheme","dispatchSetActiveUniverse","documentID","StyledPluridDrawer","toggled","StyledPluridDrawerHeading","StyledPluridDrawerItems","typography","Heading","PluridHeading","universal","ConnectedPluridDrawer","heading","items","toggle","onClick","StyledPluridMoreMenu","StyledPluridMoreMenuItem","last","StyledPluridMoreMenuScroll","inputs","Dropdown","PluridDropdown$1","ConnectedPluridMenuMoreGlobal","stateLanguage","dispatchSetConfigurationThemeGeneralAction","dispatchSetConfigurationThemeInteractionAction","dispatchSetConfigurationLanguage","dispatchSetGeneralTheme","dispatchSetInteractionTheme","selectedTheme","generalThemeName","setGeneralThemeName","interactionThemeName","setInteractionThemeName","internatiolate","internationalization","fields","toolbarDrawerGlobalGeneralTheme","selectables","selected","atSelect","selection","filterable","heightItems","fontSize","toolbarDrawerGlobalInteractionTheme","toolbarDrawerGlobalLanguage","languages","Switch","PluridSwitch$3","ConnectedPluridMenuMoreTransform","dispatchToggleConfigurationSpaceTransformMultimode","multimode","dispatchSetConfigurationSpaceTransformTouch","touch","dispatchSetConfigurationSpaceTransformLocks","lock","toolbarDrawerTransformMultiModeTransform","checked","atChange","exclusive","level","toolbarDrawerTransformAllowRotationX","toolbarDrawerTransformAllowRotationY","toolbarDrawerTransformAllowTranslationX","toolbarDrawerTransformAllowTranslationY","toolbarDrawerTransformAllowTranslationZ","toolbarDrawerTransformAllowScale","toolbarDrawerTransformTouchTransform","TRANSFORM_TOUCHES","PAN","SWIPE","PluridDropdown","PluridSwitch$2","Slider","PluridSlider$1","ConnectedPluridMenuMoreSpace","dispatchSetConfigurationPlaneOpacity","dispatchToggleConfigurationSpaceTransparentUI","dispatchToggleConfigurationSpaceShowTransformOrigin","dispatchSetConfigurationSpaceTransformOriginSize","dispatchSetConfigurationSpaceLayoutType","layoutType","layoutNames","toolbarDrawerSpaceTransparentUserInterface","toolbarDrawerSpaceShowTransformOrigin","toolbarDrawerSpaceTransformOriginSize","toLowerCase","toUpperCase","toolbarDrawerSpacePlaneOpacity","max","min","defaultValue","thumbSize","toolbarDrawerSpaceLayoutType","values","PluridSwitch$1","ConnectedPluridMenuMoreToolbar","dispatchToggleConfigurationToolbarConceal","dispatchToggleConfigurationToolbarTransformIcons","dispatchToggleConfigurationToolbarTransformButtons","dispatchToggleConfigurationToolbarOpaque","viewSizeSmall","setViewSizeSmall","toolbarDrawerToolbarAlwaysOpaque","toolbarDrawerToolbarShowTransformIcons","toolbarDrawerToolbarShowTransformArrows","toolbarDrawerToolbarConcealToolbar","PluridSwitch","ConnectedPluridMenuMoreViewcube","dispatchToggleConfigurationViewcubeHide","dispatchToggleConfigurationViewcubeButtons","dispatchToggleConfigurationViewcubeOpaque","dispatchToggleConfigurationViewcubeConceal","toolbarDrawerViewcubeShowViewcube","toolbarDrawerViewcubeShowTransformButtons","toolbarDrawerViewcubeAlwaysOpaque","toolbarDrawerViewcubeConcealViewcube","PluridSlider","ConnectedPluridMenuMoreTechnical","dispatchSetConfigurationSpaceCullingDistance","localCullingDistance","setLocalCullingDistance","dispatchCullingDistanceUpdate","toolbarDrawerTechnicalCullingDistance","ConnectedPluridMenuMoreShortcuts","defaultShortcuts","shortcut","shortcutData","shortcutsNames","internationalizedKey","modifier","modifierString","Array","isArray","reduce","total","element","internationalizedName","keyAsAny","keyName","moreMenusRecord","GLOBAL","toolbarDrawerGlobalTitle","drawer","TOOLBAR_DRAWERS","TRANSFORM","toolbarDrawerTransformTitle","SPACE","toolbarDrawerSpaceTitle","TOOLBAR","toolbarDrawerToolbarTitle","VIEWCUBE","toolbarDrawerViewcubeTitle","TECHNICAL","toolbarDrawerTechnicalTitle","SHORTCUTS","toolbarDrawerShortcutsTitle","moreMenus","ConnectedPluridMoreMenu","stateToolbarMenuScrollPosition","dispatchToggleConfigurationToolbarToggleDrawer","dispatchSetUIToolbarScrollPosition","drawers","menus","resolvedMenus","menu","resolveMenus","moreMenuScrollElement","handleWheel","_event","current","scrollPosition","scrollTop","addEventListener","removeEventListener","moreMenu","StyledPluridToolbarRotate","StyledPluridTransformArrow","pressed","arrowSigns","left","right","up","down","events","ConnectedPluridTransformArrow","arrowSign","pressingInterval","arrowElement","setPressed","handleTouch","eventData","srcEvent","clearInterval","setInterval","Hammer","on","off","ConnectedPluridToolbarRotate","toggleTransform","PluridIconRotate","toolbarTransformRotate","StyledPluridToolbarScale","ConnectedPluridToolbarScale","PluridIconScale","toolbarTransformScale","StyledPluridToolbarTranslate","ConnectedPluridToolbarTranslate","PluridIconTranslate","toolbarTransformTranslate","ConnectedPluridToolbar","dispatchToggleConfigurationSpaceFirstPerson","dispatchSetConfigurationSpaceTransformMode","mode","showToolbar","menuTimeout","setMouseIn","setShowMenu","setShowIcons","setShowTransformButtons","TYPE","PLURID_ENTITY_TOOLBAR","PluridIconFirstPerson","handleShowMenu","MORE","PluridIconMore","UNIVERSES","StyledPluridViewcube","StyledPluridViewcubeArrow","StyledPluridViewcubeArrowIcon","StyledFitView","StyledPluridViewcubeFace","colorTertiary","face","boxShadowPenumbraColor","StyledPluridViewcubeFaceZone","hovered","colorSecondary","faceTypes","zoneCodes","frontTopLeft","frontTopCenter","frontTopRight","frontMiddleLeft","frontMiddleCenter","frontMiddleRight","frontBottomLeft","frontBottomCenter","frontBottomRight","rightTopLeft","rightTopCenter","rightTopRight","rightMiddleLeft","rightMiddleCenter","rightMiddleRight","rightBottomLeft","rightBottomCenter","rightBottomRight","backTopLeft","backTopCenter","backTopRight","backMiddleLeft","backMiddleCenter","backMiddleRight","backBottomLeft","backBottomCenter","backBottomRight","leftTopLeft","leftTopCenter","leftTopRight","leftMiddleLeft","leftMiddleCenter","leftMiddleRight","leftBottomLeft","leftBottomCenter","leftBottomRight","topTopLeft","topTopCenter","topTopRight","topMiddleLeft","topMiddleCenter","topMiddleRight","topBottomLeft","topBottomCenter","topBottomRight","baseTopLeft","baseTopCenter","baseTopRight","baseMiddleLeft","baseMiddleCenter","baseMiddleRight","baseBottomLeft","baseBottomCenter","baseBottomRight","faceTransform","A1","A2","A3","B1","B2","B3","C1","C2","C3","A4","A5","B4","B5","C4","C5","A6","A7","B6","B7","C6","C7","A8","B8","C8","D1","E1","ConnectedPluridViewcubeFace","generalTheme","dispatchRotateX","angleX","dispatchRotateY","angleY","animated","faceText","hoveredZone","setHoveredZone","activeZone","setActiveZone","opaqueFace","handleClick","zoneCode","StyledPluridViewcubeModel","StyledPluridViewcubeModelContainer","StyledPluridViewcubeModelCube","ConnectedPluridViewcubeModel","spaceRotationX","spaceRotationY","stateAnimatedTransform","stateTransformTime","offsets","transformOrigins","computeTransform","suppressHydrationWarning","viewcubeFront","viewcubeBack","viewcubeLeft","viewcubeRight","viewcubeTop","viewcubeBase","ConnectedPluridViewcube","dispatchRotateXWith","dispatchRotateYWith","dispatchSpaceResetTransform","showViewcube","animatedRotate","PLURID_ENTITY_VIEWCUBE","gridArea","PluridIconGlobal","PluridViewContainer","_properties","ConnectedPluridView","stateTransform","stateSpaceLoading","stateSpaceView","dispatchSetConfiguration","dispatchSetConfigurationMicro","dispatchSpaceSetViewSize","dispatchSetSpaceLoading","dispatchSetTransformTime","dispatchSetSpaceLocation","dispatchSetTree","dispatchTranslateXWith","dispatchTranslateYWith","dispatchTranslateZWith","dispatchScaleUpWith","dispatchScaleDownWith","dispatchSpaceSetView","planeNotFound","hostname","viewElement","scrollTimeout","pluridPubSub","setPluridPubSub","setPreventOverscroll","shortcutsCallback","useCallback","wheelCallback","PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT","handlePreventOverscroll","transformModes","rotation","translation","modes","deltas","deltaX","deltaY","getWheelDirection","directions","handleGlobalWheel","treeUpdate","statePlane","computedPlane","objects","equals","treeUpdateCallback","handlePubSubSubscribe","subscriptions","CONFIGURATION","internal","computedConfiguration","SPACE_TRANSFORM","SPACE_ANIMATED_TRANSFORM","time","SPACE_ROTATE_X_WITH","SPACE_ROTATE_X_TO","SPACE_ROTATE_Y_WITH","SPACE_ROTATE_Y_TO","SPACE_TRANSLATE_X_WITH","SPACE_TRANSLATE_X_TO","SPACE_TRANSLATE_Y_WITH","SPACE_TRANSLATE_Y_TO","SPACE_TRANSLATE_Z_WITH","SPACE_TRANSLATE_Z_TO","VIEW_ADD_PLANE","updatedView","VIEW_SET_PLANES","VIEW_REMOVE_PLANE","NAVIGATE_TO_PLANE","find","forceShow","togglePlaneFromTree","PREVIOUS_ROOT","NEXT_ROOT","NAVIGATE_TO_ROOT","focusRootID","indexes","subscription","handlePubSubPublish","internalTransform","handleSwipe","velocity","distance","rotationMode","translationMode","scalationMode","handlePan","rotationVelocity","translationVelocity","scaleVelocity","handlePinch","handlePinchin","handlePinchout","passive","handleResize","meta","debounce","offsetWidth","offsetHeight","PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME","defaults","cssProps","userSelect","userDrag","tapHighlightColor","touchSelect","set","DIRECTION_ALL","enable","handleGamepadConnect","navigator","getGamepads","gamepad","handleGamepadDisconnect","unsubscribers","unsubscriber","pluridContext","registerPubSub","pluridPubSubs","PLURID_ENTITY_VIEW","PluridApplication","storeID","defaultStore","computeStore","subscribeStore","componentDidUpdate","updatedStore","componentWillUnmount","storeUnubscriber","precomputedState","useLocalStorage","currentState","getState","localState","local","load","contextState","states","pathname","loadStateFromContext","localStorage","stateData","setItem","contextType","StyledSpaces","alignment","snapType","computePluridRoute","isoMatcher","directPlane","kind","renderDirectPlane","notFoundRoute","exterior","spaces","slotted","resolver","pluridRouteProperty","PluridRouteExterior","displayName","pluridApplication","PluridRoute","_a","_b","_c","_d","_e","_f","multispaceAlignment","multispace","multispaceSnapType","PluridExterior","PluridSpaces","spacesArray","fullPath","PLURID_ROUTE_DEFAULT_PATH_VALUE","PLURID_ROUTE_DEFAULT_PATH","utilities","cleanPathElement","PLURID_ROUTE_DEFAULT_SPACE_VALUE","PLURID_ROUTE_DEFAULT_SPACE","PLURID_ROUTE_DEFAULT_UNIVERSE","PLURID_ROUTE_DEFAULT_CLUSTER","join","PLURID_ROUTE_SEPARATOR","universes","universe","PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE","pluridPlanesRegistrar","App","uuid","generate","pluridPlanes","MultispaceHeader","MultispaceFooter","header","footer","PLURID_ENTITY_MULTISPACE","renderMultispace","routePlane","flat","pluridRoute","Flat","DirectPlane","PluridScrollTop","PluridRouterBrowser","routes","shell","scrollToTop","staticContext","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","link","gatherPluridPlanes","topContainer","pluridIsoMatcher","routePlanes","mounted","useMounted","matchedPath","setMatchedPath","search","computeInitialMatchedPath","setMatchedRoute","setPluridRoute","handleLocation","detail","behavior","scrollIntoView","PluridRouterExterior","PLURID_ROUTER_LOCATION_CHANGED","history","pushState","storage","saveState","PLURID_ROUTER_STORAGE","locationStoredEvent","CustomEvent","PLURID_ROUTER_LOCATION_STORED","dispatchEvent","PluridRouterShell","PluridRouterStatic","protocolProperty","hostnameProperty","gateway","gatewayQuery","gatewayQueryProperty","gatewayEndpoint","gatewayEndpointProperty","PluridProvider","metastate","defaultLinkCoordinates","PluridPortal","elementID","rootID","target","usePortal","createPortal","StyledPluridPlanePreview","ConnectedPluridPlanePreview","planeRoute","previewComponent","previewOffsetX","previewOffsetY","resolvedLinkCoordinates","StyledPluridLink","devisible","suffix","ConnectedPluridLink","stateLastClosedPlane","dispatchUpdateSpaceLinkCoordinates","_devisible","_suffix","className","preview","previewFadeIn","previewFadeOut","previewAppearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN","previewDisappearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT","planeRouteResolved","absolutePlaneRoute","network","PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX","linkElement","hoverInTimeout","hoverOutTimeout","showPreview","setShowPreview","showLink","setShowLink","setPluridPlaneID","setParentPlaneID","setLinkCoordinates","getPluridLinkCoordinates","partialTop","partialLeft","staticSet","searching","top","getComputedStyle","position","offsetTop","offsetLeft","scrollLeft","parentElement","dataset","pluridEntity","planeControlsHeight","debouncedUpdateLinkCoordinates","newLinkCoordinates","updatePlaneLocation","clone","updateLinkCoordinates","togglePlane","updatedPlane","handlePlaneNavigation","handleShowPluridPlane","toggleLinkFromTree","updatedTreePlane","updateTreeWithNewPlane","updateTreeWithLink","defocusLink","blur","openClosedPlaneIndex","closePlaneIndex","removePlaneFromTree","removePlane","onKeyUp","handleKeyUp","PLURID_ENTITY_LINK","commonStyle","StyledPluridRouterLinkAnchor","StyledPluridRouterLinkDiv","PluridRouterLink","asAnchor","asAnchorProperty","themeProperty","pluridRouterNavigate","open","renderProperties","href","StyledPluridApplicationConfigurator","ConnectedPluridApplicationConfigurator","configuratorElement","PLURID_ENTITY_APPLICATION_CONFIGURATOR","StyledPluridPlaneConfigurator","ConnectedPluridPlaneConfigurator","planePlaneID","PLURID_ENTITY_PLANE_CONFIGURATOR","StyledExternalPlane","ConnectedExternalPlane","setComponent","domain","getPttpUrl","pttpPath","getPttpPath","response","method","headers","Accept","body","credentials","json","elementQLClient","ElementQLClient","status","Elements","Element","elementRequest","StyledIframePlane","ConnectedIframePlane","src","VirtualListItem","setHeight","markers","Spinner","PluridSpinner","ConnectedPluridVirtualList","generalHeight","_generalHeight","listElement","rows","heights","start","setStart","end","setEnd","floor","elementHeight","setElementHeight","resizing","setResizing","arithmetic","sum","i","item","random","renderRows","StyledPluridPlaneDebugger","ConnectedPluridPlaneDebugger","StyledPluridSpaceDebugger","ConnectedPluridSpaceDebugger","serverComputeMetastate","isoMatch","paths","globals","pluridApplications","routeData","plurids","clusters","cluster","PLURID_ROUTE_DEFAULT_CLUSTER_VALUE","collectApplicationsFromPath","application","PluridIsoMatcher","RouteParser","PluridRouteParser","internals","PluridPlaneBridge","PluridPlaneControls","PluridPlaneDebugger","PluridSpaceDebugger","Plurid","Application","RouterStatic","RouterBrowser","Link","RouterLink","ApplicationConfigurator","PlaneConfigurator","ExternalPlane","IframePlane","VirtualList","SPACE_LAYOUT","PubSub","PUBSUB_TOPIC","routerNavigate","PluridApplicationConfigurator","PluridExternalPlane","PluridIframePlane","PluridLink","PluridPlaneConfigurator","PluridVirtualList","getDirectPlaneMatch","matchRoute","matchPlane","matchPath","planePath","pluridStateModules","usePluridRouter","routerValue","setRouterValue","fetchState","loadState"],"mappings":"yyBAEAA,OAAOC,eAAwBC,EAAA,aAAc,CACzCC,OAAO,IAGX,IAAIC,EAAaC,EAAAA,QAEbC,EAAeC,EAAAA,QAEfC,EAAeC,EAAAA,QAEfC,EAAQC,EAAAA,QAERC,EAAaC,EAAAA,QAEbC,EAAUC,EAAAA,QAEVC,EAAkBC,EAAAA,QAElBC,EAAWC,EAAAA,QAEXC,EAASC,EAAAA,QAETC,EAAuBC,EAAAA,QAEvBC,EAAmBC,EAAAA,QAEnBC,EAA0BC,EAAAA,QAE1BC,EAAWC,EAAAA,QAEXC,EAAQC,EAAAA,QAERC,EAAuBC,EAAAA,QAE3B,SAASC,EAAsBC,GAC3B,OAAOA,GAAkB,iBAANA,GAAkB,YAAaA,EAAIA,EAAI,CACtDC,QAASD,EAEhB,CAsBD,IAAIE,EAAwBH,EAAsB1B,GAE9C8B,EAAiBJ,EAAsBxB,GAEvC6B,EAAkBL,EAAsBhB,GAExCsB,EAAkBN,EAAsBd,GAExCqB,EAAiBP,EAAsBJ,GAE3C,MAAMY,EAAgBJ,EAAe,QAAWK,mBAAcC,GAExDC,EAAiB7C,OAAO8C,OAAO,CAAA,EAAI1C,EAAW2C,sBAE9CC,EAAgBlC,EAAQmC,YAAY,CACtCC,KAAM,gBACNC,aAAcN,EACdO,SAAU,CACNC,iBAAkB,CAACC,EAAOC,KACtBD,EAAQtD,OAAO8C,OAAO9C,OAAO8C,OAAO,CAAE,EAAEQ,GAAQC,EAAOC,QAAAA,EAE3DC,sBAAuBH,IACnBA,EAAMI,SAASC,QAAQC,MAAO,EAC9BN,EAAMI,SAASG,MAAMC,SAASF,MAAO,EACrCN,EAAMI,SAASK,SAASH,MAAO,CAAA,EAEnCI,8BAA+B,CAACV,EAAOC,KACnCD,EAAMI,SAASG,MAAMC,SAASF,KAAOL,EAAOC,OAAAA,EAEhDS,6BAA8B,CAACX,EAAOC,KAClCD,EAAMI,SAASG,MAAMK,QAAUX,EAAOC,OAAAA,EAE1CW,6BAA8B,CAACb,EAAOC,KAClC,MAAMa,EAAe,CACjBC,QAASd,EAAOC,QAChBc,YAA2C,iBAAvBhB,EAAMiB,OAAOC,MAAqBlB,EAAMiB,OAAOC,MAAMF,YAAc,UAE3FhB,EAAMiB,OAAOC,MAAQJ,CAAAA,EAEzBK,iCAAkC,CAACnB,EAAOC,KACtC,MAAMa,EAAe,CACjBC,QAAuC,iBAAvBf,EAAMiB,OAAOC,MAAqBlB,EAAMiB,OAAOC,MAAMH,QAAU,SAC/EC,YAAaf,EAAOC,SAExBF,EAAMiB,OAAOC,MAAQJ,CAAAA,EAEzBM,yBAA0B,CAACpB,EAAOC,KAC9BD,EAAMiB,OAAOI,SAAWpB,EAAOC,OAAAA,EAEnCoB,gCAAiC,CAACtB,EAAOC,KACrCD,EAAMI,SAASK,SAASH,KAAOL,EAAOC,OAAAA,EAE1CqB,mCAAoC,CAACvB,EAAOC,KACxCD,EAAMI,SAASK,SAASe,QAAUvB,EAAOC,OAAAA,EAE7CuB,kCAAmC,CAACzB,EAAOC,KACvCD,EAAMI,SAASK,SAASiB,OAASzB,EAAOC,OAAAA,EAE5CyB,mCAAoC3B,IAChC,MAAO4B,QAASA,GAAW5B,EAAMI,SAASK,SAC1CT,EAAMI,SAASK,SAASmB,SAAWA,CAAAA,EAEvCC,kCAAmC7B,IAC/B,MAAO4B,QAASA,GAAW5B,EAAMI,SAASC,QAC1CL,EAAMI,SAASC,QAAQuB,SAAWA,CAAAA,EAEtCE,yCAA0C9B,IACtC,MAAO+B,eAAgBA,GAAkB/B,EAAMI,SAASC,QACxDL,EAAMI,SAASC,QAAQ0B,gBAAkBA,CAAAA,EAE7CC,2CAA4ChC,IACxC,MAAOiC,iBAAkBA,GAAoBjC,EAAMI,SAASC,QAC5DL,EAAMI,SAASC,QAAQ4B,kBAAoBA,CAAAA,EAE/CC,uCAAwClC,IACpC,MAAOM,KAAMA,GAAQN,EAAMmC,MAAMC,gBACjCpC,EAAMmC,MAAMC,gBAAgB9B,MAAQA,CAAAA,EAExC+B,iCAAkCrC,IAC9B,MAAO0B,OAAQA,GAAU1B,EAAMI,SAASC,QACxCL,EAAMI,SAASC,QAAQqB,QAAUA,CAAAA,EAErCY,sCAAuCtC,IACnCA,EAAMiB,OAAOsB,eAAiBvC,EAAMiB,OAAOsB,aAAAA,EAE/CC,yCAA0C,CAACxC,EAAOC,KAC9CD,EAAMmC,MAAMC,gBAAgBK,KAAOxC,EAAOC,OAAAA,EAE9CwC,mCAAoC,CAAC1C,EAAOC,KACpCD,EAAMmC,MAAMQ,gBAAkB1C,EAAOC,QACrCF,EAAMmC,MAAMQ,cAAgB1C,EAAOC,QAEnCF,EAAMmC,MAAMQ,cAAgB7F,EAAW8F,gBAAgBC,GAC1D,EAELC,2CAA4C,CAAC9C,EAAOC,KAChDD,EAAMmC,MAAMY,mBAAqB9C,EAAOC,OAAAA,EAE5C8C,oCAAqC,CAAChD,EAAOC,KACzCD,EAAMmC,MAAMc,eAAiBhD,EAAOC,OAAAA,EAExCgD,oCAAqClD,IACjC,MAAOmD,YAAaA,GAAenD,EAAMmC,MACzCnC,EAAMmC,MAAMgB,aAAeA,CAAAA,EAE/BC,uCAAwC,CAACpD,EAAOC,KAC5C,MAAOoD,eAAgBA,GAAkBrD,EAAMI,SAASC,QACxD,GAAIgD,EAAeC,SAASrD,EAAOC,SAAU,CACzC,MAAMqD,EAAiBF,EAAeG,QAAQC,GAAMA,IAAOxD,EAAOC,UAClEF,EAAMI,SAASC,QAAQgD,eAAiB,IAAKE,EAC1C,MACHvD,EAAMI,SAASC,QAAQgD,eAAiB,IAAKA,EAAgBpD,EAAOC,QACvE,EAELwD,oCAAqC,CAAC1D,EAAOC,KACzC,MAAO0D,eAAgBA,GAAkB3D,EAAMmC,MACzCyB,EAAwBlH,OAAO8C,OAAO,CAAE,EAAEmE,GAChDC,EAAsB3D,EAAOC,UAAYyD,EAAe1D,EAAOC,SAC/DF,EAAMmC,MAAMwB,eAAiBjH,OAAO8C,OAAO,CAAA,EAAIoE,EAAAA,EAEnDC,4BAA6B,CAAC7D,EAAOC,KACjC,MAAM6D,EAAS,CACXC,KAAMjH,EAAWkH,aAAa/D,EAAOC,UAEzCF,EAAMmC,MAAM2B,OAASpH,OAAO8C,OAAO,CAAA,EAAIsE,EAAAA,EAE3CG,qCAAsC,CAACjE,EAAOC,KAC1CD,EAAMmC,MAAM+B,gBAAkBjE,EAAOC,OAAAA,KAK3CiE,EAAYzE,EAAc0E,QAE1BC,EAAmBrE,GAASA,EAAMN,cAElC4E,EAAc,CAChBD,iBAAkBA,GAGhBE,EAAY7E,EAAc8E,QAEhC,IAAIC,EAAkB/H,OAAOgI,OAAO,CAChCC,UAAW,KACXjF,cAAeA,EACf0E,QAASD,EACTE,iBAAkBA,EAClBO,UAAWN,EACXE,QAASD,IAGb,MAEMxD,EAAUvD,EAAQmC,YAAY,CAChCC,KAAM,UACNC,aAJmB,CAAA,EAKnBC,SAAU,CAAE,IAGV+E,EAAY9D,EAAQqD,QAEpBU,EAAa9E,GAASA,EAAMe,QAE5BgE,EAAc,CAChBD,WAAYA,GAGVE,EAAYjE,EAAQyD,QAE1B,IAAIS,EAAYvI,OAAOgI,OAAO,CAC1BC,UAAW,KACX5D,QAASA,EACTqD,QAASS,EACTC,WAAYA,EACZF,UAAWG,EACXP,QAASQ,IAGb,MAIME,EAAY1H,EAAQmC,YAAY,CAClCC,KAAM,YACNC,aANmB,CACnBoB,QAAQ,GAMRnB,SAAU,CACNqF,mBAAoB,CAACnF,EAAOC,KACxBD,EAAMiB,OAAShB,EAAOC,OAAAA,KAK5BkF,EAAYF,EAAUd,QAEtBiB,GAAYrF,GAASA,EAAMkF,UAAUjE,OAErCqE,GAAc,CAChBD,UAAWA,IAGTE,GAAYL,EAAUV,QAE5B,IAAIgB,GAAc9I,OAAOgI,OAAO,CAC5BC,UAAW,KACXO,UAAWA,EACXd,QAASgB,EACTC,UAAWA,GACXT,UAAWU,GACXd,QAASe,KAGb,MAAOE,eAAgBA,GAAgBC,oBAAqBA,GAAqBC,mBAAoBA,GAAoBC,uBAAwBC,GAA0BC,mBAAoBA,GAAoBC,4BAA6BA,GAA6BC,uBAAwBA,GAAwBC,UAAWC,IAAyBlJ,EAAamJ,QAEvWC,WAAYC,GAAoBC,aAAcA,GAAcC,oBAAqBA,IAAuBvJ,EAAawJ,SAErHC,WAAYC,GAAcC,OAAQC,IAAY5J,EAAagE,aAE3D6F,SAAUC,IAAcJ,IAExBK,uBAAwBC,GAA0BC,aAAcC,GAAgBC,wBAAyBC,GAA2BC,YAAaC,GAAeC,gBAAiBC,IAAqBZ,GAEvMa,GAAgBC,IAClB,MAAOC,aAAcA,EAAcC,aAAcA,EAAcC,aAAcA,EAAcC,UAAWA,EAAWC,UAAWA,EAAWC,MAAOA,GAASN,EAGjJO,GAAmC,EAAhBN,GAFY,oBAAXO,OAAyB,IAAMA,OAAOC,WAAa,GAGvEC,GAAmC,EAAhBR,GAFa,oBAAXM,OAAyB,IAAMA,OAAOG,YAAc,GAGzEC,GAAmC,EAAhBT,EACnBU,EAAiBrB,GAAeJ,IAAYgB,GAAYhB,IAAYiB,IACpES,EAAoBhB,GAAkBG,EAAcC,EAAcC,GAClEY,EAAkBnB,GAAcU,GAChCU,EAAkBtB,GAA0B,CAAEoB,EAAmBhB,GAAkBS,EAAkBG,EAAkBE,GAAmBC,EAAgBf,IAAmBS,GAAmBG,GAAmBE,GAAmBG,IAE5O,OADkBzB,GAAyB0B,EACpCC,EA0DX,IAAIC,GAAclM,OAAOgI,OAAO,CAC5BC,UAAW,KACXkE,SAjDa7I,GAASA,EAAMmC,MAkD5B2G,WAhDe9I,GAASA,EAAMmC,MAAM4G,QAiDpCC,mBA/CuBhJ,GAASA,EAAMmC,MAAMwG,UAgD5CM,qBA9CyBjJ,GAASA,EAAMmC,MAAM+G,kBA+C9CC,iBA7CqBnJ,GAASA,EAAMmC,MAAMiH,cA8C1CC,aA5CiBrJ,GAASA,EAAMmC,MAAM2F,UA6CtCwB,aA3CiBtJ,GAASA,EAAMmC,MAAM4F,UA4CtCwB,gBA1CoBvJ,GAASA,EAAMmC,MAAMwF,aA2CzC6B,gBAzCoBxJ,GAASA,EAAMmC,MAAMyF,aA0CzC6B,gBAxCoBzJ,GAASA,EAAMmC,MAAM0F,aAyCzC6B,SAvCa1J,GAASA,EAAMmC,MAAM6F,MAwClC2B,QAtCY3J,GAASA,EAAMmC,MAAMyH,KAuCjCC,aArCiB7J,IAAU,CAC3B8H,UAAW9H,EAAMmC,MAAM2F,UACvBC,UAAW/H,EAAMmC,MAAM4F,UACvBJ,aAAc3H,EAAMmC,MAAMwF,aAC1BC,aAAc5H,EAAMmC,MAAMyF,aAC1BC,aAAc7H,EAAMmC,MAAM0F,aAC1BG,MAAOhI,EAAMmC,MAAM6F,QAgCnB8B,oBA7BwB9J,GAASA,EAAMmC,MAAM4H,iBA8B7CC,QA5BYhK,GAASA,EAAMmC,MAAM8H,KA6BjCC,YA3BgBlK,GAASA,EAAMmC,MAAMgI,SA4BrCC,cA1BkBpK,GAASA,EAAMmC,MAAMkI,WA2BvCC,iBAzBqBtK,GAASA,EAAMmC,MAAMoI,cA0B1CC,gBAxBoBxK,GAASA,EAAMmC,MAAMsI,aAyBzCC,mBAvBuB1K,GAASA,EAAMmC,MAAMwI,kBA0BhD,MAAOC,UAAWA,IAAalN,EAAgBmN,YAAYC,SAErDC,GAAiB,CACnBhC,SAAS,EACTJ,UAAW,4CACXO,mBAAmB,EACnBE,cAAe,IACfpB,MAAO,EACPF,UAAW,EACXC,UAAW,EACXJ,aAAc,EACdC,aAAc,EACdC,aAAc,EACd+B,KAAM,GACNG,iBAAkB,GAClBiB,OAAQ,CACJC,EAAG,EACHC,EAAG,EACHC,EAAG,GAEPhB,SAAU,CACNiB,MAAyB,oBAAXlD,OAAyB,KAAOA,OAAOC,WACrDkD,OAA0B,oBAAXnD,OAAyB,IAAMA,OAAOG,aAEzDiD,UAAW,CACPF,MAAyB,oBAAXlD,OAAyB,KAAOA,OAAOC,WACrDkD,OAA0B,oBAAXnD,OAAyB,IAAMA,OAAOG,YACrDkD,MAAO,EACPC,UAAW,CACPP,EAAG,EACHC,EAAG,EACHC,EAAG,IAGXlB,KAAM,GACNI,WAAY,GACZE,cAAe,GACfE,aAAc,GACdE,gBAAiB,IAGf/K,GAAO,QAEPuC,GAAQ3E,EAAQmC,YAAY,CAC9BC,KAAMA,GACNC,aAAckL,GACdjL,SAAU,CACN2L,cAAe,CAACzL,EAAOC,KACnB,MAAOyL,MAAOA,EAAO7O,MAAOA,GAASoD,EAAOC,QAC5CF,EAAM0L,GAAS7O,CAAAA,EAEnB8O,gBAAiB,CAAC3L,EAAOC,KACrBD,EAAM+I,QAAU9I,EAAOC,OAAAA,EAE3B0L,gBAAiB,CAAC5L,EAAOC,KAAR,EACjB4L,aAAc,CAAC7L,EAAOC,KAClB,MAAO0H,aAAcA,EAAcC,aAAcA,EAAcC,aAAcA,EAAcC,UAAWA,EAAWC,UAAWA,EAAWC,MAAOA,GAAS/H,EAAOC,QACxJ4L,EAAuBnE,QAAmDA,EAAe3H,EAAM2H,aAC/FoE,EAAuBnE,QAAmDA,EAAe5H,EAAM4H,aAC/FoE,EAAuBnE,QAAmDA,EAAe7H,EAAM6H,aAC/FoE,EAAoBnE,QAA6CA,EAAY9H,EAAM8H,UACnFoE,EAAoBnE,QAA6CA,EAAY/H,EAAM+H,UACnFoE,EAAgBnE,QAAqCA,EAAQhI,EAAMgI,MACzEhI,EAAM2H,aAAemE,EACrB9L,EAAM4H,aAAemE,EACrB/L,EAAM6H,aAAemE,EACrBhM,EAAM8H,UAAYmE,EAClBjM,EAAM+H,UAAYmE,EAClBlM,EAAMgI,MAAQmE,CAAAA,EAElBC,qBAAsB,CAACpM,EAAOC,KAC1BD,EAAMkJ,kBAAoBjJ,EAAOC,OAAAA,EAErCmM,iBAAkB,CAACrM,EAAOC,KACtBD,EAAMoJ,cAAgBnJ,EAAOC,OAAAA,EAEjCoM,iBAAkB,CAACtM,EAAOC,KACtB,MAAMsM,EAAW7P,OAAO8C,OAAO9C,OAAO8C,OAAO,CAAE,EAAEQ,GAAQC,EAAOC,SAC1DyI,EAAYlB,GAAc8E,GAChC,OAAO7P,OAAO8C,OAAO9C,OAAO8C,OAAO,CAAA,EAAI+M,GAAW,CAC9C5D,UAAWA,KAGnB6D,sBAAuBxM,IACnBA,EAAM6H,aAAe7H,EAAM6H,aAA6C,EAA9B/K,EAAW2P,iBAAuBC,KAAKC,IAAI/B,IAAW5K,EAAM+H,YACtG/H,EAAM2H,aAAe3H,EAAM2H,aAA6C,EAA9B7K,EAAW2P,iBAAuBC,KAAKE,IAAIhC,IAAW5K,EAAM+H,YACtG/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC6M,uBAAwB7M,IACpBA,EAAM6H,aAAe7H,EAAM6H,aAA6C,EAA9B/K,EAAW2P,iBAAuBC,KAAKC,IAAI/B,IAAW5K,EAAM+H,YACtG/H,EAAM2H,aAAe3H,EAAM2H,aAA6C,EAA9B7K,EAAW2P,iBAAuBC,KAAKE,IAAIhC,IAAW5K,EAAM+H,YACtG/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC8M,mBAAoB9M,IAChBA,EAAM2H,aAAe3H,EAAM2H,aAA6C,EAA9B7K,EAAW2P,iBAAuBC,KAAKC,IAAI/B,GAAU5K,EAAM+H,YACrG/H,EAAM6H,aAAe7H,EAAM6H,aAA6C,EAA9B/K,EAAW2P,iBAAuBC,KAAKE,IAAIhC,GAAU5K,EAAM+H,YACrG/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC+M,oBAAqB/M,IACjBA,EAAM2H,aAAe3H,EAAM2H,aAA6C,EAA9B7K,EAAW2P,iBAAuBC,KAAKC,IAAI/B,GAAU5K,EAAM+H,YACrG/H,EAAM6H,aAAe7H,EAAM6H,aAA6C,EAA9B/K,EAAW2P,iBAAuBC,KAAKE,IAAIhC,GAAU5K,EAAM+H,YACrG/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCgN,iBAAkBhN,IACdA,EAAM4H,aAAe5H,EAAM4H,aAA6C,EAA9B9K,EAAW2P,iBACrDzM,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCiN,mBAAoBjN,IAChBA,EAAM4H,aAAe5H,EAAM4H,aAA6C,EAA9B9K,EAAW2P,iBACrDzM,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCkN,iBAAkBlN,IACdA,EAAM8H,WAAa9H,EAAM8H,UAAYhL,EAAWqQ,eAAiB,IACjEnN,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCoN,mBAAoBpN,IAChBA,EAAM8H,WAAa9H,EAAM8H,UAAYhL,EAAWqQ,eAAiB,IACjEnN,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCqN,mBAAoBrN,IAChBA,EAAM+H,WAAa/H,EAAM+H,UAAYjL,EAAWqQ,eAAiB,IACjEnN,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCsN,oBAAqBtN,IACjBA,EAAM+H,WAAa/H,EAAM+H,UAAYjL,EAAWqQ,eAAiB,IACjEnN,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCuN,SAAUvN,IACNA,EAAM8H,WAAa9H,EAAM8H,UAAYhL,EAAWqQ,eAAiB,IACjEnN,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCwN,WAAYxN,IACRA,EAAM8H,WAAa9H,EAAM8H,UAAYhL,EAAWqQ,eAAiB,IACjEnN,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCyN,QAAS,CAACzN,EAAOC,KACbD,EAAM8H,UAAY7H,EAAOC,QACzBF,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC0N,YAAa,CAAC1N,EAAOC,KACjBD,EAAM8H,UAAY9H,EAAM8H,UAAY7H,EAAOC,QAC3CF,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC2N,WAAY3N,IACRA,EAAM+H,WAAa/H,EAAM+H,UAAYjL,EAAWqQ,eAAiB,IACjEnN,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC4N,YAAa5N,IACTA,EAAM+H,WAAa/H,EAAM+H,UAAYjL,EAAWqQ,eAAiB,IACjEnN,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC6N,QAAS,CAAC7N,EAAOC,KACbD,EAAM+H,UAAY9H,EAAOC,QACzBF,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC8N,YAAa,CAAC9N,EAAOC,KACjBD,EAAM+H,UAAY/H,EAAM+H,UAAY9H,EAAOC,QAC3CF,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC+N,YAAa/N,IACTA,EAAM4H,aAAe5H,EAAM4H,aAAe9K,EAAW2P,iBACrDzM,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCgO,cAAehO,IACXA,EAAM4H,aAAe5H,EAAM4H,aAAe9K,EAAW2P,iBACrDzM,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCiO,cAAejO,IACXA,EAAM2H,aAAe3H,EAAM2H,aAAe7K,EAAW2P,iBAAmBC,KAAKC,IAAI/B,GAAU5K,EAAM+H,YACjG/H,EAAM6H,aAAe7H,EAAM6H,aAAe/K,EAAW2P,iBAAmBC,KAAKE,IAAIhC,GAAU5K,EAAM+H,YACjG/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCkO,eAAgBlO,IACZA,EAAM2H,aAAe3H,EAAM2H,aAAe7K,EAAW2P,iBAAmBC,KAAKC,IAAI/B,GAAU5K,EAAM+H,YACjG/H,EAAM6H,aAAe7H,EAAM6H,aAAe/K,EAAW2P,iBAAmBC,KAAKE,IAAIhC,GAAU5K,EAAM+H,YACjG/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCmO,YAAanO,IACTA,EAAM6H,aAAe7H,EAAM6H,aAA6C,EAA9B/K,EAAW2P,iBAAuBC,KAAKC,IAAI/B,IAAW5K,EAAM+H,YACtG/H,EAAM2H,aAAe3H,EAAM2H,aAA6C,EAA9B7K,EAAW2P,iBAAuBC,KAAKE,IAAIhC,IAAW5K,EAAM+H,YACtG/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCoO,aAAcpO,IACVA,EAAM6H,aAAe7H,EAAM6H,aAA6C,EAA9B/K,EAAW2P,iBAAuBC,KAAKC,IAAI/B,IAAW5K,EAAM+H,YACtG/H,EAAM2H,aAAe3H,EAAM2H,aAA6C,EAA9B7K,EAAW2P,iBAAuBC,KAAKE,IAAIhC,IAAW5K,EAAM+H,YACtG/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCqO,eAAgB,CAACrO,EAAOC,KACpBD,EAAM2H,aAAe3H,EAAM2H,aAAe1H,EAAOC,QAAUwM,KAAKC,IAAI/B,GAAU5K,EAAM+H,YACpF/H,EAAM6H,aAAe7H,EAAM6H,aAAe5H,EAAOC,QAAUwM,KAAKE,IAAIhC,GAAU5K,EAAM+H,YACpF/H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCsO,eAAgB,CAACtO,EAAOC,KACpBD,EAAM4H,aAAe5H,EAAM4H,aAAe3H,EAAOC,QACjDF,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCuO,eAAgB,CAACvO,EAAOC,KACpBD,EAAM6H,aAAe7H,EAAM6H,aAAe5H,EAAOC,QACjDF,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCwO,QAASxO,IACL,MAAMyO,EAAgBzO,EAAMgI,MAAQlL,EAAW4R,WACzC1G,EAAQyG,EAAgB3R,EAAW6R,kBAAoBF,EAAgB3R,EAAW6R,kBACxF3O,EAAMgI,MAAQA,EACdhI,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC4O,UAAW5O,IACP,MAAMyO,EAAgBzO,EAAMgI,MAAQlL,EAAW4R,WACzC1G,EAAQyG,EAAgB3R,EAAW+R,kBAAoBJ,EAAgB3R,EAAW+R,kBACxF7O,EAAMgI,MAAQA,EACdhI,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpC8O,YAAa,CAAC9O,EAAOC,KACjB,MAAMwO,EAAgBzO,EAAMgI,MAAQ0E,KAAKqC,IAAI9O,EAAOC,SAC9C8H,EAAQyG,EAAgB3R,EAAW6R,kBAAoBF,EAAgB3R,EAAW6R,kBACxF3O,EAAMgI,MAAQA,EACdhI,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCgP,cAAe,CAAChP,EAAOC,KACnB,MAAMwO,EAAgBzO,EAAMgI,MAAQ0E,KAAKqC,IAAI9O,EAAOC,SAC9C8H,EAAQyG,EAAgB3R,EAAW+R,kBAAoBJ,EAAgB3R,EAAW+R,kBACxF7O,EAAMgI,MAAQA,EACdhI,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCiP,QAAS,CAACjP,EAAOC,KACbD,EAAM4J,KAAO,IAAK3J,EAAOC,QAAAA,EAE7BgP,kBAAmB,CAAClP,EAAOC,KACvBD,EAAM+J,iBAAmB9J,EAAOC,OAAAA,EAEpCiP,oBAAqBnP,IACjBA,EAAMgI,MAAQ,EACdhI,EAAM8H,UAAY,EAClB9H,EAAM+H,UAAY,EAClB/H,EAAM2H,aAAe,EACrB3H,EAAM4H,aAAe,EACrB5H,EAAM6H,aAAe,EACrB7H,EAAM2I,UAAYlB,GAAczH,EAAAA,EAEpCoP,YAAa,CAACpP,EAAOC,KACjBD,EAAMmK,SAAWlK,EAAOC,OAAAA,EAE5BmP,aAAc,CAACrP,EAAOC,KAClBD,EAAMsL,UAAYrL,EAAOC,OAAAA,EAE7BoP,qBAAsB,CAACtP,EAAOC,KAC1B,MAAMsP,EAAcvS,EAAa+D,QAAQ6I,KAAK4F,gBAAgBxP,EAAM4J,KAAM3J,EAAOC,SACjFF,EAAM4J,KAAO2F,CAAAA,EAEjBE,2BAA4B,CAACzP,EAAOC,KAChC,MAAOyP,QAASA,EAASC,gBAAiBA,GAAmB1P,EAAOC,QAC9DqP,EAAcvS,EAAa+D,QAAQ6I,KAAKgG,uCAAuC5P,EAAM4J,KAAM8F,EAASC,GAC1G3P,EAAM4J,KAAO2F,CAAAA,EAEjBM,aAAc,CAAC7P,EAAOC,KAClBD,EAAMiK,KAAOhK,EAAOC,OAAAA,EAExB4P,mBAAoB,CAAC9P,EAAOC,KACxBD,EAAMqK,WAAapK,EAAOC,OAAAA,KAKhC6P,GAAY5N,GAAMiC,QAElB4L,GAAY7N,GAAMqC,QAExB,IAAIyL,GAAUvT,OAAOgI,OAAO,CACxBC,UAAW,KACX/E,KAAMA,GACNuC,MAAOA,GACPiC,QAAS2L,GACTnL,UAAWgE,GACXpE,QAASwL,KAGb,MAAME,GAAiB,CACnBnP,QAASnD,EAASuS,OAClBnP,YAAapD,EAASuS,QAGpBC,GAAS5S,EAAQmC,YAAY,CAC/BC,KAAM,SACNC,aAAcqQ,GACdpQ,SAAU,CACNuQ,gBAAiB,CAACrQ,EAAOC,KACrBD,EAAMe,QAAUd,EAAOC,OAAAA,EAE3BoQ,oBAAqB,CAACtQ,EAAOC,KACzBD,EAAMgB,YAAcf,EAAOC,OAAAA,KAKjCqQ,GAAYH,GAAOhM,QAEnBoM,GAAkBxQ,GAASA,EAAMoQ,OAAOrP,QAExC0P,GAAsBzQ,GAASA,EAAMoQ,OAAOrP,QAE5C2P,GAAc,CAChBF,gBAAiBA,GACjBC,oBAAqBA,IAGnBE,GAAYP,GAAO5L,QAEzB,IAAIoM,GAAWlU,OAAOgI,OAAO,CACzBC,UAAW,KACXyL,OAAQA,GACRhM,QAASmM,GACTC,gBAAiBA,GACjBC,oBAAqBA,GACrB7L,UAAW8L,GACXlM,QAASmM,KAGb,MAIME,GAAKrT,EAAQmC,YAAY,CAC3BC,KAAM,KACNC,aANiB,CACjBiR,sBAAuB,GAMvBhR,SAAU,CACNiR,2BAA4B,CAAC/Q,EAAOC,KAChCD,EAAM8Q,sBAAwB7Q,EAAOC,OAAAA,KAK3C8Q,GAAYH,GAAGzM,QAEf6M,GAA2BjR,GAASA,EAAM6Q,GAAGC,sBAE7CI,GAAc,CAChBD,yBAA0BA,IAGxBE,GAAYN,GAAGrM,QAErB,IASI4M,GAAU,CACV1R,cAAe+E,EACf1D,QAASkE,EACTC,UAAWM,GACXrD,MAAO8N,GACPG,OAAQQ,GACRC,GAfOnU,OAAOgI,OAAO,CACrBC,UAAW,KACXkM,GAAIA,GACJzM,QAAS4M,GACTC,yBAA0BA,GAC1BrM,UAAWsM,GACX1M,QAAS2M,MAYb,MAAM3M,GAAUhH,EAAQ6T,gBAAgB,CACpC3R,cAAe0R,GAAQ1R,cAAc8E,QACrCzD,QAASqQ,GAAQrQ,QAAQyD,QACzBU,UAAWkM,GAAQlM,UAAUV,QAC7BrC,MAAOiP,GAAQjP,MAAMqC,QACrB4L,OAAQgB,GAAQhB,OAAO5L,QACvBqM,GAAIO,GAAQP,GAAGrM,UASb8M,GANUC,GAAkB/T,EAAQgU,eAAe,CACrDD,eAAgBA,EAChB/M,QAASA,GACTiN,UAAU,IAKRC,GAAe1S,EAA0BK,QAAAA,cAAc,CAAE,GAgB/D,SAASsS,GAAUC,EAASC,EAAYC,EAAGC,GAMvC,OAAO,IAAKD,IAAMA,EAAIE,WAAAA,SAAoBC,EAASC,GAC/C,SAASC,EAAUtV,GACf,IACIuV,EAAKL,EAAUM,KAAKxV,GAGvB,CAFC,MAAOgC,GACLqT,EAAOrT,EACV,CACJ,CACD,SAASyT,EAASzV,GACd,IACIuV,EAAKL,EAAmBlV,MAAAA,GAG3B,CAFC,MAAOgC,GACLqT,EAAOrT,EACV,CACJ,CACD,SAASuT,EAAKG,GApBlB,IAAe1V,EAqBP0V,EAAOC,KAAOP,EAAQM,EAAO1V,QArBtBA,EAqBqC0V,EAAO1V,MApBhDA,aAAiBiV,EAAIjV,EAAQ,IAAIiV,YAAYG,GAChDA,EAAQpV,EACX,KAkB6D4V,KAAKN,EAAWG,EAC7E,CACDF,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OACjE,GACJ,CAED,MAAMM,GAAU3T,EAAe,QAAWK,cAAc,MAExD,IAAI+E,GAAU,CACV1E,cAAe0R,GAAQ1R,cAAc0E,QACrCrD,QAASqQ,GAAQrQ,QAAQqD,QACzBc,UAAWkM,GAAQlM,UAAUd,QAC7BjC,MAAOiP,GAAQjP,MAAMiC,QACrBgM,OAAQgB,GAAQhB,OAAOhM,QACvByM,GAAIO,GAAQP,GAAGzM,SAGnB,MAAOqC,WAAYA,GAAYkC,UAAWA,GAAWhC,OAAQA,IAAU3J,EAAagE,aAE7E6F,SAAU+L,GAAYC,SAAUA,IAAYpM,IAE5CqM,sBAAuBA,GAAuBvL,gBAAiBwL,GAAmBC,cAAeA,GAAeC,kBAAmBA,GAAmBC,cAAeA,GAAeC,cAAeA,IAAiBxK,GAAU5H,SAE9NqS,mBAAoBA,GAAoBC,sBAAuBA,GAAuBC,kBAAmBA,IAAqB3K,GAAU4K,UAExItM,aAAcuM,GAAgBjM,gBAAiBkM,GAAsBpM,YAAaqM,GAAevM,wBAAyBwM,IAA6BhN,GAExJiN,GAAqB,CAACzN,EAAQzG,EAAeuK,KAC/C,MAAM4J,EAAmB7W,EAAa+D,QAAQrB,cAAcoU,MAAMpU,GAClE,GAAIyG,EACA,IAAK,MAAM5F,KAAS4F,EAAQ,CACxB,MAAM4N,EAAY/N,GAAuBzF,GACxBvD,EAAawJ,QAAQF,aAAayN,EAAUC,MAIhE,CAEL,MAAMC,EAAchK,GAAQ,GACtBiK,EAAe,GACrB,IAAK,MAAMC,KAAYF,EACnB,GAAwB,iBAAbE,EAAuB,CAC9B,MAAMC,EAAWpX,EAAawJ,QAAQF,aAAa6N,GACnD,IAAKC,EACD,SAEJF,EAAaG,KAAKD,EAASJ,MAC9B,CAEL,MAAMM,EAAS,kBAETC,EADY,IAAIrO,GAAsBC,EAAQmO,GAClBE,SAWlC,MAJa,CACTC,aAPc,IAAIzX,EAAamF,MAAMyH,KAAK8K,KAAK,CAC/CvO,OAAQoO,EACR7U,cAAemU,EACf5J,KAAMiK,GACPI,GAC4BK,UAG3Bd,iBAAkBA,EAEfe,EA6DLC,GAd8B,MAChC,IAAIC,EACJ,OAAOC,IACH,MAAMC,EAA+B9U,GAAW6U,EAAS3Q,GAAQjC,MAAMiK,qBAAqBlM,IAC5F8U,GAA6B,GACzBF,GACAG,aAAaH,GAEjBA,EAAUI,YAAU,KAChBF,GAA6B,EAChC,GAAGlY,EAAWqY,0CAAAA,CAA0C,EAIpCC,GAEvBC,GAAwB,CAACN,EAAUxU,EAAO+U,EAAOC,GAAY,KAC/D,GAAID,IAAUA,EAAME,SAAWF,EAAMG,SACjC,OAEJ,IAAKlV,EACD,OAEJ,MACMmV,EAAwBxV,GAAW6U,EAAS3Q,GAAQjC,MAAMsJ,cAAcvL,KACvEqT,SAAUA,EAAU5K,UAAWA,GArEbpI,KACzB,MAAOoV,SAAUA,GAAYpV,GACtBqV,WAAYA,EAAYC,WAAYA,EAAYC,WAAYA,EAAYjI,QAASA,GAAW8H,EAoCnG,MAAO,CACHhN,UApCiB,MACjB,MAAMR,EAA+B,oBAAXD,OAAyB,IAAMA,OAAOC,WAAa,EACvEE,EAAgC,oBAAXH,OAAyB,IAAMA,OAAOG,YAAc,EACzEJ,GAAiC,EAAd2N,EAAkBzN,EACrCC,GAAiC,EAAdyN,EAAkBxN,EACrCC,GAAiC,EAAdwN,EACnBvN,EAAiBiL,GAAe,EAAGZ,GAAW/E,IAC9CrF,EAAoBiL,GAAqBmC,EAAYC,EAAYC,GACjErN,EAAkBiL,GAAc,GAChChL,EAAkBiL,GAA0B,CAAEnL,EAAmBiL,GAAqBxL,EAAkBG,EAAkBE,GAAmBC,EAAgBkL,IAAsBxL,GAAmBG,GAAmBE,GAAmBG,IAC5OsN,EAAyB5C,GAAcD,GAAcxK,IACrDsN,EAA0B/C,GAAkB8C,GAC5CE,EAAS7C,GAAmB4C,GAC5BE,EAAY7C,GAAsB2C,GAClChO,EAAQsL,GAAkB0C,GAShC,MARkB,CACdrO,aAAcuO,EAAUN,WACxBhO,aAAcsO,EAAUL,WACxBhO,aAAcqO,EAAUJ,WACxBhO,UAAW+K,GAASoD,EAAOxI,SAC3B1F,UAAW8K,GAASoD,EAAOpI,SAC3B7F,MAAOA,EAAMA,MAEVW,EAEOkB,GAYd0J,SAXgB,MAChB,MAAM4C,EAAStI,EAAU,IAAM,GAAK,EAC9BuI,EAASvI,EAAU,KAAO,EAAI,EAC9BwI,EAAUxI,EAAU,KAAMtN,EAAM+V,cAAgB,IAAU,EAC1DC,EAAYzD,GAAsB,CAAEC,IAAmB6C,GAAaC,EAAYM,EAASL,GAAa9C,GAAcJ,GAAW/E,IAAWkF,GAAkB6C,EAAYC,EAAYO,EAASN,GAAa/C,KAAoB6C,EAAaS,IAAWR,EAAYM,EAASL,KAEjR,OADiB7C,GAAkBsD,EAC5BhD,EAEMiD,KAgCkCC,CAAqBlW,GAF3CL,MAG7B2U,GAAqBE,GACrBW,EAAsB,CAClBhK,MAAO,YACP7O,MAAO0W,IANkBrT,EAQRxD,OAAO8C,OAAO,CAAA,EAAImJ,GARCoM,EAAS3Q,GAAQjC,MAAM0J,aAAa3L,IASxEqV,GACAG,EAAsB,CAClBhK,MAAO,eACP7O,MAAO,KAGfqY,iBAhoB2BxF,KAC3B,MAAMgH,EAAW,QAAQhH,EAAU5S,EAAW6Z,wBACxCC,EAAcC,SAASC,cAAcJ,GACvCE,GACAA,EAAYG,OACf,EA4nBGC,CAAuBzW,EAAMmP,SAC7BgG,EAAsB,CAClBhK,MAAO,gBACP7O,MAAO0D,EAAMmP,SAEpB,GAAG5S,EAAWqY,0CAAAA,EAGb8B,GAAiBjX,IACnB,MAAOuK,cAAeA,EAAeX,KAAMA,GAAQ5J,EAAMmC,MACzD,IAAKoI,EACD,OAGJ,OADkBvN,EAAamF,MAAMyH,KAAKsN,MAAMC,iBAAiBvN,EAAMW,EAChE6M,EAyBLC,GAAgB,CAACzN,EAAMW,EAAe+M,KACxC,IAAK,MAAOC,EAAOhX,KAAUqJ,EAAK4N,UAAW,CACzC,GAAIjX,EAAMmP,UAAYnF,EAClB,OAAO+M,QAA2DA,EAAmBC,EAEzF,GAAIhX,EAAMkX,SAAU,CAChB,MAAMC,EAAYL,GAAc9W,EAAMkX,SAAUlN,EAAegN,GAC/D,GAAyB,iBAAdG,EACP,OAAOA,CAEd,CACJ,CACD,EAGEC,GAAiB,CAAC5C,EAAU/U,EAAO+D,KACrC,MAAOwG,cAAeA,EAAeX,KAAMA,GAAQ5J,EAAMmC,MACnDuV,EAAYL,GAAczN,EAAMW,GACtC,GAAyB,iBAAdmN,EACP,OAGJ,IAAIE,EAAOhO,EADgB,aAAT7F,EAAsB2T,EAAY,GAAK,EAAIA,EAAY,IAEpEE,IAEGA,EADS,aAAT7T,EACO6F,EAAKA,EAAKiO,OAAS,GAEnBjO,EAAK,GAEXgO,KAITvC,GAAsBN,EAAU6C,OAAMtY,GAAW,EAAA,EAG/CwY,GAAoB,CAAC/C,EAAU/U,KACjC2X,GAAe5C,EAAU/U,EAAO,WAAA,EAG9B+X,GAAgB,CAAChD,EAAU/U,KAC7B2X,GAAe5C,EAAU/U,EAAO,OAAA,EAG9BgY,GAAiB,CAACjD,EAAU/U,EAAOuX,KACrC,MAAO3N,KAAMA,GAAQ5J,EAAMmC,MACrByV,EAAOhO,EAAK2N,GACbK,GAGLvC,GAAsBN,EAAU6C,OAAMtY,GAAW,EAAA,GAkE9C2Y,UAAWC,IAAkBlb,EAAagE,YAE3CmX,GAAwB,CAACpD,EAAU/U,EAAOoY,EAAQ9C,EAAOnS,EAAakV,KACxE,GAAI/C,EAAMgD,iBACN,OAGJ,GADoB5a,EAAgB6a,IAAIC,uBAAuB9a,EAAgB6a,IAAIE,aAAanD,IAE5F,OAEJ,MAAMoD,IAAepD,EAAMqD,UAAarD,EAAMsD,QAAWtD,EAAME,SAAYF,EAAMG,SAC3EoD,EAAc,KAChBvD,EAAMwD,gBAAAA,EAEV,GAAmB,SAAfxD,EAAMyD,MAAmBL,EAEzB,OADAG,IACO9D,EAAS3Q,GAAQ1E,cAAcwD,uCAE1C,GAAIC,EAAa,CACb,GAAmB,SAAfmS,EAAMyD,MAAmBL,GAAeL,EAAMxQ,aAE9C,OADAgR,IACO9D,EAAS3Q,GAAQjC,MAAMqK,yBAElC,GAAmB,SAAf8I,EAAMyD,MAAmBL,GAAeL,EAAMxQ,aAE9C,OADAgR,IACO9D,EAAS3Q,GAAQjC,MAAM0K,0BAElC,GAAmB,SAAfyI,EAAMyD,MAAmBL,GAAeL,EAAM1Q,aAE9C,OADAkR,IACO9D,EAAS3Q,GAAQjC,MAAM2K,sBAElC,GAAmB,SAAfwI,EAAMyD,MAAmBzD,EAAMqD,UAAYN,EAAMtQ,UAEjD,OADA8Q,IACO9D,EAAS3Q,GAAQjC,MAAMkL,sBAElC,GAAmB,SAAfiI,EAAMyD,MAAmBL,GAAeL,EAAM1Q,aAE9C,OADAkR,IACO9D,EAAS3Q,GAAQjC,MAAM4K,uBAElC,GAAmB,SAAfuI,EAAMyD,MAAmBzD,EAAMqD,UAAYN,EAAMtQ,UAEjD,OADA8Q,IACO9D,EAAS3Q,GAAQjC,MAAMmL,uBAElC,GAAmB,SAAfgI,EAAMyD,MAAmBL,GAAeL,EAAMvQ,UAE9C,OADA+Q,IACO9D,EAAS3Q,GAAQjC,MAAM+K,oBAElC,GAAmB,SAAfoI,EAAMyD,MAAmBL,GAAeL,EAAMvQ,UAE9C,OADA+Q,IACO9D,EAAS3Q,GAAQjC,MAAMiL,sBAElC,GAAmB,SAAfkI,EAAMyD,MAAmBL,GAAeL,EAAMzQ,aAE9C,OADAiR,IACO9D,EAAS3Q,GAAQjC,MAAM6K,oBAElC,GAAmB,SAAfsI,EAAMyD,MAAmBL,GAAeL,EAAMzQ,aAE9C,OADAiR,IACO9D,EAAS3Q,GAAQjC,MAAM8K,qBAErC,CACD,GAAmB,SAAfqI,EAAMyD,MAAmBL,EAEzB,OADAG,IACO9D,EAAS3Q,GAAQ1E,cAAcgD,mCAAmC5F,EAAW8F,gBAAgBoW,WAExG,GAAmB,SAAf1D,EAAMyD,MAAmBL,EAEzB,OADAG,IACO9D,EAAS3Q,GAAQ1E,cAAcgD,mCAAmC5F,EAAW8F,gBAAgBqW,cAExG,GAAmB,SAAf3D,EAAMyD,MAAmBL,IAAgBvV,EAEzC,OADA0V,IACO9D,EAAS3Q,GAAQ1E,cAAcgD,mCAAmC5F,EAAW8F,gBAAgBsW,QAExG,GAAkB,eAAd5D,EAAM6D,IAAsB,CAC5B,GAAI7D,EAAMqD,UAAYN,EAAMtQ,UAExB,OADA8Q,IACO9D,EAAS3Q,GAAQjC,MAAMwL,cAElC,GAAI2H,EAAMsD,QAAUP,EAAM1Q,aAEtB,OADAkR,IACO9D,EAAS3Q,GAAQjC,MAAM+L,iBAErC,CACD,GAAkB,cAAdoH,EAAM6D,IAAqB,CAC3B,GAAI7D,EAAMqD,UAAYN,EAAMtQ,UAExB,OADA8Q,IACO9D,EAAS3Q,GAAQjC,MAAMyL,eAElC,GAAI0H,EAAMsD,QAAUP,EAAM1Q,aAEtB,OADAkR,IACO9D,EAAS3Q,GAAQjC,MAAM8L,gBAErC,CACD,GAAkB,YAAdqH,EAAM6D,IAAmB,CACzB,GAAI7D,EAAMqD,UAAYrD,EAAMsD,QAAUP,EAAMxQ,aAExC,OADAgR,IACO9D,EAAS3Q,GAAQjC,MAAMgM,eAElC,GAAImH,EAAMqD,WAAarD,EAAMsD,QAAUP,EAAMvQ,UAEzC,OADA+Q,IACO9D,EAAS3Q,GAAQjC,MAAMoL,YAElC,GAAI+H,EAAMsD,SAAWtD,EAAMqD,UAAYN,EAAMzQ,aAEzC,OADAiR,IACO9D,EAAS3Q,GAAQjC,MAAM4L,eAElC,GAAIuH,EAAMG,SAAWH,EAAME,SAAW6C,EAAMrQ,MAExC,OADA6Q,IACO9D,EAAS3Q,GAAQjC,MAAMqM,UAErC,CACD,GAAkB,cAAd8G,EAAM6D,IAAqB,CAC3B,GAAI7D,EAAMqD,UAAYrD,EAAMsD,QAAUP,EAAMxQ,aAExC,OADAgR,IACO9D,EAAS3Q,GAAQjC,MAAMiM,gBAElC,GAAIkH,EAAMqD,WAAarD,EAAMsD,QAAUP,EAAMvQ,UAEzC,OADA+Q,IACO9D,EAAS3Q,GAAQjC,MAAMqL,cAElC,GAAI8H,EAAMsD,SAAWtD,EAAMqD,UAAYN,EAAMzQ,aAEzC,OADAiR,IACO9D,EAAS3Q,GAAQjC,MAAM6L,iBAElC,GAAIsH,EAAMG,SAAWH,EAAME,SAAW6C,EAAMrQ,MAExC,OADA6Q,IACO9D,EAAS3Q,GAAQjC,MAAMyM,YAErC,CACD,GAAI0G,EAAMsD,QAAyB,SAAftD,EAAMyD,KAGtB,OAFAF,QA3QiB,EAAC9D,EAAU/U,KAChC,MAAMoZ,EAAcnC,GAAejX,GACnC,IAAKoZ,EACD,OAIJ/D,GAAsBN,EAAUqE,OAFlB9Z,GACI,EACkCiW,EAqQhD8D,CAAiBtE,EAAU/U,GAG/B,GAAIsV,EAAMsD,QAAyB,SAAftD,EAAMyD,KAGtB,OAFAF,QAtQuB,EAAC9D,EAAU/U,KACtC,MAAMoZ,EAAcnC,GAAejX,GACnC,IAAKoZ,IAAgBA,EAAY9C,cAC7B,OAEJ,MAAMgD,EAActc,EAAamF,MAAMyH,KAAKsN,MAAMC,iBAAiBnX,EAAMmC,MAAMyH,KAAMwP,EAAY9C,eAC5FgD,GAGLjE,GAAsBN,EAAUuE,EAAAA,EA8P5BC,CAAuBxE,EAAU/U,GAGrC,GAAIsV,EAAMsD,QAAyB,SAAftD,EAAMyD,KAGtB,OAFAF,QAjMmB,EAAC7Y,EAAOoY,KAC/B,MAAO7N,cAAeiP,GAAMxZ,EAAMmC,MAC7BqX,GAGLpB,EAAOqB,QAAQ,CACXC,MAAO5c,EAAW6c,oBAAoBC,cACtChF,KAAM,CACF4E,GAAIA,MA0LRK,CAAmB7Z,EAAOoY,GAG9B,GAAI9C,EAAMsD,QAAyB,SAAftD,EAAMyD,KAGtB,OAFAF,QAzLmB,EAAC7Y,EAAOoY,KAC/B,MAAO7N,cAAeiP,EAAI/O,aAAcA,GAAgBzK,EAAMmC,MAC1DsI,EACA2N,EAAOqB,QAAQ,CACXC,MAAO5c,EAAW6c,oBAAoBG,cACtClF,KAAM,CACF4E,GAAI,MAKXA,GAGLpB,EAAOqB,QAAQ,CACXC,MAAO5c,EAAW6c,oBAAoBG,cACtClF,KAAM,CACF4E,GAAIA,MAyKRO,CAAmB/Z,EAAOoY,GAG9B,GAAI9C,EAAMsD,QAAUtD,EAAMqD,UAA2B,SAAfrD,EAAMyD,KAGxC,OAFAF,QAxKgBT,KACpBA,EAAOqB,QAAQ,CACXC,MAAO5c,EAAW6c,oBAAoBK,qBAuKtCC,CAAgB7B,GAGpB,GAAI9C,EAAMsD,QAAyB,SAAftD,EAAMyD,KAGtB,OAFAF,QAvKiB,EAAC7Y,EAAOoY,KAC7B,MAAO7N,cAAeiP,GAAMxZ,EAAMmC,MAC7BqX,GAGLpB,EAAOqB,QAAQ,CACXC,MAAO5c,EAAW6c,oBAAoBO,YACtCtF,KAAM,CACF4E,GAAIA,MAgKRW,CAAiBna,EAAOoY,GAG5B,GAAI9C,EAAMsD,QAAyB,SAAftD,EAAMyD,KAGtB,OAFAF,SACAf,GAAkB/C,EAAU/U,GAGhC,GAAIsV,EAAMsD,QAAyB,SAAftD,EAAMyD,KAGtB,OAFAF,SACAd,GAAchD,EAAU/U,GAG5B,GAAIsV,EAAMsD,QAAyB,QAAftD,EAAMyD,KAOtB,OANAF,SACIvD,EAAMqD,SACNb,GAAkB/C,EAAU/U,GAE5B+X,GAAchD,EAAU/U,IAIhC,GAAIsV,EAAMsD,QAAUtD,EAAMyD,KAAKqB,WAAW,SAA1C,CACIvB,IACA,MAAMtB,EAAQ8C,SAAS/E,EAAMyD,KAAKuB,QAAQ,QAAS,KAAO,EAC1DtC,GAAejD,EAAU/U,EAAOuX,EAEnC,MACD,EA0HEgD,GAAa,IAAM5I,QAAe,OAAA,sBAIpC,aAHqBK,QAAQC,UAAUQ,MAAI,WACvC,OA/0CR,SAA2B5T,GACvB,GAAIA,GAAKA,EAAE2b,WAAY,OAAO3b,EAC9B,IAAI4b,EAAI/d,OAAOge,OAAO,MAetB,OAdI7b,GACAnC,OAAOie,KAAK9b,GAAG+b,SAAAA,SAAkBC,GAC7B,GAAU,YAANA,EAAiB,CACjB,IAAIC,EAAIpe,OAAOqe,yBAAyBlc,EAAGgc,GAC3Cne,OAAOC,eAAe8d,EAAGI,EAAGC,EAAEE,IAAMF,EAAI,CACpCG,YAAY,EACZD,IAAK,WACD,OAAOnc,EAAEgc,EACZ,GAER,CACJ,IAELJ,EAAe5b,QAAAA,EACRnC,OAAOgI,OAAO+V,EACxB,CA6zCcS,CAAkBC,EAAAA,QAC5B,GAEJ,IAED,IAAIvW,GAAY,CACZlF,cAAe0R,GAAQ1R,cAAckF,UACrC7D,QAASqQ,GAAQrQ,QAAQ6D,UACzBM,UAAWkM,GAAQlM,UAAUN,UAC7BzC,MAAOiP,GAAQjP,MAAMyC,UACrBwL,OAAQgB,GAAQhB,OAAOxL,UACvBiM,GAAIO,GAAQP,GAAGjM,WAGnB,MAAMwW,GAActd,EAAOud,iBAAiB;;;;;;;;;;;;;iCAaX,EAAEC,kBAAmBA,KAC9CA,EACO,OAEJ;;;;;;;uBAQY,EAAEpa,MAAOA,KAAWA,EAAMqa;;EAI3CC,GAAatc,EAAgB,QAAWuc,GAAG;;kBAE/BC,GACVA,EAAMC,WACC,QAEJ;kBAEOD,GACVA,EAAMC,WACC,yBAEJ;;;;;;;;cASGD,GACNA,EAAM/Y,gBAAkB7F,EAAW8F,gBAAgBqW,aAAeyC,EAAM/Y,gBAAkB7F,EAAW8F,gBAAgBoW,SAC9G,aAEP0C,EAAM/Y,gBAAkB7F,EAAW8F,gBAAgBsW,MAC5C,YAEJ;mBAEQwC,GACa,QAAxBA,EAAM/Y,cACC,OAEJ;oBAES+Y,GACY,QAAxBA,EAAM/Y,cACC,kBAEJ;yBAEc+Y,GACO,QAAxBA,EAAM/Y,cACC,OAEJ;mCAEwB+Y,GACH,QAAxBA,EAAM/Y,cACC,mBAEJ;EAIXzD,UAA2Buc,GAAG;;kBAEZC,IACd,GAAIA,EAAMha,OAAQ,CAGd,MAAO,yEAFyC,SAArBga,EAAMxa,MAAM6C,KAAkB2X,EAAMxa,MAAM0a,wBAA0BF,EAAMxa,MAAM2a,+CAC3D,SAArBH,EAAMxa,MAAM6C,KAAkB2X,EAAMxa,MAAM2a,uBAAyBH,EAAMxa,MAAM0a,6CAE7G,CACD,MAAO,aAAA;EAIX,MAAME,WAAsB9c,EAA0B+c,QAAAA,UAClDC,YAAYN,GACRO,MAAMP,GACNQ,KAAKlc,MAAQ,CACTmc,UAAU,EAEjB,CACDC,gCAAgCC,GAC5B,MAAO,CACHF,UAAU,EAEjB,CACDG,kBAAkBD,EAAOE,GAAa,CACtCC,SACI,OAAIN,KAAKlc,MAAMmc,SACPD,KAAKR,MAAMe,YACJP,KAAKR,MAAMe,YAEfzd,EAAe,QAAW0d,cAAc,KAAM,KAAM,yBAExDR,KAAKR,MAAMjE,QACrB,EAGL,MAAMkF,GAAoBzd,EAAgB,QAAWuc,GAAG;wBAChC,EAAElZ,cAAeA,EAAeqa,UAAWA,EAAW1b,MAAOA,EAAO2b,aAAcA,MACtG,GAAIta,IAAkBqa,EAClB,OAAO1b,EAAM4b,4BAEjB,GAAqB,IAAjBD,EAAoB,CACpB,MAAME,EAAkBnf,EAASof,eAAe9b,EAAM2a,wBACtD,GAAIkB,EAAiB,CAEjB,MADc,QAAQA,EAAgBE,QAAQF,EAAgBG,gBAAgBH,EAAgBI,eAAeN,IAEhH,CACD,MAAO,aACV,CACD,OAAO3b,EAAM2a,sBAAAA;kBAEC,EAAEgB,aAAcA,EAAc3b,MAAOA,KAC9B,IAAjB2b,EACO,OAEJ3b,EAAMkc;aAEJ,EAAElc,MAAOA,KAAWA,EAAMmc;eACxB,EAAE/c,KAAMA,KACdA,EAGE,IAFI;mBAII,EAAEA,KAAMA,KAClBA,EAGE,OAFI;;;;;;mBASI,EAAEY,MAAOA,KAAWA,EAAMqa;;;;;0BAKnB,EAAE+B,cAAeA,KACnCA,EACO,YAEJ;;;EAMLC,GAAoBre,EAAgB,QAAWse,CAAC;;;;;;;;EAUhDC,GAA0Bve,EAAgB,QAAWuc,GAAG;wBACtC,EAAEva,MAAOA,EAAOoc,cAAeA,EAAeT,aAAcA,EAActa,cAAeA,EAAeqa,UAAWA,KACnIra,IAAkBqa,EACX1b,EAAM4b,4BAEI,IAAjBD,EACO,cAENS,EAGEpc,EAAMwc,oBAFFxc,EAAM2a;;;;;;;;;;;;EAsCf8B,GAA6BrgB,EAAWsgB,SAPf5d,IAAU,CACrC6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpD8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,OAG/B+U,KAAe,IAEwD,KAAM,CAC3GgJ,QAASrM,IADsBpU,EArBT0gB,IACtB,MAAOpB,UAAWA,EAAWiB,kBAAmBA,EAAmBC,mBAAoBA,GAAsBE,GACtGxd,SAAUA,EAAUI,QAASA,GAAWkd,EAAmB1d,SAASG,OACpEgC,cAAeA,GAAiBub,EAAmB7c,OAC1D,OAAOjC,EAA0B0d,QAAAA,cAAce,GAAyB,CACpEvc,MAAO2c,EACPP,cAAe9c,EAASF,KACxBuc,aAAcjc,EACd2B,cAAeA,EACfqa,UAAWA,EACX,qBAAsB9f,EAAWmhB,gCAenCC,GAAiBF,IACnB,MAAO9c,MAAOA,EAAOid,WAAYA,EAAYC,aAAcA,GAAgBJ,EAC3E,OAAOhf,EAAe,QAAW0d,cAAcxe,EAAiBmgB,gBAAiB,CAC7EC,QAAS,KACLF,GAAAA,EAEJld,MAAOA,EACPqd,MAAO,UACPC,MAAO,CACH5d,QAASud,EAAa,IAAM,IAC5BM,cAAeN,EAAa,YAAS7e,MAK3Cof,GAAiBV,IACnB,MAAO9c,MAAOA,EAAOyd,SAAUA,EAAUlU,aAAcA,GAAgBuT,EACjEO,EAAQI,EAAW,WAAa,UAChCC,IAAOD,EACb,OAAO3f,EAAe,QAAW0d,cAAcxe,EAAiB2gB,oBAAqB,CACjFP,QAAS,KACL7T,GAAAA,EAEJvJ,MAAOA,EACPqd,MAAOA,EACPK,KAAMA,KAIRE,GAA4B5f,EAAgB,QAAWuc,GAAG;wBACxC,EAAElZ,cAAeA,EAAeqa,UAAWA,EAAW1b,MAAOA,KAC7EqB,IAAkBqa,EACX,cAEJ1b,EAAMwc;kBAEC,EAAExc,MAAOA,KAAWA,EAAM6d;;;;;;;;;;;;;EAetCC,GAAsBlhB,EAAOmhB,GAAG;;;;;EAOhCC,GAAgChgB,EAAgB,QAAWuc,GAAG;MAC9DuD;EAGAG,GAAkCjgB,EAAgB,QAAWuc,GAAG;;;;;;;EAShE2D,GAAiClgB,EAAgB,QAAWuc,GAAG;MAC/DuD;;EA+DAK,GAA+B/hB,EAAWsgB,SAXtB5d,IAAU,CAChCN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,GACxD6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpDsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,GAC5Duf,kBAAmB3a,GAAUzC,MAAMqI,gBAAgBxK,OAG1B+U,IAAa,CACtCA,SAAUA,KAGmF,KAAM,CACnGgJ,QAASrM,IADwBpU,EA3DT0gB,IACxB,MAAOzd,MAAOA,EAAO6W,UAAWA,EAAWoI,gBAAiBA,EAAiB5C,UAAWA,EAAWuB,WAAYA,EAAYC,aAAcA,EAAc3T,aAAcA,EAAcgV,WAAYA,EAAY/f,cAAeA,EAAeme,kBAAmBA,EAAmB0B,kBAAmBA,EAAmBxK,SAAUA,GAAYiJ,GACpU/c,OAAQA,EAAQb,SAAUA,GAAYV,GACtC6C,cAAeA,GAAiBtB,GAChCsd,MAAOA,EAAOmB,QAASA,GAAWtf,EAASG,MAAMC,UACjDkP,QAASA,EAASsE,MAAOA,EAAO2L,eAAgBA,GAAkBvI,GAClEwI,SAAUA,EAAUC,KAAMA,GAAQF,EAExBE,EAAKhjB,MAA6BijB,mBAAmB9L,GACtE,MAAM2K,EAAWY,IAAsB7P,GAChCqQ,EAAMC,GAAW5iB,EAAM6iB,SAAS7I,EAAUpD,OAGjD,OAFA5W,EAAM6iB,UAAS,GACf7iB,EAAM6iB,UAAS,GACRjhB,EAA0B0d,QAAAA,cAAcoC,GAA2B,CACtE5d,MAAO2c,EACPjB,UAAWA,EACXra,cAAeA,EACf,qBAAsBzF,EAAWojB,8BAClClhB,EAAe,QAAW0d,cAAcwC,GAA+B,KAAMM,GAAmBxgB,EAAe,QAAW0d,cAAcxe,EAAiBiiB,oBAAqB,CAC7K7B,QAAShJ,IACLD,GAAsBN,EAAUyK,EAAiBlK,EAAAA,EAErDpU,MAAO2c,EACPU,MAAO,SACPvf,EAAe,QAAW0d,cAAcxe,EAAiBkiB,gBAAiB,CAC1E9B,QAAShJ,IAELD,GAAsBN,EAAUqC,EAAW9B,GADzB,EACgCC,EAEtDrU,MAAO2c,EACPU,MAAO,UACPvf,EAAe,QAAW0d,cAAcwB,GAAgB,CACxDhd,MAAO2c,EACPM,WAAYA,EACZC,aAAcA,IACdpf,EAAe,QAAW0d,cAAcgC,GAAgB,CACxDxd,MAAO2c,EACPc,SAAUA,EACVlU,aAAcA,KACbzL,EAAe,QAAW0d,cAAcyC,GAAiC,KAAMZ,GAASvf,EAAe,QAAW0d,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAMN,IAAQ/gB,UAA0B0d,cAAc0C,GAAgC,KAAMpgB,EAAe,QAAW0d,cAAcxe,EAAiBoiB,iBAAkB,CAC5UhC,QAAS,KACLmB,GAAAA,EAEJve,MAAO2c,EACPU,MAAO,eAmBTgC,GAA2BrhB,EAAgB,QAAWuc,GAAG;;EAIzD+E,GAAqBxC,IACvB,MAAOvG,SAAUA,GAAYuG,EACvByC,EAAsBrjB,EAAMsjB,OAAO,MACzC,OAAO1hB,EAA0B0d,QAAAA,cAAc6D,GAA0B,CACrEI,IAAKF,EACL,qBAAsB3jB,EAAW8jB,6BAClCnJ,EAAAA,EA+JDoJ,GAAuBvjB,EAAWsgB,SAdd5d,IAAU,CAChC8gB,UAAWlc,GAAUzC,MAAMwH,QAAQ3J,GACnC+gB,cAAenc,GAAUzC,MAAM+H,YAAYlK,GAC3CghB,mBAAoBpc,GAAUzC,MAAMmI,iBAAiBtK,GACrDuf,kBAAmB3a,GAAUzC,MAAMqI,gBAAgBxK,GACnD6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpD8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,OAGpC+U,IAAa,CACtCW,sBAAuBxV,GAAW6U,EAAS3Q,GAAQjC,MAAMsJ,cAAcvL,IACvE+gB,6BAA8B/gB,GAAW6U,EAAS3Q,GAAQjC,MAAMmN,qBAAqBpP,OAGA,KAAM,CAC3F6d,QAASrM,IADgBpU,EA5JT0gB,IAChB,MAAMD,EAAU3gB,EAAM8jB,WAAWvO,IACjC,IAAKoL,EACD,OAAO/e,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEvF,MAAOc,iBAAkBA,EAAkBC,cAAeA,GAAiBrD,GACpErO,QAASA,EAASnP,MAAOA,EAAO6W,UAAWA,EAAWK,SAAUA,EAAUqJ,UAAWA,EAAWC,cAAeA,EAAeC,mBAAoBA,EAAoBzB,kBAAmBA,EAAmB1B,kBAAmBA,EAAmBC,mBAAoBA,EAAoBpI,sBAAuBA,EAAuBuL,6BAA8BA,GAAgCjD,GACtY/c,OAAQA,EAAQb,SAAUA,GAAY0d,GACtCvb,cAAeA,GAAiBtB,GAChCT,SAAUA,EAAU4K,MAAOiW,EAAYzgB,QAASic,GAAgBzc,EAASG,MAC1E+gB,EAAoB9gB,EAASF,KACnC5C,EAAgBmN,YAAY0W,QAAQC,oBAAoBH,IAAwCN,EAAc3V,MAC9G,MAAMoU,EAAkBxiB,EAAamF,MAAMyH,KAAKsN,MAAMC,iBAAiB2J,EAAW1J,EAAUd,eACtFmL,EAAWrkB,EAAMsjB,OAAO,OACvBgB,EAAYC,GAAiBvkB,EAAM6iB,SAAS,IAC5C9B,EAAYyD,GAAiBxkB,EAAM6iB,UAAS,IAC5CrD,EAAWiF,GAAgBzkB,EAAM6iB,UAAS,GAC3C7B,EAAe,KAEjBwD,GAAc,GACd1M,iBACIyM,GAAe9kB,KAAWA,IAC1B+kB,GAAc,EACdE,GALoB,IAKpBA,EA0BFC,EAA0B/jB,EAAqBgkB,2BACjD,GAAIhB,IAAuBtR,EACvB,OAMJgG,EAJgB,CACZhK,MAAO,gBACP7O,MAAO6S,GAGX,GAAA,KAmBJtS,EAAM6kB,WAAS,KA9BXvM,EAJgB,CACZhK,MAAO,gBACP7O,MAAO+f,EAAYlN,EAAU,IAkCpC,GAAG,CAAEA,EAASkN,IACfxf,EAAM6kB,WAAS,KACX,MAAMC,EAAoBd,EAAce,UAAU,CAC9CzI,MAAO5c,EAAW6c,oBAAoBC,cACtCwI,SAAUxN,IACN,MAAO4E,GAAIA,GAAM5E,EACb4E,IAAO9J,GACP0O,GACH,IAGT,MAAO,KACHgD,EAAciB,YAAYH,EAAAA,CAEjC,GAAG,CAAER,EAAYhS,IAClB,MAAMyJ,EAAMzJ,EAAU,IAAMgS,EACtBY,EAAgB5S,EAAU5S,EAAW6Z,oBAErC4L,EAtC6B,MAC/B,GAAKnL,EAAU9W,MAASif,EAGxB,OAAIA,IAAsB7P,EACf,IAEJ,GAAA,EA+BiB8S,GACtBC,EA9B8B,MAChC,GAAKrL,EAAU9W,MAASif,GAGpBA,IAAsB7P,EAG1B,MAAO,MAAA,EAuBkBgT,GACvB/Z,EAAY3L,EAAa2lB,cAAc,wBAAwBvL,EAAUzB,SAASC,qCAAqCwB,EAAUzB,SAASE,qCAAqCuB,EAAUzB,SAASG,kCAAkCsB,EAAUzB,SAASlI,gCAAgC2J,EAAUzB,SAAS9H,qBAC1S+U,EAAyB,CAAA,EAC/B,OAAO5jB,EAA0B0d,QAAAA,cAAcC,GAAmB,CAC9DxD,IAAKA,EACLwH,IAAKc,EACLvgB,MAAO2c,EACPP,cAAegE,EACfzE,aAAcA,EACdvc,KAAM8W,EAAU9W,KAChBkZ,GAAI9J,EACJ8O,MAAO,CACHpT,MAdY,OAeZzC,UAAWA,EACX/H,QAAS2hB,EACT9D,cAAegE,GAEnBI,aAAc,IAAMhB,GAAa,GACjCiB,aAAc,IAAMjB,GAAa,GACjCkB,YAAa,IAAMhB,IACnBiB,YAAa,IAAMjB,IACnBxf,cAAeA,EACfqa,UAAWA,EACX,oBAAqBlN,EACrB,qBAAsB5S,EAAWmmB,qBAClCjkB,EAAe,QAAW0d,cAAca,GAAmB,CAC1D2F,SAAU,EACV1J,GAAI8I,IACJlL,EAAU9W,MAAQtB,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMjJ,EAAUd,eAAiBtX,EAAe,QAAW0d,cAAciB,GAA4B,CACnMf,UAAWA,IACX0E,GAAqBtiB,EAA0B0d,QAAAA,cAAc2C,GAA8B,CAC3F9e,MAAOA,EACP6W,UAAWA,EACXoI,gBAAiBA,EACjB5C,UAAWA,EACXuB,WAAYA,EACZC,aAAcA,EACd3T,aA9GiB,KACjB,MAAM+O,EAAK+F,IAAsB7P,EAAUA,EAAU,GACrD0R,EAAc3H,QAAQ,CAClBC,MAAO5c,EAAW6c,oBAAoBG,cACtClF,KAAM,CACF4E,GAAIA,MA0GZiG,WAtGe,KACf2B,EAAc3H,QAAQ,CAClBC,MAAO5c,EAAW6c,oBAAoBO,YACtCtF,KAAM,CACF4E,GAAI9J,QAmGZyR,EAAmBniB,EAA0B0d,QAAAA,cAAcZ,GAAe,CAC1EW,YAAyC,kBAArB0E,EAAiCA,OAAmB7hB,GACzEN,UAA0B0d,cAAc8D,GAAoB9jB,OAAO8C,OAAO,CAAE,EAAEojB,GAAyBnL,IAAazY,UAA0B0d,cAAc8D,GAAoB9jB,OAAO8C,OAAO,CAAA,EAAIojB,GAAyBnL,IAAAA,IAqB5N0L,GAAoBC,KACjBA,IAGoB,iBAAdA,IAA0BA,EAAUC,KAM7CC,GAAmBpkB,EAAgB,QAAWuc,GAAG;;EA6IjD8H,GAAsBjmB,EAAWsgB,SANR5d,IAAU,CACrC8gB,UAAWlc,GAAUzC,MAAMwH,QAAQ3J,OAGL+U,KAAe,IAEiD,KAAM,CACpGgJ,QAASrM,IADepU,EAzIT0gB,IACf,MAAOzd,MAAOA,EAAOugB,UAAWA,GAAa9C,GACtCrI,SAAUA,GAAYpV,EACvBwd,EAAU3gB,EAAM8jB,WAAWvO,IACjC,IAAKoL,EACD,OAAO/e,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEvF,MAAOmD,gBAAiBA,EAAiBC,aAAcC,EAAcC,kBAAmBA,EAAmBC,YAAaA,EAAaC,aAAcA,EAAczC,cAAeA,GAAiBrD,EAC3L+F,EAAoBF,EACpBG,EAAwBxjB,IAC1B,IAAKA,EAAMkX,UAAsC,IAA1BlX,EAAMkX,SAASI,OAClC,MAAO,GAEX,MAAMJ,EAAW,GACXuM,EAAiBre,GAAmB6d,GA4D1C,OA3DAjjB,EAAMkX,SAASmD,SAASqJ,IACpB,IAAKD,EACD,OAEJ,MAAMtU,EAAUuU,EAAMC,SAChB9K,EAAc4K,EAAehJ,IAAItL,GACvC,GAAI0J,EAAa,CACb,MAAM+K,EAAc,KAChB,MAAMC,EAAQhL,EAAYgK,UACpBiB,EAAiB,CACnB9jB,MAAO,CACH1D,MAAOuc,EAAYpF,MAAMsQ,SACzB5U,QAASuU,EAAMvU,QACf4G,cAAe2N,EAAM3N,cACrBiO,UAAWnL,EAAYpF,MAAMuQ,UAC7BC,WAAYpL,EAAYpF,MAAMwQ,WAC9BC,MAAOrL,EAAYpF,MAAMyQ,OAE7BzQ,MAAO,CACHnX,OAAQgnB,eAA4DA,EAAaa,MAAM7nB,QAAU,GACjG2nB,YAAaX,aAA+C,EAAaA,EAAaa,MAAMF,aAAe,CAAE,EAC7GC,OAAQZ,aAA+C,EAAaA,EAAaa,MAAMD,QAAU,CAAE,GAEvGE,OAAQvD,GAENpD,EAAa,CACf7N,OAAQzT,OAAO8C,OAAO,CAAA,EAAI6kB,GAC1BlL,IAAK,gBAAkB8K,EAAMvU,SAE3BkV,EAAkBzB,GAAkBiB,GACpCS,EAAwB1B,GAAkBW,GAE1CgB,EAAkB,CACpB3L,IAFY,sBAEG8K,EAAMvU,QACrBnP,MAAO6Y,EACPhC,UAAW6M,EACXvU,QAASuU,EAAMvU,QACfiG,SAAUsO,EAAMtO,UAEpB,OAAImO,GAAqBe,EACd7lB,EAA0B0d,QAAAA,cAAcoH,EAAmBpnB,OAAO8C,OAAO,CAAA,EAAIslB,IAEpFF,EACO5lB,UAA0B0d,cAAcmE,GAAsBnkB,OAAO8C,OAAO,CAAE,EAAEslB,GAAmBpB,EAA+F1kB,EAAe,QAAW0d,cAAcgH,EAAaqB,SAAU,CACpQloB,MAAO8mB,GACR3kB,UAA0B0d,cAAc0H,EAAO1nB,OAAO8C,OAAO,CAAE,EAAEwe,KAFqDhf,UAA0B0d,cAAc0H,EAAO1nB,OAAO8C,OAAO,CAAE,EAAEwe,KAIvLhf,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,KAAA,EAEjF9f,EAAQ4jB,IACd1M,EAASpD,KAAK9T,EACjB,CACD,GAAI0jB,EAAMxM,SAAU,CAChB,MAAMuN,EAAiBjB,EAAsBE,GACzCe,GACAvN,EAASpD,QAAQ2Q,EAExB,CACJ,IACMvN,CAAAA,EAELuN,EAAiB5nB,EAAM6nB,SAAAA,IAAelB,EAAsBxjB,IAAS,CAAE2kB,KAAKC,UAAU5kB,GAAQ2kB,KAAKC,UAAUrE,KAC7GsE,EAAgB7kB,EAAM2jB,SAC5B,IAAKkB,EACD,OAAOpmB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEvF,MAAMgF,EAAcvf,GAAmBsf,EAAe5B,GACtD,IAAK6B,EACD,OAAOrmB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEvF,MAAM+D,EAAQiB,EAAYjC,UACpBiB,EAAiB,CACnB9jB,MAAO,CACH1D,MAAOwoB,EAAYrR,MAAMsQ,SACzB5U,QAASnP,EAAMmP,QACf4G,cAAe/V,EAAM+V,cACrBiO,UAAWc,EAAYrR,MAAMuQ,UAC7BC,WAAYa,EAAYrR,MAAMwQ,WAC9BC,MAAOY,EAAYrR,MAAMyQ,OAE7BzQ,MAAO,CACHnX,OAAQgnB,eAA4DA,EAAaa,MAAM7nB,QAAU,GACjG2nB,YAAaX,aAA+C,EAAaA,EAAaa,MAAMF,aAAe,CAAE,EAC7GC,OAAQZ,aAA+C,EAAaA,EAAaa,MAAMD,QAAU,CAAE,GAEvGE,OAAQvD,GAEN0D,EAAkB,CACpB3U,OAAQzT,OAAO8C,OAAO,CAAA,EAAI6kB,GAC1BlL,IAAK,gBAAkB5Y,EAAMmP,SAEjC,OAAIoU,EACiC,mBAAtBA,EACA9kB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEhFrhB,EAA0B0d,QAAAA,cAAc4G,GAAkB,CAC7D,qBAAsBxmB,EAAWwoB,oBAClCtmB,EAAe,QAAW0d,cAAcoH,EAAmB,CAC1DvjB,MAAO8kB,EACPjO,UAAW7W,EACXmP,QAASnP,EAAMmP,QACfiG,SAAUA,IACVqP,GAEDhmB,EAA0B0d,QAAAA,cAAc4G,GAAkB,CAC7D,qBAAsBxmB,EAAWwoB,oBAClCtmB,EAAe,QAAW0d,cAAcmE,GAAsB,CAC7DtgB,MAAO8kB,EACPjO,UAAW7W,EACXmP,QAASnP,EAAMmP,QACfiG,SAAUA,GACV+N,EAAoG1kB,EAA0B0d,QAAAA,cAAcgH,EAAaqB,SAAU,CACnKloB,MAAO8mB,GACR3kB,UAA0B0d,cAAc0H,EAAO1nB,OAAO8C,OAAO,CAAA,EAAIslB,KAFjD9lB,EAAe,QAAW0d,cAAc0H,EAAO1nB,OAAO8C,OAAO,CAAA,EAAIslB,KAEKE,EAAAA,IAavFO,GAAoBrmB,EAAgB,QAAWuc,GAAG;;;EA+BlD+J,GAAuBloB,EAAWsgB,SAVT5d,IAAU,CACrC8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,GAC7DylB,qBAAsB7gB,GAAUzC,MAAM6G,mBAAmBhJ,GACzD0lB,uBAAwB9gB,GAAUzC,MAAM8G,qBAAqBjJ,GAC7D2lB,mBAAoB/gB,GAAUzC,MAAMgH,iBAAiBnJ,GACrD8gB,UAAWlc,GAAUzC,MAAMwH,QAAQ3J,OAGL+U,KAAe,IAEkD,KAAM,CACrGgJ,QAASrM,IADgBpU,EA1BT0gB,IAChB,MAAOyH,qBAAsBA,EAAsBC,uBAAwBA,EAAwBC,mBAAoBA,EAAoB7E,UAAWA,GAAa9C,EACnK,OAAOhf,EAA0B0d,QAAAA,cAAc6I,GAAmB,CAC9D/G,MAAO,CACHpT,MAAO,OACPC,OAA0B,oBAAXnD,OAAyBA,OAAOG,YAAc,KAAO,QACpEM,UAAW8c,EACXG,WAAYF,EAAyB,aAAaC,kBAAqC,WAE3F,qBAAsB7oB,EAAW+oB,qBAClC/E,EAAUgF,KAAKvlB,GAASvB,EAAe,QAAW0d,cAAc6G,GAAqB,CACpFpK,IAAK5Y,EAAMmP,QACXnP,MAAOA,UAkBTwlB,GAASjoB,EAAOkoB,SAAS;;;;;;;;EAUzBC,GAAkBC,GAAcpoB,EAAOmhB,GAAG,GAAG8G,MAAUG,4BAEvDC,GAAoBjnB,EAAgB,QAAWuc,GAAG;;;;;;;kBAOtC,EAAE/Z,OAAQA,EAAQR,MAAOA,MACvC,GAAIQ,EAAQ,CAGR,MAAO,yEAFmC,SAAfR,EAAM6C,KAAkB7C,EAAM0a,wBAA0B1a,EAAM2a,+CAC/C,SAAf3a,EAAM6C,KAAkB7C,EAAM2a,uBAAyB3a,EAAM0a,6CAE3F,CACD,MAAO,aAAA;;;kBAIO,EAAEsK,WAAYA,KACxBA,EACO,IAEJ;iBAEM,EAAEE,UAAWA,EAAWF,WAAYA,KAC7CE,GAAaF,EACND,GAAgBC,GAEpB;EA4BLG,GAAuB/oB,EAAWsgB,SAPT5d,IAAU,CACrC8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,GAC7D6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,OAGtB+U,KAAe,IAEkD,KAAM,CACrGgJ,QAASrM,IADgBpU,EAxBT0gB,IAChB,MAAOF,mBAAoBA,EAAoBD,kBAAmBA,GAAqBG,GAChF7b,MAAOA,GAAS2b,GAChBpc,OAAQA,EAAQwkB,WAAYA,GAAc/jB,GAC1CikB,EAAWE,GAAgBlpB,EAAM6iB,UAAS,GAIjD,OAHA7iB,EAAM6kB,WAAS,KACXqE,GAAa,EACb,GAAA,IACGtnB,EAA0B0d,QAAAA,cAAcyJ,GAAmB,CAC9DjlB,MAAO2c,EACPnc,OAAQA,EACR0kB,UAAWA,EACXF,WAAYA,EACZ,qBAAsBppB,EAAWypB,qBAClCvnB,EAAe,QAAW0d,cAAc8I,GAAsB,MAAA,IAc/DgB,GAAc,EAAE/jB,KAAMA,MACxB,OAAQA,GACN,KAAK3F,EAAW2pB,MAAMC,MACpB,MAAO,MAET,KAAK5pB,EAAW2pB,MAAME,OACpB,MAAO,OAET,KAAK7pB,EAAW2pB,MAAMG,MACpB,MAAO,OAET,QACE,MAAO,SAITC,GAAe3nB,EAAgB,QAAWuc,GAAG;wBAC3B,EAAEva,MAAOA,KAAWA,EAAM4lB;cACpCN;aACDA;;;;;;;;;;;EAoCPO,GAAkBzpB,EAAWsgB,SARJ5d,IAAU,CACrC6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpDsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,GAC5D8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,OAG/B+U,KAAe,IAE6C,KAAM,CAChGgJ,QAASrM,IADWpU,EAvBT0gB,IACX,MAAOH,kBAAmBA,EAAmBC,mBAAoBA,GAAsBE,GAChF7b,MAAOA,GAAS2b,GAChB1b,gBAAiBA,GAAmBD,GACpC7B,KAAM0mB,EAAqBvkB,KAAMwkB,GAAuB7kB,EAC/D,OAAK4kB,EAGEhoB,EAA0B0d,QAAAA,cAAcmK,GAAc,CACzD3lB,MAAO2c,EACPpb,KAAMwkB,EACN,qBAAsBnqB,EAAWoqB,iCAL1BloB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,SAqB3F,IAAI8G,aAEMA,GACNA,EAAgB,KAAA,OAChBA,EAAqB,UAAA,YACrBA,EAAgB,KAAA,MAHpB,EAIGA,KAAUA,GAAQ,CAAE,IAEvB,MAEMC,GAAgBloB,EAAgB,QAAWuc,GAAG;cACtC,EAAE7Z,QAASA,EAASylB,QAASA,KAClCzlB,EAGDylB,EACO,OAEJ,QALI;sBAOO,EAAEC,SAAUA,KAC1BA,IAAaH,GAAMI,KACZ,MAEJ;eAEI,EAAErB,WAAYA,KACrBA,EACO,IAEJ;iBAEM,EAAEA,WAAYA,EAAYE,UAAWA,KAC9CA,GAAaF,EACND,GAAgBC,GAEpB;;;;;;;;;EAYLsB,GAAuBtoB,EAAgB,QAAWuc,GAAG;aAC9C,EAAEva,MAAOA,KAAWA,EAAMmc;wBACf,EAAEnc,MAAOA,EAAOqB,cAAeA,KAC/CA,EACOrB,EAAM4b,4BAEV5b,EAAMumB;kBAEC,EAAEvmB,MAAOA,KAAWA,EAAMkc;6BACf,EAAEsK,UAAWA,EAAWC,qBAAsBA,EAAsBC,eAAgBA,KACzGF,IAAcC,EACVC,EACO,uCAEA,uCAGVD,EAODC,EACO,mCAEJ,8BATCA,EACO,uCAEA;eAQJ,EAAElmB,OAAQA,EAAQ2lB,QAASA,KACjC3lB,GAAW2lB,EAGT,IAFI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCTQ,GAAsB3oB,EAAgB,QAAWuc,GAAG;eAC3C,EAAEqM,OAAQA,EAAQJ,UAAWA,EAAWC,qBAAsBA,KACrEG,GAGAJ,IAAcC,EAFP,IAKJ;wBAEa,EAAEI,OAAQA,EAAQ7mB,MAAOA,KACzC6mB,EACO7mB,EAAM0a,wBAEV;iBAEM,EAAEkM,OAAQA,KACnBA,EACO,OAEJ;;;;;;;;;;;0BAYe,EAAE5mB,MAAOA,KAAWA,EAAM0a;;;EAK9CoM,GAAa9oB,EAAgB,QAAWuc,GAAG;;;;;;;;;;EAY3CwM,GAA4B/oB,EAAgB,QAAWuc,GAAG;;;;;;;;;;;;wBAYxCC,GAASA,EAAMxa,MAAMumB;kBAC3B/L,GAASA,EAAMxa,MAAMkc;;;;;;EAQvCle,UAA2Buc,GAAG;;;;;;qBAMTC,GACbA,EAAMwM,UACC,OAEJ;;MAGLxM,GACEA,EAAMwM,UACC,2TAEJ;EAIX,MAAMC,GAAkCjpB,EAAgB,QAAWuc,GAAG;;;;;;;;;;;;;;;EAiBtEvc,UAA2BkpB,EAAE;;;;;cAKf1M,GACNA,EAAMqM,OACC,UAEJ;wBAEarM,GAChBA,EAAMqM,OACCrM,EAAMxa,MAAM0a,wBAEhB;kBAEOF,GACVA,EAAMqM,OACC,0BAA4BrM,EAAMxa,MAAMmnB,oBAE5C;;;4BAIiB3M,GAASA,EAAMxa,MAAM0a;sBAC3BF,GACdA,EAAMqM,OACC,0BAA4BrM,EAAMxa,MAAMmnB,oBAE5C3M,EAAMxa,MAAMkc;;EAKvB,MAgBMkL,GAA+BhrB,EAAWsgB,SATtB5d,IAAU,CAChCuoB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvD+J,iBAAkBnF,GAAUzC,MAAM2H,oBAAoB9J,OAG7B+U,IAAa,CACtCyT,0BAA2BC,GAAc1T,EAAS3Q,GAAQjC,MAAM+M,kBAAkBuZ,OAGW,KAAM,CACnG1K,QAASrM,IADwBpU,EAhBT0gB,IACxB,MAAOuK,iBAAkBA,EAAkBxe,iBAAkBA,EAAkBye,0BAA2BA,GAA6BxK,EACvI,OAAOhf,EAA0B0d,QAAAA,cAAcuL,GAA2B,CACtE/mB,MAAOqnB,GACRvpB,EAAe,QAAW0d,cAAcyL,GAAiC,MAAA,IAgB1EO,GAAqBxpB,EAAgB,QAAWuc,GAAG;;;;;;;;;;sBAUnCC,GACdA,EAAMnZ,eAAiBmZ,EAAMiN,QACtB,SAEJ;wBAEajN,GAChBA,EAAMnZ,eAAiBmZ,EAAMkB,UACtBlB,EAAMxa,MAAMumB,yBAEhB;kBAEO/L,GACVA,EAAMnZ,eAAiBmZ,EAAMkB,UACtBlB,EAAMxa,MAAMkc,eAEhB;aAEE1B,GAASA,EAAMxa,MAAMmc;EAG5BuL,GAA4B1pB,EAAgB,QAAWuc,GAAG;;;;;;;;;mCAS7BC,GAASA,EAAMxa,MAAMmc;;EAIlDwL,GAA0B3pB,EAAgB,QAAWuc,GAAG;GAGvDqN,YAAaC,QAASC,KAAkB5qB,EAAwB6qB,UA8BjEC,GAAwB5rB,EAAWsgB,SAPf5d,IAAU,CAChCuoB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvDN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,OAG/B+U,KAAe,IAE8C,KAAM,CAC5FgJ,QAASrM,IADiBpU,EA5BT0gB,IACjB,MAAOmL,QAASA,EAASC,MAAOA,EAAOT,QAASA,EAASU,OAAQA,EAAQd,iBAAkBA,EAAkB7oB,cAAeA,GAAiBse,GACtI/c,OAAQA,GAAUvB,GAClB6C,cAAeA,GAAiBtB,GAChC2b,EAAWiF,GAAgBzkB,EAAM6iB,UAAS,GACjD,OAAOjhB,EAA0B0d,QAAAA,cAAcgM,GAAoB,CAC/DxnB,MAAOqnB,EACP1F,aAAc,IAAMhB,GAAa,GACjCiB,aAAc,IAAMjB,GAAa,GACjCtf,cAAeA,EACfqa,UAAWA,EACX+L,QAASA,GACV3pB,EAAe,QAAW0d,cAAckM,GAA2B,CAClE1nB,MAAOqnB,EACPe,QAAS,IAAMD,KAChBrqB,EAAe,QAAW0d,cAAcsM,GAAe,CACtD9nB,MAAOqnB,EACPxkB,KAAM,MACPolB,IAAWR,GAAW3pB,EAA0B0d,QAAAA,cAAcmM,GAAyB,KAAMO,GAAAA,IAc9FG,GAAuBrqB,EAAgB,QAAWuc,GAAG;;;;;;;;;;;;wBAYnCC,GAChBA,EAAMnZ,cACCmZ,EAAMxa,MAAM4b,4BAEhBpB,EAAMxa,MAAMumB;kBAEL/L,GAASA,EAAMxa,MAAMkc;EAGjCoM,GAA2BtqB,EAAgB,QAAWuc,GAAG;;;;;;;;qBAQ1CC,GACbA,EAAM+N,KACC,IAEP/N,EAAMwM,UACC,OAEJ;;MAGLxM,GACEA,EAAMwM,UACC,oRAAoRxM,EAAMxa,MAAQwa,EAAMxa,MAAMmc,aAAe,4CAEjU;EAILqM,GAA6BxqB,EAAgB,QAAWuc,GAAG;;;;;;;;;;;;;;;GAiB1DkO,QAASC,SAAUC,KAAqBzrB,EAAwB6qB,UA8EjEa,GAAgCxsB,EAAWsgB,SAdvB5d,IAAU,CAChC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEknB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvDN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,OAG/B+U,IAAa,CACtCiV,2CAA4C9oB,GAAS6T,EAAS3Q,GAAQ1E,cAAcmB,6BAA6BK,IACjH+oB,+CAAgD/oB,GAAS6T,EAAS3Q,GAAQ1E,cAAcyB,iCAAiCD,IACzHgpB,iCAAkC7oB,GAAY0T,EAAS3Q,GAAQ1E,cAAc0B,yBAAyBC,IACtG8oB,wBAAyBjpB,GAAS6T,EAAS3Q,GAAQgM,OAAOC,gBAAgBnP,IAC1EkpB,4BAA6BlpB,GAAS6T,EAAS3Q,GAAQgM,OAAOE,oBAAoBpP,OAGY,KAAM,CACpG6c,QAASrM,IADyBpU,EA5ET0gB,IACzB,MAAO+L,cAAeA,EAAexB,iBAAkBA,EAAkB7oB,cAAeA,EAAeyqB,wBAAyBA,EAAyBC,4BAA6BA,EAA6BJ,2CAA4CA,EAA4CC,+CAAgDA,EAAgDC,iCAAkCA,GAAoClM,EAC3cqM,EAAgB3qB,EAAcuB,OAAOC,OACpCopB,EAAkBC,GAAuBntB,EAAM6iB,SAAkC,iBAAlBoK,EAA6BA,EAActpB,QAAUspB,IACpHG,EAAsBC,GAA2BrtB,EAAM6iB,SAAkC,iBAAlBoK,EAA6BA,EAAcrpB,YAAcqpB,GAqBvI,OATAjtB,EAAM6kB,WAAS,KACkB,iBAAlBoI,GACPE,EAAoBF,EAActpB,SAClC0pB,EAAwBJ,EAAcrpB,eAEtCupB,EAAoBF,GACpBI,EAAwBJ,GAE/B,GAAG,CAAEA,IACCrrB,UAA0B0d,cAAc1d,UAA0BqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAc8M,GAA0B,KAAMxsB,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOC,iCAAkC7rB,EAA0B0d,QAAAA,cAAcmN,GAAkB,CAC3UiB,YAAapuB,OAAOie,KAAK1b,EAAgB,SACzC8rB,SAAsC,iBAArBT,EAAgCA,EAAmB,GACpEU,SAAUC,GAvBUZ,KACpBF,EAAwBlrB,EAA2BorB,QAAAA,IACnDL,EAA2CK,EAAAA,EAqBpBha,CAAgB4a,GACvC/pB,MAAOqnB,EACP2C,YAAY,EACZC,YAAa,EACb/f,MAAO,GACPoT,MAAO,CACH4M,SAAU,aAEbpsB,EAA0B0d,QAAAA,cAAc8M,GAA0B,KAAMxsB,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOS,qCAAsCrsB,EAAe,QAAW0d,cAAcmN,GAAkB,CAC3PiB,YAAapuB,OAAOie,KAAK1b,EAAgB,SACzC8rB,SAA0C,iBAAzBP,EAAoCA,EAAuB,GAC5EQ,SAAUC,GA9BcZ,KACxBD,EAA4BnrB,EAA2BorB,QAAAA,IACvDJ,EAA+CI,EAAAA,EA4BxB/Z,CAAoB2a,GAC3C/pB,MAAOqnB,EACP4C,YAAa,EACbD,YAAY,EACZ9f,MAAO,GACPoT,MAAO,CACH4M,SAAU,aAEbpsB,EAAe,QAAW0d,cAAc8M,GAA0B,CACnEC,MAAM,GACPzsB,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOU,6BAA8BtsB,EAA0B0d,QAAAA,cAAcmN,GAAkB,CACzKiB,YAAahuB,EAAW6tB,qBAAqBY,UAC7CR,SAAUhB,EACViB,SAAUC,IAtCVf,EAsCmCe,EAAAA,EACnC/pB,MAAOqnB,EACP4C,YAAa,EACb/f,MAAO,GACPoT,MAAO,CACH4M,SAAU,kBAuBfzB,QAAS6B,OAAQC,KAAmBrtB,EAAwB6qB,UAqE7DyC,GAAmCpuB,EAAWsgB,SAZ1B5d,IAAU,CAChC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEknB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvDN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,OAG/B+U,IAAa,CACtC4W,mDAAoDC,GAAa7W,EAAS3Q,GAAQ1E,cAAcoD,2CAA2C8oB,IAC3IC,4CAA6CC,GAAS/W,EAAS3Q,GAAQ1E,cAAcsD,oCAAoC8oB,IACzHC,4CAA6CC,GAAQjX,EAAS3Q,GAAQ1E,cAAcgE,oCAAoCsoB,OAGvB,KAAM,CACvGjO,QAASrM,IAD4BpU,EAnET0gB,IAC5B,MAAO+L,cAAeA,EAAexB,iBAAkBA,EAAkB7oB,cAAeA,EAAeisB,mDAAoDA,EAAoDE,4CAA6CA,EAA6CE,4CAA6CA,GAA+C/N,GAC9Xjb,mBAAoBA,EAAoBY,eAAgBA,EAAgBV,eAAgBA,GAAkBvD,EAAcyC,MAC/H,OAAOnD,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAc8M,GAA0B,KAAMxqB,EAA0B0d,QAAAA,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOqB,2CAA4CjtB,EAA0B0d,QAAAA,cAAc+O,GAAgB,CACxYvqB,MAAOqnB,EACP2D,QAASnpB,EACTopB,SAAU,IAAMR,GAAoD5oB,GACpEqpB,WAAW,EACXC,MAAO,KACNrtB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO0B,uCAAwCttB,EAAe,QAAW0d,cAAc+O,GAAgB,CAChTvqB,MAAOqnB,EACP2D,QAASvoB,EAAemE,UACxBqkB,SAAU,IAAMJ,EAA4C,aAC5DK,WAAW,EACXC,MAAO,KACNrtB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO2B,uCAAwCvtB,EAAe,QAAW0d,cAAc+O,GAAgB,CAChTvqB,MAAOqnB,EACP2D,QAASvoB,EAAeoE,UACxBokB,SAAU,IAAMJ,EAA4C,aAC5DK,WAAW,EACXC,MAAO,KACNrtB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO4B,0CAA2CxtB,EAAe,QAAW0d,cAAc+O,GAAgB,CACnTvqB,MAAOqnB,EACP2D,QAASvoB,EAAegE,aACxBwkB,SAAU,IAAMJ,EAA4C,gBAC5DK,WAAW,EACXC,MAAO,KACNrtB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO6B,0CAA2CztB,EAAe,QAAW0d,cAAc+O,GAAgB,CACnTvqB,MAAOqnB,EACP2D,QAASvoB,EAAeiE,aACxBukB,SAAU,IAAMJ,EAA4C,gBAC5DK,WAAW,EACXC,MAAO,KACNrtB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO8B,0CAA2C1tB,EAAe,QAAW0d,cAAc+O,GAAgB,CACnTvqB,MAAOqnB,EACP2D,QAASvoB,EAAekE,aACxBskB,SAAU,IAAMJ,EAA4C,gBAC5DK,WAAW,EACXC,MAAO,KACNrtB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO+B,mCAAoC3tB,EAAe,QAAW0d,cAAc+O,GAAgB,CAC5SvqB,MAAOqnB,EACP2D,QAASvoB,EAAeqE,MACxBmkB,SAAU,IAAMJ,EAA4C,SAC5DK,WAAW,EACXC,MAAO,KACNrtB,EAAe,QAAW0d,cAAc8M,GAA0B,CACnEC,MAAM,GACPzqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOgC,sCAAuC,KAAM3pB,IAAmBnG,EAAW+vB,kBAAkBC,IAAM,MAAQ,SAAU9tB,EAA0B0d,QAAAA,cAAc+O,GAAgB,CACnTvqB,MAAOqnB,EACP2D,QAASjpB,IAAmBnG,EAAW+vB,kBAAkBC,IACzDX,SAAU,IAAMlpB,IAAmBnG,EAAW+vB,kBAAkBC,IAAMjB,EAA4C/uB,EAAW+vB,kBAAkBE,OAASlB,EAA4C/uB,EAAW+vB,kBAAkBC,KACjOT,MAAO,UAoBR1C,QAASC,SAAUoD,GAAgBxB,OAAQyB,GAAgBC,OAAQC,KAAmB/uB,EAAwB6qB,UAuE/GmE,GAA+B9vB,EAAWsgB,SAbtB5d,IAAU,CAChCuoB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvDN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,OAG/B+U,IAAa,CACtCsY,qCAAsCxwB,GAASkY,EAAS3Q,GAAQ1E,cAAciB,6BAA6B9D,IAC3GywB,8CAA+C,IAAMvY,EAAS3Q,GAAQ1E,cAAc4C,yCACpFirB,oDAAqD,IAAMxY,EAAS3Q,GAAQ1E,cAAcwC,0CAC1FsrB,iDAAkD/qB,GAAQsS,EAAS3Q,GAAQ1E,cAAc8C,yCAAyCC,IAClIgrB,wCAAyCC,GAAc3Y,EAAS3Q,GAAQ1E,cAAcmE,4BAA4B6pB,OAGrB,KAAM,CACnG3P,QAASrM,IADwBpU,EArET0gB,IACxB,MAAOuK,iBAAkBA,EAAkB7oB,cAAeA,EAAe2tB,qCAAsCA,EAAsCC,8CAA+CA,EAA+CC,oDAAqDA,EAAqDC,iDAAkDA,EAAkDC,wCAAyCA,GAA2CzP,GAC9gB/c,OAAQA,EAAQkB,MAAOA,EAAO/B,SAAUA,GAAYV,GACpD6C,cAAeA,EAAelB,SAAUA,GAAYJ,GACpD6C,OAAQA,EAAQ1B,gBAAiBA,GAAmBD,EACrDurB,EAAa5wB,EAAW6wB,YAAY7pB,EAAOC,OAC1CzD,KAAM0mB,EAAqBvkB,KAAMwkB,GAAuB7kB,EACzDya,EAAezc,EAASG,MAAMK,QACpC,OAAO5B,UAA0B0d,cAAc1d,UAA0BqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAc8M,GAA0B,KAAMxsB,EAAa0tB,eAAerpB,EAAUvE,EAAW6tB,qBAAqBC,OAAOgD,4CAA6C5uB,EAA0B0d,QAAAA,cAAcuQ,GAAgB,CAC/Uf,QAAS3pB,EACT4pB,SAAU,IAAMmB,IAChBlB,WAAW,EACXC,MAAO,EACPnrB,MAAOqnB,KACNvpB,EAA0B0d,QAAAA,cAAc8M,GAA0B,KAAMxsB,EAAa0tB,eAAerpB,EAAUvE,EAAW6tB,qBAAqBC,OAAOiD,uCAAwC7uB,EAAe,QAAW0d,cAAcuQ,GAAgB,CACtPf,QAASlF,EACTmF,SAAU,IAAMoB,IAChBnB,WAAW,EACXC,MAAO,EACPnrB,MAAOqnB,KACNvpB,EAA0B0d,QAAAA,cAAc8M,GAA0B,KAAMxsB,EAAa0tB,eAAerpB,EAAUvE,EAAW6tB,qBAAqBC,OAAOkD,uCAAwC9uB,EAAe,QAAW0d,cAAcsQ,GAAgB,CACtPlC,YAAa,CAAE,QAAS,SAAU,SAClCC,SAAU9D,EAAoB8G,cAC9B/C,SAAUC,IACN,MAAMF,EAAWE,EAAU+C,cACvBjD,IAAajuB,EAAW2pB,MAAMC,OAASqE,IAAajuB,EAAW2pB,MAAME,QAAUoE,IAAajuB,EAAW2pB,MAAMG,OAC7G4G,EAAiDzC,EACpD,EAELI,YAAa,EACbjqB,MAAOqnB,KACNvpB,EAA0B0d,QAAAA,cAAc8M,GAA0B,KAAMxsB,EAAa0tB,eAAerpB,EAAUvE,EAAW6tB,qBAAqBC,OAAOqD,gCAAiCjvB,EAAe,QAAW0d,cAAcyQ,GAAgB,CAC/OtwB,MAAOggB,EACPqR,IAAK,EACLC,IAAK,EACL/b,KAAM,GACNgc,aAAc,IACdjC,SAAUtvB,GAASwwB,EAAqCxwB,GACxDwxB,UAAW,QACXhC,MAAO,EACPnrB,MAAOqnB,KACNvpB,EAAe,QAAW0d,cAAc8M,GAA0B,CACnEC,MAAM,GACPzsB,EAAa0tB,eAAerpB,EAAUvE,EAAW6tB,qBAAqBC,OAAO0D,8BAA+BtvB,EAA0B0d,QAAAA,cAAcsQ,GAAgB,CACnKlC,YAAa,IAAKpuB,OAAO6xB,OAAOzxB,EAAW6wB,cAC3C5C,SAAU2C,EACV1C,SAAUC,IACN,MAAMF,EAAWE,EAAU+C,cAAc1T,QAAQ,MAAO,KACxDmT,EAAwC1C,EAAAA,EAE5CI,YAAa,EACbjqB,MAAOqnB,EACPnd,MAAO,YAqBRue,QAAS6B,OAAQgD,KAAmBpwB,EAAwB6qB,UAyD7DwF,GAAiCnxB,EAAWsgB,SAdxB5d,IAAU,CAChC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEknB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvDN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,GACxDmK,SAAUvF,GAAUzC,MAAM+H,YAAYlK,OAGb+U,IAAa,CACtC2Z,0CAA2C,IAAM3Z,EAAS3Q,GAAQ1E,cAAcmC,qCAChF8sB,iDAAkD,IAAM5Z,EAAS3Q,GAAQ1E,cAAcoC,4CACvF8sB,mDAAoD,IAAM7Z,EAAS3Q,GAAQ1E,cAAcsC,8CACzF6sB,yCAA0C,IAAM9Z,EAAS3Q,GAAQ1E,cAAc2C,uCAGgB,KAAM,CACrG0b,QAASrM,IAD0BpU,EAvDT0gB,IAC1B,MAAO+L,cAAeA,EAAexB,iBAAkBA,EAAkB7oB,cAAeA,EAAeyK,SAAUA,EAAUukB,0CAA2CA,EAA2CC,iDAAkDA,EAAkDC,mDAAoDA,EAAoDC,yCAA0CA,GAA4C7Q,GAC5e3d,QAASA,GAAWX,EAAcU,UAClCwB,QAASA,EAASF,OAAQA,EAAQK,eAAgBA,EAAgBE,iBAAkBA,GAAoB5B,GACxGyuB,EAAeC,GAAoB3xB,EAAM6iB,UAAS,GAQzD,OAPA7iB,EAAM6kB,WAAS,KACP9X,EAASiB,MAAQ,IACjB2jB,GAAiB,GAEjBA,GAAiB,EAExB,GAAG,CAAE5kB,EAASiB,QACRpM,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAc8M,GAA0B,KAAMxqB,EAA0B0d,QAAAA,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOoE,mCAAoChwB,EAA0B0d,QAAAA,cAAc8R,GAAgB,CAChYttB,MAAOqnB,EACP2D,QAASxqB,EACTyqB,SAAU,IAAM0C,IAChBzC,WAAW,EACXC,MAAO,KACNrtB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOqE,yCAA0CjwB,EAAe,QAAW0d,cAAc8R,GAAgB,CAClTttB,MAAOqnB,EACP2D,QAASnqB,EACToqB,SAAU,IAAMwC,IAChBvC,WAAW,EACXC,MAAO,MACLyC,GAAiB9vB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOsE,0CAA2ClwB,EAAe,QAAW0d,cAAc8R,GAAgB,CACrUttB,MAAOqnB,EACP2D,QAASjqB,EACTkqB,SAAU,IAAMyC,IAChBxC,WAAW,EACXC,MAAO,KACNrtB,EAAe,QAAW0d,cAAc8M,GAA0B,CACnEC,MAAM,GACPzqB,EAA0B0d,QAAAA,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOuE,qCAAsCnwB,EAAe,QAAW0d,cAAc8R,GAAgB,CACpOttB,MAAOqnB,EACP2D,QAAStqB,EACTuqB,SAAU,IAAMuC,IAChBtC,WAAW,EACXC,MAAO,UAsBR1C,QAAS6B,OAAQ4D,KAAiBhxB,EAAwB6qB,UAkD3DoG,GAAkC/xB,EAAWsgB,SAbzB5d,IAAU,CAChC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEknB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvDN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,OAG/B+U,IAAa,CACtCua,wCAAyCjG,GAAUtU,EAAS3Q,GAAQ1E,cAAc4B,gCAAgC+nB,IAClHkG,2CAA4ClG,GAAUtU,EAAS3Q,GAAQ1E,cAAc6B,mCAAmC8nB,IACxHmG,0CAA2CnG,GAAUtU,EAAS3Q,GAAQ1E,cAAc+B,kCAAkC4nB,IACtHoG,2CAA4C,IAAM1a,EAAS3Q,GAAQ1E,cAAciC,yCAGe,KAAM,CACtGoc,QAASrM,IAD2BpU,EAhDT0gB,IAC3B,MAAO+L,cAAeA,EAAexB,iBAAkBA,EAAkB7oB,cAAeA,EAAe4vB,wCAAyCA,EAAyCC,2CAA4CA,EAA4CC,0CAA2CA,EAA2CC,2CAA4CA,GAA8CzR,GAC1bvd,SAAUA,GAAYf,EAAcU,UACpCE,KAAMA,EAAMkB,QAASA,EAASE,OAAQA,EAAQE,QAASA,GAAWnB,EACzE,OAAOzB,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAA0B0d,QAAAA,cAAc8M,GAA0B,CACvJC,MAAOnpB,GACRtB,EAA0B0d,QAAAA,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO8E,oCAAqC1wB,EAAe,QAAW0d,cAAc0S,GAAc,CACjOluB,MAAOqnB,EACP2D,QAAS5rB,EACT6rB,SAAU,IAAMmD,GAAyChvB,GACzD8rB,WAAW,EACXC,MAAO,KACN/rB,GAAQtB,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAc8M,GAA0B,KAAMxqB,EAA0B0d,QAAAA,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO+E,4CAA6C3wB,EAA0B0d,QAAAA,cAAc0S,GAAc,CAC7YluB,MAAOqnB,EACP2D,QAAS1qB,EACT2qB,SAAU,IAAMoD,GAA4C/tB,GAC5D4qB,WAAW,EACXC,MAAO,KACNrtB,UAA0B0d,cAAc8M,GAA0B,KAAMxqB,EAAe,QAAW0d,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOgF,oCAAqC5wB,EAAe,QAAW0d,cAAc0S,GAAc,CAC3SluB,MAAOqnB,EACP2D,QAASxqB,EACTyqB,SAAU,IAAMqD,GAA2C9tB,GAC3D0qB,WAAW,EACXC,MAAO,KACNrtB,EAAe,QAAW0d,cAAc8M,GAA0B,CACnEC,MAAM,GACPzqB,EAA0B0d,QAAAA,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOiF,uCAAwC7wB,EAAe,QAAW0d,cAAc0S,GAAc,CACpOluB,MAAOqnB,EACP2D,QAAStqB,EACTuqB,SAAU,IAAMsD,IAChBrD,WAAW,EACXC,MAAO,WAqBR1C,QAASuD,OAAQ4C,KAAiB1xB,EAAwB6qB,UAkC3D8G,GAAmCzyB,EAAWsgB,SAV1B5d,IAAU,CAChC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEyc,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,GAC7Dsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,OAGnC+U,IAAa,CACtCib,6CAA8CnzB,GAASkY,EAAS3Q,GAAQ1E,cAAcuE,qCAAqCpH,OAG1B,KAAM,CACvGkhB,QAASrM,IAD4BpU,EAhCT0gB,IAC5B,MAAO+L,cAAeA,EAAejM,mBAAoBA,EAAoBwB,sBAAuBA,EAAuB0Q,6CAA8CA,GAAgDhS,GAClN9Z,gBAAiBA,GAAmB4Z,EAAmB3b,OACvD8tB,EAAsBC,GAA2B9yB,EAAM6iB,SAAS/b,GAIjEisB,EAAgCnyB,EAAqBgkB,sBAHbnlB,IAC1CmzB,EAA6CnzB,EAAAA,GAEsE,KAKvH,OAAOmC,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAc8M,GAA0B,KAAMxqB,EAA0B0d,QAAAA,cAAc,MAAO,KAAM1f,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOwF,wCAAyCpxB,EAA0B0d,QAAAA,cAAcoT,GAAc,CACnY5uB,MAAOoe,EACPziB,MAAOozB,EACP9D,SAP0BtvB,IAC1BqzB,EAAwBrzB,GACxBszB,EAA8BtzB,EAAAA,EAM9BsxB,IAAK,IACLD,IAAK,IACLE,aAAc,YA+ChBiC,GAAmC/yB,EAAWsgB,SAP1B5d,IAAU,CAChCuoB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvDN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,OAG/B+U,KAAe,IAEyD,KAAM,CACvGgJ,QAASrM,IAD4BpU,EA7BT0gB,IAC5B,MAAOuK,iBAAkBA,EAAkB7oB,cAAeA,GAAiBse,GACpE/c,OAAQA,GAAUvB,GAClB2B,SAAUA,GAAYJ,EAC7B,OAAOjC,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMvjB,EAAWwzB,iBAAiBxK,KAAG,CAAGyK,EAAUhZ,KACjI,MAAOxT,KAAMA,GAAQwsB,EACfC,EAAe1zB,EAAW2zB,eAAe1sB,IACxCnE,KAAMA,EAAM8wB,qBAAsBA,EAAsBvX,IAAKA,EAAKwX,SAAUA,GAAYH,EACzFI,EAAiBC,MAAMC,QAAQH,GAAYA,EAASI,SAASC,EAAOC,IAAYD,EAAQ,MAAQC,IAAY,KAA2B,iBAAbN,EAAwBA,EAAW,KAAO,GACpKO,EAAwBl0B,EAAa0tB,eAAerpB,EAAUzB,GAC9DuxB,EAAWhY,EACXiY,EAAUV,EAAuB1zB,EAAa0tB,eAAerpB,EAAU8vB,GAAYhY,EACnF+O,EAAqB,cAATnkB,GAAiC,kBAATA,GAAqC,qBAATA,GAAwC,iBAATA,EACrG,OAAO/E,EAA0B0d,QAAAA,cAAc8M,GAA0B,CACrErQ,IAAKvZ,EACLsB,MAAOqnB,EACPL,UAAWA,EACXuB,KAAMlS,IAAUza,EAAWwzB,iBAAiBzY,OAAS,GACtD7Y,EAAe,QAAW0d,cAAc,MAAO,KAAMwU,GAAwBlyB,EAAe,QAAW0d,cAAc,MAAO,KAAMkU,EAAgB,IAAKQ,GAC7J,IAAA,IAcCC,GAAkB,CACpBC,OAAQ,CACJ1xB,KAAM9C,EAAW6tB,qBAAqBC,OAAO2G,yBAC7CC,OAAQ10B,EAAW20B,gBAAgBH,OACnClO,UAAWpkB,EAA0B0d,QAAAA,cAAcoN,GAA+B,OAEtF4H,UAAW,CACP9xB,KAAM9C,EAAW6tB,qBAAqBC,OAAO+G,4BAC7CH,OAAQ10B,EAAW20B,gBAAgBC,UACnCtO,UAAWpkB,EAA0B0d,QAAAA,cAAcgP,GAAkC,OAEzFkG,MAAO,CACHhyB,KAAM9C,EAAW6tB,qBAAqBC,OAAOiH,wBAC7CL,OAAQ10B,EAAW20B,gBAAgBG,MACnCxO,UAAWpkB,EAA0B0d,QAAAA,cAAc0Q,GAA8B,OAErF0E,QAAS,CACLlyB,KAAM9C,EAAW6tB,qBAAqBC,OAAOmH,0BAC7CP,OAAQ10B,EAAW20B,gBAAgBK,QACnC1O,UAAWpkB,EAA0B0d,QAAAA,cAAc+R,GAAgC,OAEvFuD,SAAU,CACNpyB,KAAM9C,EAAW6tB,qBAAqBC,OAAOqH,2BAC7CT,OAAQ10B,EAAW20B,gBAAgBO,SACnC5O,UAAWpkB,EAA0B0d,QAAAA,cAAc2S,GAAiC,OAExF6C,UAAW,CACPtyB,KAAM9C,EAAW6tB,qBAAqBC,OAAOuH,4BAC7CX,OAAQ10B,EAAW20B,gBAAgBS,UACnC9O,UAAWpkB,EAA0B0d,QAAAA,cAAcqT,GAAkC,OAEzFqC,UAAW,CACPxyB,KAAM9C,EAAW6tB,qBAAqBC,OAAOyH,4BAC7Cb,OAAQ10B,EAAW20B,gBAAgBW,UACnChP,UAAWpkB,EAA0B0d,QAAAA,cAAc2T,GAAkC,QAIvFiC,GAAY51B,OAAO6xB,OAAO8C,IAyE1BkB,GAA0Bj1B,EAAWsgB,SAZZ5d,IAAU,CACrC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEie,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,GAC5D8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,GAC7DwyB,+BAAgC5tB,GAAUiM,GAAGI,yBAAyBjR,OAGxC+U,IAAa,CAC3C0d,+CAAgDjB,GAAUzc,EAAS3Q,GAAQ1E,cAAc0D,uCAAuCouB,IAChIkB,mCAAoC71B,GAASkY,EAAS3Q,GAAQyM,GAAGE,2BAA2BlU,OAGM,KAAM,CACxGkhB,QAASrM,IADmBpU,EA3DT0gB,IACnB,MAAO+L,cAAeA,EAAezK,sBAAuBA,EAAuBxB,mBAAoBA,EAAoB0U,+BAAgCA,EAAgCC,+CAAgDA,EAAgDC,mCAAoCA,GAAsC1U,GAC9V/c,OAAQA,EAAQb,SAAUA,GAAY0d,GACtCvb,cAAeA,GAAiBtB,GAChCZ,QAASA,GAAWD,GACpBuyB,QAASA,EAAStvB,eAAgBA,GAAkBhD,EACrDuyB,EAlBWD,KACjB,GAAuB,IAAnBA,EAAQ9a,QAAgB8a,EAAQrvB,SAAS,OACzC,OAAOgvB,GAEX,MAAMO,EAAgB,GACtB,IAAK,MAAMrB,KAAUmB,EAAS,CAC1B,MAAMG,EAAOzB,GAAgBG,GAC7BqB,EAAcxe,KAAKye,EACtB,CACD,OAAOD,CAAAA,EASOE,CAAaJ,GACrBK,EAAwB51B,EAAMsjB,OAAO,MACrCuS,EAAcj1B,EAAqBgkB,sBAAsBkR,IAC3D,GAAIF,EAAsBG,QAAS,CAC/B,MAAMC,EAAiBJ,EAAsBG,QAAQE,UACrDX,EAAmCU,EACtC,CACD,GAAA,KAgBJ,OAfAh2B,EAAM6kB,WAAS,KACP+Q,EAAsBG,SACtBH,EAAsBG,QAAQG,iBAAiB,QAASL,GAErD,KACCD,EAAsBG,SACtBH,EAAsBG,QAAQI,oBAAoB,QAASN,EAC9D,IAEL,CAAED,EAAsBG,UAC5B/1B,EAAM6kB,WAAS,KACP+Q,EAAsBG,UACtBH,EAAsBG,QAAQE,UAAYb,EAE9C,GAAA,CAAEA,EAAgCQ,EAAsBG,UACrDn0B,EAA0B0d,QAAAA,cAAc6M,GAAsB,CACjEroB,MAAOoe,EACP/c,cAAeA,GAChBvD,EAAe,QAAW0d,cAAcgN,GAA4B,CACnE/I,IAAKqS,GACNJ,EAAM9M,KAAK0N,IACV,MAAO5zB,KAAMA,EAAM4xB,OAAQA,EAAQpO,UAAWA,GAAaoQ,EACrDtC,EAAwBl0B,EAAa0tB,eAAeX,EAAenqB,GACzE,OAAOZ,EAA0B0d,QAAAA,cAAcwM,GAAuB,CAClE/P,IAAKvZ,EACLupB,QAAS+H,EACT9H,MAAOpqB,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAM+C,GACzFuF,QAAStlB,EAAeC,SAAS,QAAUD,EAAeC,SAASkuB,GACnEnI,OAAQ,IAAMoJ,EAA+CjB,IAEpE,KAAA,IAmBCiC,GAA4Bv0B,EAAgB,QAAWuc,GAAG;;;;6BAInCC,GACpBA,EAAMiM,qBAGJ,2BAFI;EAMT+L,GAA6Bx0B,EAAgB,QAAWuc,GAAG;;;;;;;;;;wBAUzC,EAAEkY,QAASA,EAASzyB,MAAOA,KAC3CyyB,EACOzyB,EAAM0a,wBAEV;;;4BAIiB,EAAE1a,MAAOA,KAAWA,EAAM0a;;EAIhDgY,GAAa,CACfC,KAAM,IACNC,MAAO,IACPC,GAAI,IACJC,KAAM,KAGJC,GAAS,oBA0ETC,GAAgC52B,EAAWsgB,SANvB5d,IAAU,CAChCuoB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,OAG9B+U,KAAe,IAEsD,KAAM,CACpGgJ,QAASrM,IADyBpU,EAxET0gB,IACzB,MAAO/F,UAAWA,EAAWtP,UAAWA,EAAW4f,iBAAkBA,GAAoBvK,EACnFmW,EAAYP,GAAW3b,IAAc,GACrCmc,EAAmBh3B,EAAMsjB,OAAO,MAChC2T,EAAej3B,EAAMsjB,OAAO,OAC3BiT,EAASW,GAAcl3B,EAAM6iB,UAAS,GACvCsU,EAAcjf,IAChB,MAAMkf,EAAY,CACd5b,OAAQtD,EAAMmf,SAAS7b,QAE3B,OAAQtD,EAAMvR,MACZ,IAAK,MACH4E,EAAU6rB,GACNJ,EAAiBjB,UACjBmB,GAAW,GACXI,cAAcN,EAAiBjB,UAEnC,MAEF,IAAK,QACHmB,GAAW,GACXF,EAAiBjB,QAAUwB,kBACvBhsB,EAAU6rB,EACV,GAAA,IACJ,MAEF,IAAK,UACHF,GAAW,GACPF,EAAiBjB,SACjBuB,cAAcN,EAAiBjB,WA6B3C,OAlBA/1B,EAAM6kB,WAAS,KACX,GAAsB,oBAAX/Z,OACP,OAEJ,IAAI4jB,EAQJ,OAPwBna,QAAe,OAAA,sBACnC,MACMijB,SADqBra,MACCzb,QAC5BgtB,EAAQ,IAAI8I,EAAOP,EAAalB,SAChCrH,EAAM+I,GAAGZ,GAAQM,EACpB,IAEM,KACCzI,GACAA,EAAMgJ,IAAIb,GAAQM,EACrB,CAER,GAAG,CAAEF,EAAalB,UACZn0B,EAA0B0d,QAAAA,cAAcgX,GAA4B,CACvE/S,IAAK0T,EACLnzB,MAAOqnB,EACPoL,QAASA,EACT7Q,aAAc,KA3BVsR,EAAiBjB,UACjBmB,GAAW,GACXI,cAAcN,EAAiBjB,SA0BpCgB,GAAAA,EAAAA,IAmDDY,GAA+Bz3B,EAAWsgB,SAZtB5d,IAAU,CAChC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEknB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,OAG9B+U,IAAa,CACtCxH,SAAU,IAAMwH,EAAS3Q,GAAQjC,MAAMoL,YACvCC,WAAY,IAAMuH,EAAS3Q,GAAQjC,MAAMqL,cACzCG,WAAY,IAAMoH,EAAS3Q,GAAQjC,MAAMwL,cACzCC,YAAa,IAAMmH,EAAS3Q,GAAQjC,MAAMyL,kBAGmD,KAAM,CACnGmQ,QAASrM,IADwBpU,EAtCT0gB,IACxB,MAAO2J,qBAAsBA,EAAsBD,UAAWA,EAAW/kB,cAAeA,EAAeqyB,gBAAiBA,EAAiBjL,cAAeA,EAAexB,iBAAkBA,EAAkBhb,SAAUA,EAAUC,WAAYA,EAAYG,WAAYA,EAAYC,YAAaA,GAAeoQ,EAC3S,OAAOhf,EAA0B0d,QAAAA,cAAc+W,GAA2B,CACtE9L,qBAAsBA,GACvBA,GAAwB3oB,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAA0B0d,QAAAA,cAAcwX,GAA+B,CAChLjc,UAAW,OACXtP,UAAW,IAAMiF,MACjB5O,EAAe,QAAW0d,cAAcwX,GAA+B,CACvEjc,UAAW,KACXtP,UAAW,IAAM4E,OAChBvO,EAAe,QAAW0d,cAAcmL,GAAqB,CAC9D3mB,MAAOqnB,EACPe,QAAS,IAAM0L,EAAgBl4B,EAAW8F,gBAAgBoW,UAC1D+O,OAAQplB,IAAkB7F,EAAW8F,gBAAgBoW,SACrD0O,UAAWA,EACXC,qBAAsBA,EACtBG,OAAQJ,GACTA,EAAY1oB,EAA0B0d,QAAAA,cAAcsL,GAAY,KAAMhpB,EAA0B0d,QAAAA,cAAcxe,EAAiB+2B,iBAAkB,OAASj2B,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,KAAMrjB,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOsK,0BAA2BvN,GAAwB3oB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAcwX,GAA+B,CACzgBjc,UAAW,OACXtP,UAAW,IAAM6E,MACjBxO,EAAe,QAAW0d,cAAcwX,GAA+B,CACvEjc,UAAW,QACXtP,UAAW,IAAMgF,WAoBnBwnB,GAA2Bj2B,EAAgB,QAAWuc,GAAG;;;;6BAIlCC,GACpBA,EAAMiM,qBAGJ,iBAFI;EAoCTyN,GAA8B93B,EAAWsgB,SAVrB5d,IAAU,CAChC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEknB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,OAG9B+U,IAAa,CACtCvG,QAAS,IAAMuG,EAAS3Q,GAAQjC,MAAMqM,WACtCI,UAAW,IAAMmG,EAAS3Q,GAAQjC,MAAMyM,gBAGoD,KAAM,CAClGmP,QAASrM,IADuBpU,EA9BT0gB,IACvB,MAAO2J,qBAAsBA,EAAsBD,UAAWA,EAAW/kB,cAAeA,EAAeqyB,gBAAiBA,EAAiBjL,cAAeA,EAAexB,iBAAkBA,EAAkB/Z,QAASA,EAASI,UAAWA,GAAaoP,EACrP,OAAOhf,EAA0B0d,QAAAA,cAAcyY,GAA0B,CACrExN,qBAAsBA,GACvBA,GAAwB3oB,EAA0B0d,QAAAA,cAAcwX,GAA+B,CAC9Fjc,UAAW,KACXtP,UAAW,IAAM6F,MACjBxP,EAAe,QAAW0d,cAAcmL,GAAqB,CAC7D3mB,MAAOqnB,EACPe,QAAS,IAAM0L,EAAgBl4B,EAAW8F,gBAAgBsW,OAC1D6O,OAAQplB,IAAkB7F,EAAW8F,gBAAgBsW,MACrDwO,UAAWA,EACXC,qBAAsBA,EACtBG,OAAQJ,GACTA,EAAY1oB,EAAe,QAAW0d,cAAcsL,GAAY,KAAMhpB,EAA0B0d,QAAAA,cAAcxe,EAAiBm3B,gBAAiB,OAASr2B,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrjB,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO0K,yBAA0B3N,GAAwB3oB,EAAe,QAAW0d,cAAcwX,GAA+B,CACrbjc,UAAW,OACXtP,UAAW,IAAMiG,UAkBnB2mB,GAA+Br2B,EAAgB,QAAWuc,GAAG;;;;6BAItCC,GACpBA,EAAMiM,qBAGJ,2BAFI;EA0DT6N,GAAkCl4B,EAAWsgB,SAdpB5d,IAAU,CACrC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEknB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,OAGzB+U,IAAa,CAC3ChH,YAAa,IAAMgH,EAAS3Q,GAAQjC,MAAM4L,eAC1CC,cAAe,IAAM+G,EAAS3Q,GAAQjC,MAAM6L,iBAC5CC,cAAe,IAAM8G,EAAS3Q,GAAQjC,MAAM8L,iBAC5CC,eAAgB,IAAM6G,EAAS3Q,GAAQjC,MAAM+L,kBAC7CC,YAAa,IAAM4G,EAAS3Q,GAAQjC,MAAMgM,eAC1CC,aAAc,IAAM2G,EAAS3Q,GAAQjC,MAAMiM,mBAG+D,KAAM,CAChH2P,QAASrM,IAD2BpU,EApDT0gB,IAC3B,MAAO2J,qBAAsBA,EAAsBD,UAAWA,EAAW/kB,cAAeA,EAAeqyB,gBAAiBA,EAAiBjL,cAAeA,EAAexB,iBAAkBA,EAAkBxa,YAAaA,EAAaC,cAAeA,EAAeC,cAAeA,EAAeC,eAAgBA,EAAgBC,YAAaA,EAAaC,aAAcA,GAAgB4P,EACzX,OAAOhf,EAA0B0d,QAAAA,cAAc6Y,GAA8B,CACzE5N,qBAAsBA,GACvBA,GAAwB3oB,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAA0B0d,QAAAA,cAAcwX,GAA+B,CAChLjc,UAAW,OACXtP,UAAW,IAAMsF,MACjBjP,EAAe,QAAW0d,cAAcwX,GAA+B,CACvEjc,UAAW,KACXtP,UAAW2M,IACHA,EAAMsD,OACNxK,IAEAL,GACH,KAEJ/O,EAAe,QAAW0d,cAAcmL,GAAqB,CAC9D3mB,MAAOqnB,EACPe,QAAS,IAAM0L,EAAgBl4B,EAAW8F,gBAAgBqW,aAC1D8O,OAAQplB,IAAkB7F,EAAW8F,gBAAgBqW,YACrDyO,UAAWA,EACXC,qBAAsBA,EACtBG,OAAQJ,GACTA,EAAY1oB,EAA0B0d,QAAAA,cAAcsL,GAAY,KAAMhpB,EAA0B0d,QAAAA,cAAcxe,EAAiBu3B,oBAAqB,OAASz2B,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,KAAMrjB,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO8K,6BAA8B/N,GAAwB3oB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAcwX,GAA+B,CAC/gBjc,UAAW,OACXtP,UAAW2M,IACHA,EAAMsD,OACNzK,IAEAH,GACH,IAELhP,EAAe,QAAW0d,cAAcwX,GAA+B,CACvEjc,UAAW,QACXtP,UAAW,IAAMuF,WAiJnBynB,GAAyBr4B,EAAWsgB,SAXX5d,IAAU,CACrCN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,GACxDkB,MAAO0D,GAAUwL,OAAOK,oBAAoBzQ,GAC5CmK,SAAUvF,GAAUzC,MAAM+H,YAAYlK,OAGR+U,IAAa,CAC3C6gB,4CAA6C,IAAM7gB,EAAS3Q,GAAQ1E,cAAcwD,uCAClF2yB,2CAA4CC,GAAQ/gB,EAAS3Q,GAAQ1E,cAAcgD,mCAAmCozB,OAGrB,KAAM,CACvG/X,QAASrM,IADkBpU,EA3HT0gB,IAClB,MAAO9c,MAAOA,EAAOxB,cAAeA,EAAeyK,SAAUA,EAAUyrB,4CAA6CA,EAA6CC,2CAA4CA,GAA8C7X,GACpP/c,OAAQA,EAAQb,SAAUA,EAAU+B,MAAOA,GAASzC,GACpD6C,cAAeA,GAAiBtB,GAChCkC,YAAaA,EAAaR,cAAeA,EAAeujB,WAAYA,GAAc/jB,GAClF9B,QAASA,GAAWD,GACpBwB,QAASA,EAASF,OAAQA,EAAQK,eAAgBA,EAAgBE,iBAAkBA,GAAoB5B,EACzG01B,EAAc11B,EAAQC,KACtB01B,EAAc54B,EAAMsjB,OAAO,OAC1B2G,EAAS4O,GAAc74B,EAAM6iB,UAAS,IACtCqH,EAAU4O,GAAe94B,EAAM6iB,SAASkH,GAAMI,OAC9CG,EAAWyO,GAAgB/4B,EAAM6iB,SAASle,IAC1C4lB,EAAsByO,GAA2Bh5B,EAAM6iB,SAAShe,IAChEmkB,EAAWE,GAAgBlpB,EAAM6iB,UAAS,GAC3C+U,EAAkBqB,IAChB/O,IAAaH,GAAMI,MACnB2O,EAAY/O,GAAMI,MAEtBsO,EAA2CQ,EAAAA,EA0C/C,OAhCAj5B,EAAM6kB,WAAS,KACXqE,GAAa,EACb,GAAA,IACJlpB,EAAM6kB,WAAS,KACP9X,EAASiB,MAxuCS,KAyuCdnJ,GACAm0B,GAAwB,GAG5BjsB,EAASiB,MA7uCS,KA8uClBgrB,EAAwBn0B,EAE/B,GAAG,CAAEkI,EAASiB,QACfhO,EAAM6kB,WAAS,KACXkU,EAAap0B,GACbq0B,EAAwBn0B,EAC3B,GAAG,CAAEF,EAAgBE,IACtB7E,EAAM6kB,WAAS,KACPoF,GAAW2O,EAAY7C,SACvBle,aAAa+gB,EAAY7C,SAExB9L,IACD2O,EAAY7C,QAAUje,iBAClBghB,EAAY/O,GAAMI,KAClB,GAAA,MAED,KACCyO,EAAY7C,SACZle,aAAa+gB,EAAY7C,QAC5B,IAEL,CAAE9L,IACD0O,EAGE/2B,EAA0B0d,QAAAA,cAAc0K,GAAe,CAC1DvE,aAAc,IAAMoT,GAAW,GAC/BnT,aAAc,IAAMmT,GAAW,GAC/B5O,QAASA,EACTzlB,QAASA,EACT0lB,SAAUA,EACVlB,UAAWA,EACXF,WAAYA,EACZ,qBAAsBppB,EAAWw5B,uBAClCt3B,EAAe,QAAW0d,cAAc8K,GAAsB,CAC7DtmB,MAAOA,EACPwmB,UAAWA,EACXC,qBAAsBA,EACtBC,gBAAgB,EAChBP,QAASA,EACT3lB,OAAQA,EACRa,cAAeA,GAChBvD,EAAe,QAAW0d,cAAcmL,GAAqB,CAC5D3mB,MAAOA,EACPooB,QAAS,IAAMsM,OAA4Ct2B,GAC3DyoB,OAAQ5kB,EACR2kB,QAAQ,EACRJ,UAAWA,EACXC,qBAAsBA,GACvB3oB,EAA0B0d,QAAAA,cAAcsL,GAAY,KAAMhpB,EAAe,QAAW0d,cAAcxe,EAAiBq4B,sBAAuB,QAASv3B,EAAe,QAAW0d,cAAcqY,GAA8B,CACxNpN,qBAAsBA,EACtBD,UAAWA,EACX/kB,cAAeA,EACfqyB,gBAAiBA,IACjBh2B,EAAe,QAAW0d,cAAc0Y,GAA6B,CACrEzN,qBAAsBA,EACtBD,UAAWA,EACX/kB,cAAeA,EACfqyB,gBAAiBA,IACjBh2B,EAAe,QAAW0d,cAAc8Y,GAAiC,CACzE7N,qBAAsBA,EACtBD,UAAWA,EACX/kB,cAAeA,EACfqyB,gBAAiBA,IACjBh2B,EAAe,QAAW0d,cAAcmL,GAAqB,CAC7D3mB,MAAOA,EACPooB,QAAS,KAAMkN,OApFI1D,EAoFW3L,GAAMsP,UAnFhCnP,IAAawL,EACboD,EAAY/O,GAAMI,OAElBsO,EAA2C/4B,EAAW8F,gBAAgBC,KACtEqzB,EAAYpD,KALGA,KAoFiB2D,EACpC1O,OAAQT,IAAaH,GAAMsP,KAC3B3O,QAAQ,EACRJ,UAAWA,EACXC,qBAAsBA,GACvB3oB,EAAe,QAAW0d,cAAcsL,GAAY,KAAMhpB,UAA0B0d,cAAcxe,EAAiBw4B,eAAgB,SAAUpP,IAAaH,GAAMwP,WAAa33B,EAAe,QAAW0d,cAAc4L,GAA8B,MAAOhB,IAAaH,GAAMsP,MAAQz3B,EAA0B0d,QAAAA,cAAc6V,GAAyB,OAhD9UvzB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,KAgDkQ,IAkBvVuW,GAAuB13B,EAAgB,QAAWuc,GAAG;;;eAG5C,EAAE7Z,QAASA,EAASgb,UAAWA,KACtChb,IAAYgb,EACL,QAEJ;;cAGG,EAAEhb,QAASA,EAASgb,UAAWA,KACrChb,IAAYgb,EACL,QAEJ;aAEE,EAAEhb,QAASA,EAASgb,UAAWA,KACpChb,IAAYgb,EACL,SAEJ;;;;;;;;;;;;;;;eAgBI,EAAEsJ,WAAYA,KACrBA,EACO,IAEJ;iBAEM,EAAEA,WAAYA,EAAYE,UAAWA,KAC9CA,GAAaF,EACND,GAAgBC,GAEpB;;;;;EAQL2Q,GAA4B33B,EAAgB,QAAWuc,GAAG;;;;;;;;EAU1Dqb,GAAgC53B,EAAgB,QAAWuc,GAAG;;;;;;;;;;;4BAWxC,EAAEva,MAAOA,KAAWA,EAAM0a;;EAIhDmb,GAAgB73B,EAAgB,QAAWuc,GAAG;;;;;;;;;;;;EAc9Cub,GAA2B93B,EAAgB,QAAWuc,GAAG;;;;;;;;;;;;;;;;wBAgBvC,EAAEmB,UAAWA,EAAW1b,MAAOA,KAC/C0b,EACO1b,EAAM+1B,cAEV/1B,EAAMumB;kBAEC,EAAEyP,KAAMA,EAAMh2B,MAAOA,KACtB,SAATg2B,EACO,oBAAsBh2B,EAAMi2B,uBAEhC;eAEI,EAAEz1B,OAAQA,EAAQkb,UAAWA,MACxC,IAAKlb,EAAQ,CACT,GAAIkb,EACA,MAAO,MAEX,IAAKA,EACD,MAAO,KAEd,CACD,MAAO,GAAA;iBAEM,EAAEsa,KAAMA,MACrB,OAAQA,GACN,IAAK,QACH,MAAO,iCAET,IAAK,OACH,MAAO,qCAET,IAAK,OACH,MAAO,oCAET,IAAK,QACH,MAAO,kCAET,IAAK,MACH,MAAO,mCAET,IAAK,OACH,MAAO,mCAEX,MAAO,EAAA;EAILE,GAA+Bl4B,EAAgB,QAAWuc,GAAG;;;;;;iBAMlD,EAAE1X,KAAMA,KAAU,MAAMA;aAC5B,EAAE7C,MAAOA,EAAOm2B,QAASA,KAC9BA,EACOn2B,EAAMmc,aAEVnc,EAAMo2B;wBAEO,EAAEp2B,MAAOA,EAAOqB,cAAeA,EAAe80B,QAASA,EAAStP,OAAQA,KACxFxlB,IAAkB80B,EACXn2B,EAAM4b,4BAEbiL,GAGAsP,EAFOn2B,EAAM0a,wBAKV1a,EAAMumB;wBAEO,EAAEvmB,MAAOA,EAAOqB,cAAeA,EAAe80B,QAASA,KACvE90B,IAAkB80B,EACX,cAEPA,EACOn2B,EAAM+1B,cAEV/1B,EAAMumB;;;4BAIW,EAAEvmB,MAAOA,KAAWA,EAAM0a;;EAIhD2b,GACO,UADPA,GAES,YAFTA,GAGQ,WAHRA,GAIU,aAJVA,GAKY,eALZA,GAMW,cANXA,GAOU,aAPVA,GAQY,eARZA,GASW,cAGXC,GAAY,CACdC,aAAc,KACdC,eAAgB,KAChBC,cAAe,KACfC,gBAAiB,KACjBC,kBAAmB,KACnBC,iBAAkB,KAClBC,gBAAiB,KACjBC,kBAAmB,KACnBC,iBAAkB,KAClBC,aAAc,KACdC,eAAgB,KAChBC,cAAe,KACfC,gBAAiB,KACjBC,kBAAmB,KACnBC,iBAAkB,KAClBC,gBAAiB,KACjBC,kBAAmB,KACnBC,iBAAkB,KAClBC,YAAa,KACbC,cAAe,KACfC,aAAc,KACdC,eAAgB,KAChBC,iBAAkB,KAClBC,gBAAiB,KACjBC,eAAgB,KAChBC,iBAAkB,KAClBC,gBAAiB,KACjBC,YAAa,KACbC,cAAe,KACfC,aAAc,KACdC,eAAgB,KAChBC,iBAAkB,KAClBC,gBAAiB,KACjBC,eAAgB,KAChBC,iBAAkB,KAClBC,gBAAiB,KACjBC,WAAY,KACZC,aAAc,KACdC,YAAa,KACbC,cAAe,KACfC,gBAAiB,KACjBC,eAAgB,KAChBC,cAAe,KACfC,gBAAiB,KACjBC,eAAgB,KAChBC,YAAa,KACbC,cAAe,KACfC,aAAc,KACdC,eAAgB,KAChBC,iBAAkB,KAClBC,gBAAiB,KACjBC,eAAgB,KAChBC,iBAAkB,KAClBC,gBAAiB,MAGfC,GAAgB,CAClBC,GAAI,CACAvtB,SAAU,GACVI,QAAS,IAEbotB,GAAI,CACAxtB,SAAU,GACVI,QAAS,GAEbqtB,GAAI,CACAztB,SAAU,GACVI,SAAU,IAEdstB,GAAI,CACA1tB,QAAS,EACTI,QAAS,IAEbutB,GAAI,CACA3tB,QAAS,EACTI,QAAS,GAEbwtB,GAAI,CACA5tB,QAAS,EACTI,SAAU,IAEdytB,GAAI,CACA7tB,QAAS,GACTI,QAAS,IAEb0tB,GAAI,CACA9tB,QAAS,GACTI,QAAS,GAEb2tB,GAAI,CACA/tB,QAAS,GACTI,SAAU,IAEd4tB,GAAI,CACAhuB,SAAU,GACVI,QAAS,OAEb6tB,GAAI,CACAjuB,SAAU,GACVI,QAAS,KAEb8tB,GAAI,CACAluB,QAAS,EACTI,QAAS,OAEb+tB,GAAI,CACAnuB,QAAS,EACTI,QAAS,KAEbguB,GAAI,CACApuB,QAAS,GACTI,QAAS,OAEbiuB,GAAI,CACAruB,QAAS,GACTI,QAAS,KAEbkuB,GAAI,CACAtuB,SAAU,GACVI,QAAS,KAEbmuB,GAAI,CACAvuB,SAAU,GACVI,QAAS,KAEbouB,GAAI,CACAxuB,QAAS,EACTI,QAAS,OAEbquB,GAAI,CACAzuB,QAAS,EACTI,QAAS,KAEbsuB,GAAI,CACA1uB,QAAS,GACTI,QAAS,OAEbuuB,GAAI,CACA3uB,QAAS,GACTI,QAAS,KAEbwuB,GAAI,CACA5uB,SAAU,GACVI,QAAS,MAEbyuB,GAAI,CACA7uB,QAAS,EACTI,QAAS,MAEb0uB,GAAI,CACA9uB,QAAS,GACTI,QAAS,MAEb2uB,GAAI,CACA/uB,SAAU,KACVI,QAAS,GAEb4uB,GAAI,CACAhvB,QAAS,KACTI,QAAS,IAiHX6uB,GAA8Bp/B,EAAWsgB,SAZhB5d,IAAU,CACrC28B,aAAc/3B,GAAUwL,OAAOI,gBAAgBxQ,GAC/CuoB,iBAAkB3jB,GAAUwL,OAAOK,oBAAoBzQ,GACvDN,cAAekF,GAAUlF,cAAc2E,iBAAiBrE,OAG1B+U,IAAa,CAC3C6nB,gBAAiBC,GAAU9nB,EAAS3Q,GAAQjC,MAAMsL,QAAQovB,IAC1DC,gBAAiBC,GAAUhoB,EAAS3Q,GAAQjC,MAAM0L,QAAQkvB,IAC1D/nB,6BAA8BgoB,GAAYjoB,EAAS3Q,GAAQjC,MAAMiK,qBAAqB4wB,OAGgB,KAAM,CAC5Gjf,QAASrM,IADuBpU,EA7GT0gB,IACvB,MAAOkZ,KAAMA,EAAM+F,SAAUA,EAAUrgB,UAAWA,EAAWsgB,YAAaA,EAAaC,eAAgBA,EAAgBC,WAAYA,EAAYC,cAAeA,EAAeV,aAAcA,EAAcpU,iBAAkBA,EAAkB7oB,cAAeA,EAAek9B,gBAAiBA,EAAiBE,gBAAiBA,EAAiB9nB,6BAA8BA,GAAgCgJ,GACtY/c,OAAQA,EAAQb,SAAUA,GAAYV,GACtC6C,cAAeA,GAAiBtB,EACjCq8B,EAAal9B,EAASK,SAASiB,OAC/B67B,EAAcx5B,IAChB,MACMy5B,EAAWhG,GADA,GAAGN,IAAOnzB,KAErB4E,EAAYoyB,GAAcyC,GAChCH,EAAcG,GACdxoB,GAA6B,GAC7B4nB,EAAgBj0B,EAAU8E,SAC1BqvB,EAAgBn0B,EAAUkF,SAC1BqH,iBACIF,GAA6B,EAC7B,GAAA,IAAA,EAER,OAAOhW,EAA0B0d,QAAAA,cAAcsa,GAA0B,CACrE91B,MAAOy7B,EACPzF,KAAMA,EACNx1B,OAAQ47B,EACR1gB,UAAWA,GACZ5d,EAAe,QAAW0d,cAAc0a,GAA8B,CACrEl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,IACfvD,EAAe,QAAW0d,cAAc0a,GAA8B,CACtEl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,IACfvD,EAAe,QAAW0d,cAAc0a,GAA8B,CACtEl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,IACfvD,EAAe,QAAW0d,cAAc0a,GAA8B,CACtEl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,IACfvD,EAAe,QAAW0d,cAAc0a,GAA8B,CACtEl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,GAChB06B,GAAWj+B,EAA0B0d,QAAAA,cAAc0a,GAA8B,CAChFl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,IACfvD,EAAe,QAAW0d,cAAc0a,GAA8B,CACtEl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,IACfvD,EAAe,QAAW0d,cAAc0a,GAA8B,CACtEl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,IACfvD,EAAe,QAAW0d,cAAc0a,GAA8B,CACtEl2B,MAAOqnB,EACPxkB,KAAMwzB,GACNxP,OAAQqV,IAAe5F,GAAU,GAAGN,IAAOK,MAC3CF,QAAS6F,IAAgB1F,GAAU,GAAGN,IAAOK,MAC7CjO,QAAS,IAAMiU,EAAYhG,IAC3B1U,aAAc,IAAMsa,EAAe3F,GAAU,GAAGN,IAAOK,OACvDh1B,cAAeA,QAoBjBk7B,GAA4Bv+B,EAAgB,QAAWuc,GAAG;;;;EAM1DiiB,GAAqCx+B,EAAgB,QAAWuc,GAAG;;;EAKnEkiB,GAAgCz+B,EAAgB,QAAWuc,GAAG;;;;GAM7D1U,uBAAwBA,GAAwBE,aAAcA,GAAcE,wBAAyBA,GAAyBE,YAAaA,GAAaE,gBAAiBA,IAAmBvK,EAAagE,YAAY2F,QAErNE,SAAUA,IAAY7J,EAAagE,YAAYyF,WAsGhDm3B,GAA+BtgC,EAAWsgB,SAVjB5d,IAAU,CACrC+pB,cAAenlB,GAAUlF,cAAc2E,iBAAiBrE,GAAOiB,OAAOI,SACtEw8B,eAAgBj5B,GAAUzC,MAAMkH,aAAarJ,GAC7C89B,eAAgBl5B,GAAUzC,MAAMmH,aAAatJ,GAC7C+9B,uBAAwBn5B,GAAUzC,MAAM8G,qBAAqBjJ,GAC7Dg+B,mBAAoBp5B,GAAUzC,MAAMgH,iBAAiBnJ,OAGvB+U,KAAe,IAE0D,KAAM,CAC7GgJ,QAASrM,IADwBpU,EApGT0gB,IACxB,MAAOpB,UAAWA,EAAWmN,cAAeA,EAAe8T,eAAgBA,EAAgBC,eAAgBA,EAAgBC,uBAAwBA,EAAwBC,mBAAoBA,GAAsBhgB,GAC9Mkf,EAAaC,GAAkB//B,EAAM6iB,SAAS,KAC9Cmd,EAAYC,GAAiBjgC,EAAM6iB,SAAS,IAuBnD7iB,EAAM6kB,WAAS,KACNib,GACDG,EAAc,GAErB,GAAG,CAAEQ,EAAgBC,IACtB,MAAMn1B,EAxBmB,MACrB,MAAMs1B,EACC,GADDA,EAEC,GAFDA,EAGC,EAEDC,EACC,EADDA,EAEC,EAFDA,EAGC,EAGD31B,EAAiBtB,GAAaJ,IAAUg3B,GAAiBh3B,IAAUi3B,IACnEt1B,EAAoBjB,GAAgB02B,EAAWA,EAAWA,GAC1Dx1B,EAAkBpB,GAHV,GAIRqB,EAAkBvB,GAAwB,CAAEqB,EAAmBrB,GAAwB,CAAEI,GAAgB22B,EAAoBA,EAAoBA,GAAqB31B,EAAgBhB,IAAiB22B,GAAqBA,GAAqBA,KAAwBz1B,IAE/Q,OADkB1B,GAAuB2B,EAClCC,EAOOw1B,GAClB,OAAOn/B,EAAe,QAAW0d,cAAc+gB,GAA2B,KAAMz+B,EAA0B0d,QAAAA,cAAcghB,GAAoC,KAAM1+B,EAAe,QAAW0d,cAAcihB,GAA+B,CACrOS,0BAA0B,EAC1B5f,MAAO,CACH7V,UAAWA,EACXid,WAAYhJ,GAAamhB,EAAyB,aAAaC,kBAAqC,IAExGlb,aAAc,KAjCdqa,EAAe,MAkChBn+B,EAAe,QAAW0d,cAAcggB,GAA6B,CACpExF,KAAM,QACN+F,SAAUjgC,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAOyT,eAC5FzhB,UAAWA,EACXsgB,YAAaA,EACbC,eAAgBA,EAChBC,WAAYA,EACZC,cAAeA,IACfr+B,EAAe,QAAW0d,cAAcggB,GAA6B,CACrExF,KAAM,OACN+F,SAAUjgC,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO0T,cAC5F1hB,UAAWA,EACXsgB,YAAaA,EACbC,eAAgBA,EAChBC,WAAYA,EACZC,cAAeA,IACfr+B,EAAe,QAAW0d,cAAcggB,GAA6B,CACrExF,KAAM,OACN+F,SAAUjgC,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO2T,cAC5F3hB,UAAWA,EACXsgB,YAAaA,EACbC,eAAgBA,EAChBC,WAAYA,EACZC,cAAeA,IACfr+B,EAAe,QAAW0d,cAAcggB,GAA6B,CACrExF,KAAM,QACN+F,SAAUjgC,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO4T,eAC5F5hB,UAAWA,EACXsgB,YAAaA,EACbC,eAAgBA,EAChBC,WAAYA,EACZC,cAAeA,IACfr+B,EAAe,QAAW0d,cAAcggB,GAA6B,CACrExF,KAAM,MACN+F,SAAUjgC,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO6T,aAC5F7hB,UAAWA,EACXsgB,YAAaA,EACbC,eAAgBA,EAChBC,WAAYA,EACZC,cAAeA,IACfr+B,EAAe,QAAW0d,cAAcggB,GAA6B,CACrExF,KAAM,OACN+F,SAAUjgC,EAAa0tB,eAAeX,EAAejtB,EAAW6tB,qBAAqBC,OAAO8T,cAC5F9hB,UAAWA,EACXsgB,YAAaA,EACbC,eAAgBA,EAChBC,WAAYA,EACZC,cAAeA,UAsHjBsB,GAA0BrhC,EAAWsgB,SAbZ5d,IAAU,CACrC8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,GAC7Dsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,GAC5Dg+B,mBAAoBp5B,GAAUzC,MAAMgH,iBAAiBnJ,OAGvB+U,IAAa,CAC3C6pB,oBAAqB/hC,GAASkY,EAAS3Q,GAAQjC,MAAMuL,YAAY7Q,IACjEgiC,oBAAqBhiC,GAASkY,EAAS3Q,GAAQjC,MAAM2L,YAAYjR,IACjEmY,6BAA8BgoB,GAAYjoB,EAAS3Q,GAAQjC,MAAMiK,qBAAqB4wB,IACtF8B,4BAA6B,IAAM/pB,EAAS3Q,GAAQjC,MAAMgN,0BAGwC,KAAM,CACxG4O,QAASrM,IADmBpU,EApGT0gB,IACnB,MAAOF,mBAAoBA,EAAoBwB,sBAAuBA,EAAuB0e,mBAAoBA,EAAoBY,oBAAqBA,EAAqBC,oBAAqBA,EAAqB7pB,6BAA8BA,EAA8B8pB,4BAA6BA,GAA+B9gB,GAC1U5d,SAAUA,EAAU+B,MAAOA,GAAS2b,GACpCrd,SAAUA,GAAYL,GACtBoB,QAASA,EAASI,QAASA,GAAWnB,GACtCylB,WAAYA,GAAc/jB,EAC3B48B,EAAet+B,EAASH,MACvBsc,EAAWiF,GAAgBzkB,EAAM6iB,UAAS,IAC1CmG,EAAWE,GAAgBlpB,EAAM6iB,UAAS,GAC3C+e,EAAiB,CAACj7B,EAAMlH,KAE1B,OADAmY,GAA6B,GACrBjR,GACN,IAAK,UACH66B,EAAoB/hC,GACpB,MAEF,IAAK,UACHgiC,EAAoBhiC,GAGxBqY,iBACIF,GAA6B,EAC7BgpB,GAAAA,EAAAA,EAeR,OAHA5gC,EAAM6kB,WAAS,KACXqE,GAAa,EACb,GAAA,IACCyY,EAGE//B,EAA0B0d,QAAAA,cAAcka,GAAsB,CACjE/T,aAAc,IAAMhB,GAAa,GACjCiB,aAAc,IAAMjB,GAAa,GACjCmB,YAAa,IAAOpG,EAAiC,KAArBiF,GAAa,GAC7CjgB,QAASA,EACTgb,UAAWA,EACXwJ,UAAWA,EACXF,WAAYA,EACZ,qBAAsBppB,EAAWmiC,wBAClCjgC,EAAe,QAAW0d,cAAckhB,GAA8B,CACrEhhB,UAAWA,IACXA,GAAapb,GAAWxC,EAAe,QAAW0d,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAMrhB,EAA0B0d,QAAAA,cAAcma,GAA2B,CAC7KrY,MAAO,CACH0gB,SAAU,eAEflgC,EAAe,QAAW0d,cAAcoa,GAA+B,CACtE51B,MAAOoe,EACPgK,QAAS,IAAM0V,EAAe,WAAY,OAC3C,MAAOhgC,EAA0B0d,QAAAA,cAAcma,GAA2B,CACzE31B,MAAOoe,EACPd,MAAO,CACH0gB,SAAU,iBAEflgC,EAAe,QAAW0d,cAAcoa,GAA+B,CACtE51B,MAAOoe,EACPgK,QAAS,IAAM0V,EAAe,UAAW,OAC1C,MAAOhgC,EAA0B0d,QAAAA,cAAcma,GAA2B,CACzE31B,MAAOoe,EACPd,MAAO,CACH0gB,SAAU,iBAEflgC,EAAe,QAAW0d,cAAcoa,GAA+B,CACtE51B,MAAOoe,EACPgK,QAAS,IAAM0V,EAAe,UAAW,OAC1C,MAAOhgC,EAA0B0d,QAAAA,cAAcma,GAA2B,CACzE31B,MAAOoe,EACPd,MAAO,CACH0gB,SAAU,kBAEflgC,EAAe,QAAW0d,cAAcoa,GAA+B,CACtE51B,MAAOoe,EACPgK,QAAS,IAAM0V,EAAe,WAAY,OAC3C,MAAOhgC,EAA0B0d,QAAAA,cAAcqa,GAAe,CAC7DzN,QA3DkBhU,IACdA,EAAME,SAAWF,EAAMG,UAG3BT,GAA6B,GAC7B8pB,IACA5pB,iBACIF,GAA6B,EAC7BgpB,GAAAA,GAAAA,GAoDLh/B,EAAe,QAAW0d,cAAcxe,EAAiBihC,iBAAkB,SA9CnEngC,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,KA8CT,IAoB5E+e,GAAsBC,GAAergC,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAAe,QAAW0d,cAAc2J,GAAsB,MAAOrnB,EAA0B0d,QAAAA,cAAcqK,GAAiB,MAAO/nB,EAAe,QAAW0d,cAAciZ,GAAwB,MAAO32B,EAA0B0d,QAAAA,cAAciiB,GAAyB,OAqmBpYW,GAAsBhiC,EAAWsgB,SAnCR5d,IAAU,CACrCA,MAAOA,EACP8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,GAC7Du/B,eAAgB36B,GAAUzC,MAAM0H,aAAa7J,GAC7C8gB,UAAWlc,GAAUzC,MAAMwH,QAAQ3J,GACnCw/B,kBAAmB56B,GAAUzC,MAAM2G,WAAW9I,GAC9Cy/B,eAAgB76B,GAAUzC,MAAM6H,QAAQhK,GACxC6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,OAGtB+U,IAAa,CAC3CA,SAAUA,EACV2qB,yBAA0Bx/B,GAAW6U,EAAS3Q,GAAQ1E,cAAcK,iBAAiBG,IACrFy/B,8BAA+B,IAAM5qB,EAAS3Q,GAAQ1E,cAAcS,yBACpEuV,sBAAuBxV,GAAW6U,EAAS3Q,GAAQjC,MAAMsJ,cAAcvL,IACvE0/B,yBAA0B1/B,GAAW6U,EAAS3Q,GAAQjC,MAAMiN,YAAYlP,IACxE2/B,wBAAyB3/B,GAAW6U,EAAS3Q,GAAQjC,MAAMwJ,gBAAgBzL,IAC3E8U,6BAA8B9U,GAAW6U,EAAS3Q,GAAQjC,MAAMiK,qBAAqBlM,IACrF4/B,yBAA0B5/B,GAAW6U,EAAS3Q,GAAQjC,MAAMkK,iBAAiBnM,IAC7E6/B,yBAA0B7/B,GAAW6U,EAAS3Q,GAAQjC,MAAMmK,iBAAiBpM,IAC7E8/B,gBAAiB9/B,GAAW6U,EAAS3Q,GAAQjC,MAAM8M,QAAQ/O,IAC3DiqB,wBAAyBjqB,GAAW6U,EAAS3Q,GAAQgM,OAAOC,gBAAgBnQ,IAC5EkqB,4BAA6BlqB,GAAW6U,EAAS3Q,GAAQgM,OAAOE,oBAAoBpQ,IACpF08B,gBAAiB18B,GAAW6U,EAAS3Q,GAAQjC,MAAMsL,QAAQvN,IAC3D0+B,oBAAqB1+B,GAAW6U,EAAS3Q,GAAQjC,MAAMuL,YAAYxN,IACnE48B,gBAAiB58B,GAAW6U,EAAS3Q,GAAQjC,MAAM0L,QAAQ3N,IAC3D2+B,oBAAqB3+B,GAAW6U,EAAS3Q,GAAQjC,MAAM2L,YAAY5N,IACnE+/B,uBAAwB//B,GAAW6U,EAAS3Q,GAAQjC,MAAMkM,eAAenO,IACzEggC,uBAAwBhgC,GAAW6U,EAAS3Q,GAAQjC,MAAMmM,eAAepO,IACzEigC,uBAAwBjgC,GAAW6U,EAAS3Q,GAAQjC,MAAMoM,eAAerO,IACzEkgC,oBAAqBlgC,GAAW6U,EAAS3Q,GAAQjC,MAAM2M,YAAY5O,IACnEmgC,sBAAuBngC,GAAW6U,EAAS3Q,GAAQjC,MAAM6M,cAAc9O,IACvEogC,qBAAsBpgC,GAAW6U,EAAS3Q,GAAQjC,MAAM0N,aAAa3P,OAGyB,KAAM,CACpG6d,QAASrM,IADepU,EAnmBT0gB,IACf,MAAOwF,gBAAiBA,EAAiBI,YAAaA,EAAaH,aAAcA,EAAcE,kBAAmBA,EAAmBvL,OAAQA,EAAQmoB,cAAeA,EAAepf,iBAAkBA,EAAkB0C,aAAcA,EAAc2c,SAAUA,EAAUxgC,MAAOA,EAAO8d,mBAAoBA,EAAoByhB,eAAgBA,EAAgBE,eAAgBA,EAAgB3e,UAAWA,EAAWjD,kBAAmBA,EAAmB9I,SAAUA,EAAU2qB,yBAA0BA,EAA0BvV,wBAAyBA,EAAyBC,4BAA6BA,EAA6B1U,sBAAuBA,EAAuBqqB,yBAA0BA,EAA0B/qB,6BAA8BA,EAA8B8qB,yBAA0BA,EAA0BE,gBAAiBA,EAAiBpB,oBAAqBA,EAAqBhC,gBAAiBA,EAAiBiC,oBAAqBA,EAAqB/B,gBAAiBA,EAAiBmD,uBAAwBA,EAAwBC,uBAAwBA,EAAwBC,uBAAwBA,EAAwBC,oBAAqBA,EAAqBC,sBAAuBA,EAAuBT,yBAA0BA,EAA0BU,qBAAsBA,GAAwBtiB,EAC7zCyiB,EAAcrjC,EAAMsjB,OAAO,MAC3BggB,EAAgBtjC,EAAMsjB,UACrBigB,EAAcC,GAAmBxjC,EAAM6iB,SAAS7H,EAAS,CAAEA,GAAW,CAAE,IAAIrZ,EAAsB,WAClGuc,EAAmBulB,GAAwBzjC,EAAM6iB,UAAS,GAU3D6gB,EAAoB1jC,EAAM2jC,aAAazrB,IACzC,MAAO3R,eAAgBA,GAAkBma,EAAmB3b,MAC5DgW,GAAsBpD,EAAU/U,EAAO2gC,EAAa,GAAIrrB,EAAOwI,EAAmB3b,MAAMgB,YAAaQ,EACrG,GAAA,CAAEuhB,KAAKC,UAAUnlB,GAAQ8d,EAAmB3b,MAAMgB,YAAa2a,EAAmB3b,MAAMwB,eAAgBoR,IACtGisB,EAAgB5jC,EAAM2jC,aAAazrB,IAbTA,MACxBA,EAAMqD,UAAYrD,EAAMsD,QAAUtD,EAAMG,SAAWH,EAAME,UACzDqrB,GAAqB,GAEzB5rB,aAAayrB,EAAcvN,SAC3BuN,EAAcvN,QAAUje,iBACpB2rB,GAAqB,EACxB,GAAG/jC,EAAWmkC,0CAAAA,EAOfC,CAAwB5rB,GACxB,MAAO3S,cAAeA,EAAegB,eAAgBA,GAAkBma,EAAmB3b,MACpFg/B,EAAiB,CACnBC,SAAUz+B,IAAkB7F,EAAW8F,gBAAgBoW,SACvDqoB,YAAa1+B,IAAkB7F,EAAW8F,gBAAgBqW,YAC1DjR,MAAOrF,IAAkB7F,EAAW8F,gBAAgBsW,OA/hGtC,EAACnE,EAAUO,EAAOgsB,EAAOjpB,MAC3C/C,EAAMqD,UAAYrD,EAAMG,SAAWH,EAAMsD,QAAUtD,EAAME,SAAW8rB,EAAMF,UAAYE,EAAMD,aAAeC,EAAMt5B,QACjHsN,EAAMwD,iBAEV,MAAMyoB,EAAS,CACXC,OAAQlsB,EAAMksB,OACdC,OAAQnsB,EAAMmsB,QAGZxpB,EAAYC,GAAewpB,kBAAkBH,EADzB,KAE1B,GAAID,EAAMF,SAAU,CAChB,GAAInpB,IAAcnb,EAAW6kC,WAAW9N,MAAQxb,EAAMtQ,UAClD,OAAOgN,EAAS3Q,GAAQjC,MAAMwL,cAElC,GAAIsK,IAAcnb,EAAW6kC,WAAW7N,OAASzb,EAAMtQ,UACnD,OAAOgN,EAAS3Q,GAAQjC,MAAMyL,eAElC,GAAIqK,IAAcnb,EAAW6kC,WAAW5N,IAAM1b,EAAMvQ,UAChD,OAAOiN,EAAS3Q,GAAQjC,MAAMoL,YAElC,GAAI0K,IAAcnb,EAAW6kC,WAAW3N,MAAQ3b,EAAMvQ,UAClD,OAAOiN,EAAS3Q,GAAQjC,MAAMqL,aAErC,CACD,GAAI8H,EAAMqD,WAAarD,EAAMsD,OAAQ,CACjC,GAAIX,IAAcnb,EAAW6kC,WAAW5N,IAAM1b,EAAMvQ,UAChD,OAAOiN,EAAS3Q,GAAQjC,MAAMoL,YAElC,GAAI0K,IAAcnb,EAAW6kC,WAAW3N,MAAQ3b,EAAMvQ,UAClD,OAAOiN,EAAS3Q,GAAQjC,MAAMqL,cAElC,GAAIyK,IAAcnb,EAAW6kC,WAAW9N,MAAQxb,EAAMtQ,UAClD,OAAOgN,EAAS3Q,GAAQjC,MAAMwL,cAElC,GAAIsK,IAAcnb,EAAW6kC,WAAW7N,OAASzb,EAAMtQ,UACnD,OAAOgN,EAAS3Q,GAAQjC,MAAMyL,cAErC,CACD,GAAI0zB,EAAMD,YAAa,CACnB,GAAI/rB,EAAMG,SAAWH,EAAME,QACvB,OAAIyC,IAAcnb,EAAW6kC,WAAW5N,GAC7Bhf,EAAS3Q,GAAQjC,MAAM6L,iBAE9BiK,IAAcnb,EAAW6kC,WAAW3N,KAC7Bjf,EAAS3Q,GAAQjC,MAAM4L,oBAElC,EAEJ,GAAIuH,EAAMsD,OAAQ,CACd,GAAIX,IAAcnb,EAAW6kC,WAAW5N,IAAM1b,EAAMxQ,aAChD,OAAOkN,EAAS3Q,GAAQjC,MAAMgM,eAElC,GAAI8J,IAAcnb,EAAW6kC,WAAW3N,MAAQ3b,EAAMxQ,aAClD,OAAOkN,EAAS3Q,GAAQjC,MAAMiM,eAErC,CACD,GAAI6J,IAAcnb,EAAW6kC,WAAW5N,IAAM1b,EAAMzQ,aAChD,OAAOmN,EAAS3Q,GAAQjC,MAAM6L,iBAElC,GAAIiK,IAAcnb,EAAW6kC,WAAW3N,MAAQ3b,EAAMzQ,aAClD,OAAOmN,EAAS3Q,GAAQjC,MAAM4L,eAElC,GAAIkK,IAAcnb,EAAW6kC,WAAW9N,MAAQxb,EAAM1Q,aAClD,OAAOoN,EAAS3Q,GAAQjC,MAAM+L,kBAElC,GAAI+J,IAAcnb,EAAW6kC,WAAW7N,OAASzb,EAAM1Q,aACnD,OAAOoN,EAAS3Q,GAAQjC,MAAM8L,gBAErC,CACD,GAAIqH,EAAMsD,QAAUtD,EAAMqD,SAAU,CAChC,GAAIV,IAAcnb,EAAW6kC,WAAW5N,IAAM1b,EAAMxQ,aAChD,OAAOkN,EAAS3Q,GAAQjC,MAAMgM,eAElC,GAAI8J,IAAcnb,EAAW6kC,WAAW3N,MAAQ3b,EAAMxQ,aAClD,OAAOkN,EAAS3Q,GAAQjC,MAAMiM,eAErC,CACD,GAAIkH,EAAMsD,SAAWtD,EAAMqD,SAAU,CACjC,GAAIrD,EAAMG,SAAWH,EAAME,QACvB,OAAIyC,IAAcnb,EAAW6kC,WAAW5N,GAC7Bhf,EAAS3Q,GAAQjC,MAAM6L,iBAE9BiK,IAAcnb,EAAW6kC,WAAW3N,KAC7Bjf,EAAS3Q,GAAQjC,MAAM4L,oBAElC,EAEJ,GAAIkK,IAAcnb,EAAW6kC,WAAW5N,IAAM1b,EAAMzQ,aAChD,OAAOmN,EAAS3Q,GAAQjC,MAAM6L,iBAElC,GAAIiK,IAAcnb,EAAW6kC,WAAW3N,MAAQ3b,EAAMzQ,aAClD,OAAOmN,EAAS3Q,GAAQjC,MAAM4L,eAElC,GAAIkK,IAAcnb,EAAW6kC,WAAW9N,MAAQxb,EAAM1Q,aAClD,OAAOoN,EAAS3Q,GAAQjC,MAAM+L,kBAElC,GAAI+J,IAAcnb,EAAW6kC,WAAW7N,OAASzb,EAAM1Q,aACnD,OAAOoN,EAAS3Q,GAAQjC,MAAM8L,gBAErC,CACD,GAAIqzB,EAAMt5B,MAAO,CACb,GAAIiQ,IAAcnb,EAAW6kC,WAAW3N,MAAQ3b,EAAMrQ,MAClD,OAAO+M,EAAS3Q,GAAQjC,MAAMqM,WAElC,GAAIyJ,IAAcnb,EAAW6kC,WAAW5N,IAAM1b,EAAMrQ,MAChD,OAAO+M,EAAS3Q,GAAQjC,MAAMyM,YAErC,CACD,GAAI0G,EAAMG,SAAWH,EAAME,QAAS,CAChC,GAAIyC,IAAcnb,EAAW6kC,WAAW3N,MAAQ3b,EAAMrQ,MAClD,OAAO+M,EAAS3Q,GAAQjC,MAAMqM,WAElC,GAAIyJ,IAAcnb,EAAW6kC,WAAW5N,IAAM1b,EAAMrQ,MACzC+M,EAAS3Q,GAAQjC,MAAMyM,YAErC,CACD,EA66FIgzB,CAAkB7sB,EAAUO,EAAO6rB,EAAgBx9B,EACtD,GAAG,CAAEoR,EAAU+I,EAAmB3b,MAAMQ,cAAemb,EAAmB3b,MAAMwB,iBAC3Ek+B,EAAa,CAAC53B,EAAMvK,EAAgBoe,KACtC,MAAM3X,EAAST,GAAoB8d,GAM7B/O,EALY,IAAIzX,EAAamF,MAAMyH,KAAK8K,KAAK,CAC/CvO,OAAQA,EACRzG,cAAeA,EACfuK,KAAMA,GACPu2B,GAC4B7rB,UAC/B,IAAK,MAAMmtB,KAAchhB,EACrB,IAAK,MAAOvJ,EAAOwqB,KAAkBttB,EAAa+C,UAC1CsqB,EAAW9tB,QAAU+tB,EAAc/tB,OAAStW,EAAgBskC,QAAQC,OAAOH,EAAWnsB,SAAUosB,EAAcpsB,YAC9GosB,EAAcryB,QAAUoyB,EAAWpyB,QAC/BoyB,EAAWrqB,WACXhD,EAAa8C,GAAOE,SAAWqqB,EAAWrqB,WAK1DuoB,EAAgBvrB,EAAAA,EAEdytB,EAAqB9kC,EAAM2jC,kBAC7Bc,EAAWpC,EACd,GAAG,CAAEe,EAAUf,EAAgB3hB,EAAoBoH,KAAKC,UAAUrE,KAC7DqhB,EAAwB/pB,IAC1B,MAAMgqB,EAAgB,CAAE,CACpB1oB,MAAO5c,EAAW6c,oBAAoB0oB,cACtCjgB,SAAUxN,IACN,GAAIA,EAAK0tB,SACL,OAEJ,MAAMC,EAAwBvlC,EAAa+D,QAAQrB,cAAcoU,MAAMc,EAAMkJ,GAC3B,iBAAvCykB,EAAsBthC,OAAOC,OACsB,iBAA/CqhC,EAAsBthC,OAAOC,MAAMH,QAC1CopB,EAAwBlrB,EAAgB,QAAWsjC,EAAsBthC,OAAOC,MAAMH,UAEtFopB,EAAwBoY,EAAsBthC,OAAOC,MAAMH,SAED,iBAAnDwhC,EAAsBthC,OAAOC,MAAMF,YAC1CopB,EAA4BnrB,EAAgB,QAAWsjC,EAAsBthC,OAAOC,MAAMF,cAE1FopB,EAA4BmY,EAAsBthC,OAAOC,MAAMF,cAEd,iBAAvCuhC,EAAsBthC,OAAOC,QAC3CipB,EAAwBlrB,EAA2BsjC,QAAAA,EAAsBthC,OAAOC,QAChFkpB,EAA4BnrB,EAA2BsjC,QAAAA,EAAsBthC,OAAOC,SAExFw+B,EAAyB6C,EAAAA,GAE9B,CACC7oB,MAAO5c,EAAW6c,oBAAoB6oB,gBACtCpgB,SAAUxN,IACN,MAAO/X,MAAOA,EAAOylC,SAAUA,GAAY1tB,EACvC0tB,GAGJvC,EAAyBljC,EAAAA,GAE9B,CACC6c,MAAO5c,EAAW6c,oBAAoB8oB,yBACtCrgB,SAAUxN,IACN,MAAO/X,MAAOA,GAAS+X,EACvBI,EAA6BnY,EAAMkrB,QAC/BlrB,EAAM6lC,KACN5C,EAAyBjjC,EAAM6lC,MAE/B5C,EAAyB,IAC5B,GAEN,CACCpmB,MAAO5c,EAAW6c,oBAAoBgpB,oBACtCvgB,SAAUxN,IACN,MAAO/X,MAAOA,GAAS+X,EACvBgqB,EAAoB/hC,EAAAA,GAEzB,CACC6c,MAAO5c,EAAW6c,oBAAoBipB,kBACtCxgB,SAAUxN,IACN,MAAO/X,MAAOA,GAAS+X,EACvBgoB,EAAgB//B,EAAAA,GAErB,CACC6c,MAAO5c,EAAW6c,oBAAoBkpB,oBACtCzgB,SAAUxN,IACN,MAAO/X,MAAOA,GAAS+X,EACvBiqB,EAAoBhiC,EAAAA,GAEzB,CACC6c,MAAO5c,EAAW6c,oBAAoBmpB,kBACtC1gB,SAAUxN,IACN,MAAO/X,MAAOA,GAAS+X,EACvBkoB,EAAgBjgC,EAAAA,GAErB,CACC6c,MAAO5c,EAAW6c,oBAAoBopB,uBACtC3gB,SAAUxN,IACN,MAAO/X,MAAOA,GAAS+X,EACvBqrB,EAAuBpjC,EAAAA,GAE5B,CACC6c,MAAO5c,EAAW6c,oBAAoBqpB,qBACtC5gB,SAAUxN,OACX,CACC8E,MAAO5c,EAAW6c,oBAAoBspB,uBACtC7gB,SAAUxN,IACN,MAAO/X,MAAOA,GAAS+X,EACvBsrB,EAAuBrjC,EAAAA,GAE5B,CACC6c,MAAO5c,EAAW6c,oBAAoBupB,qBACtC9gB,SAAUxN,OACX,CACC8E,MAAO5c,EAAW6c,oBAAoBwpB,uBACtC/gB,SAAUxN,IACN,MAAO/X,MAAOA,GAAS+X,EACvBurB,EAAuBtjC,EAAAA,GAE5B,CACC6c,MAAO5c,EAAW6c,oBAAoBypB,qBACtChhB,SAAUxN,OACX,CACC8E,MAAO5c,EAAW6c,oBAAoB0pB,eACtCjhB,SAAUxN,IACN,MAAOrU,MAAOA,GAASqU,EACjB0uB,EAAc,IAAK7D,EAAgBl/B,GACzC+/B,EAAqBgD,GACrBzB,EAAWyB,EAAAA,GAEhB,CACC5pB,MAAO5c,EAAW6c,oBAAoB4pB,gBACtCnhB,SAAUxN,IACN,MAAO3K,KAAMA,GAAQ2K,EACrB0rB,EAAqB,IAAKr2B,IAC1B43B,EAAW53B,EAAAA,GAEhB,CACCyP,MAAO5c,EAAW6c,oBAAoB6pB,kBACtCphB,SAAUxN,IACN,MAAOrU,MAAOA,GAASqU,EACjB0uB,EAAc7D,EAAej8B,QAAQyG,GACnB,iBAATA,GACAA,IAAS1J,IAIxB+/B,EAAqBgD,GACrBzB,EAAWyB,EAAAA,GAEhB,CACC5pB,MAAO5c,EAAW6c,oBAAoB8pB,kBACtCrhB,SAAUxN,IACN,MAAO4E,GAAIA,GAAM5E,EACXrU,EAAQvD,EAAamF,MAAMyH,KAAKsN,MAAMC,iBAAiB2J,EAAWtH,GACxEnE,GAAsBN,EAAUxU,EAAAA,GAErC,CACCmZ,MAAO5c,EAAW6c,oBAAoBG,cACtCsI,SAAUxN,IACN,MAAO4E,GAAIA,GAAM5E,EACC,iBAAP4E,GAGX9D,EAAsB,CAClBhK,MAAO,eACP7O,MAAO2c,MAGhB,CACCE,MAAO5c,EAAW6c,oBAAoBK,kBACtCoI,SAAU,KACN,MAAMhL,EAAY0J,EAAU4iB,MAAMnjC,GAASA,EAAMmP,UAAY1P,EAAMmC,MAAMwI,kBACzE,GAAIyM,EAAW,CACX,MAAMusB,GAAY,GACXp0B,YAAaA,GAAevS,EAAamF,MAAMyH,KAAKsN,MAAM0sB,oBAAoB9iB,EAAW1J,EAAU1H,QAASi0B,GACnH3D,EAAgBzwB,GAChBmG,EAAsB,CAClBhK,MAAO,kBACP7O,MAAO,IAEd,IAEN,CACC6c,MAAO5c,EAAW6c,oBAAoBO,YACtCkI,SAAUxN,IACN,MAAO4E,GAAIA,GAAM5E,EACXwC,EAAY0J,EAAU4iB,MAAMnjC,GAASA,EAAMmP,UAAY8J,IAC7D,GAAIpC,EAAW,CACX,MAAMusB,GAAY,GACXp0B,YAAaA,GAAevS,EAAamF,MAAMyH,KAAKsN,MAAM0sB,oBAAoB9iB,EAAW1J,EAAU1H,QAASi0B,GACnH3D,EAAgBzwB,GAChB2F,iBACI8qB,EAAgBzwB,EAChB,GAAA,IACJmG,EAAsB,CAClBhK,MAAO,kBACP7O,MAAO2c,GAEd,IAEN,CACCE,MAAO5c,EAAW6c,oBAAoBkqB,cACtCzhB,SAAU,KACNtK,GAAkB/C,EAAU/U,EAAAA,GAEjC,CACC0Z,MAAO5c,EAAW6c,oBAAoBmqB,UACtC1hB,SAAU,KACNrK,GAAchD,EAAU/U,EAAAA,GAE7B,CACC0Z,MAAO5c,EAAW6c,oBAAoBoqB,iBACtC3hB,SAAUxN,IACN,MAAM2C,EAAQ3C,EAAK2C,MACnB,QAAqB,IAAVA,EAEP,YADAS,GAAejD,EAAU/U,EAAOuX,GAGpC,MAAMiC,EAAK5E,EAAK4E,GAp/GZ,EAACzE,EAAU/U,EAAOwZ,KAClC,MAAO5P,KAAMA,GAAQ5J,EAAMmC,MACrByV,EAAOhO,EAAK85B,MAAMnjC,GAASA,EAAMmP,UAAY8J,IAC9C5B,GAGLvC,GAAsBN,EAAU6C,OAAMtY,GAAW,EAAA,EA++GrC0kC,CAAYjvB,EAAU/U,EAAOwZ,EAAAA,IAG/ByqB,EAAU,GAChB,IAAK,MAAMC,KAAgB9B,EAAe,CACtC,MAAM7qB,EAAQa,EAAO+J,UAAU+hB,GAC/BD,EAAQ5vB,KAAKkD,EAChB,CACD,MAAO,KACH,IAAK,MAAMA,KAAS0sB,EAChB7rB,EAAOiK,YAAY9K,EACtB,CAAA,EAGH4sB,GAAsB/rB,IACxB,MAAMgsB,EAAoB,CACtBvnC,MAAOH,OAAO8C,OAAO,CAAA,EAAI+/B,GACzB+C,UAAU,GAEdlqB,EAAOqB,QAAQ,CACXC,MAAO5c,EAAW6c,oBAAoB6oB,gBACtC5tB,KAAMwvB,IAEVhsB,EAAOqB,QAAQ,CACXC,MAAO5c,EAAW6c,oBAAoB0oB,cACtCztB,KAAMlY,OAAO8C,OAAO9C,OAAO8C,OAAO,CAAA,EAAIse,GAAqB,CACvDwkB,UAAU,OAQhB+B,GAAc/uB,IAChB,MAAO3S,cAAeA,GAAiBmb,EAAmB3b,MAC1D,GAAIQ,IAAkB7F,EAAW8F,gBAAgBC,IAC7C,OAEJ,MAAOyhC,SAAUA,EAAUC,SAAUA,EAAUtsB,UAAWA,GAAa3C,GAChEsD,OAAQA,GAAUtD,EAAMmf,SACzB+P,EAAe7hC,IAAkB7F,EAAW8F,gBAAgBoW,SAC5DyrB,EAAkB9hC,IAAkB7F,EAAW8F,gBAAgBqW,YAC/DyrB,EAAgB/hC,IAAkB7F,EAAW8F,gBAAgBsW,MAEnE,OADArE,GAAqBE,GACbkD,GACN,KAAK,EACCusB,GACA3F,EAA+B,GAAXyF,GAEpBG,GACAxE,GAAwB,EAAIsE,GAEhC,MAEF,KAAK,EACCC,GACA3F,EAA+B,GAAXyF,GAEpBG,GACAxE,EAAuBsE,GAE3B,MAEF,KAAK,EACCC,GACA5F,EAA+B,GAAX0F,GAEpBG,IACI7rB,EACAunB,GAAwB,EAAIoE,GAE5BrE,GAAwB,EAAIqE,IAGhCG,GACAtE,EAAoBkE,GAExB,MAEF,KAAK,GACCE,GACA5F,EAA+B,GAAX0F,GAEpBG,IACI7rB,EACAunB,EAAuBoE,GAEvBrE,EAAuBqE,IAG3BG,GACArE,EAAsBiE,KAK5BK,GAAYrvB,IACd,MAAO3S,cAAeA,GAAiBmb,EAAmB3b,MAC1D,GAAIQ,IAAkB7F,EAAW8F,gBAAgBC,IAC7C,OAEJ,MAAOyhC,SAAUA,EAAUC,SAAUA,EAAUtsB,UAAWA,GAAa3C,GAChEsD,OAAQA,GAAUtD,EAAMmf,SACzB+P,EAAe7hC,IAAkB7F,EAAW8F,gBAAgBoW,SAC5DyrB,EAAkB9hC,IAAkB7F,EAAW8F,gBAAgBqW,YAC/DyrB,EAAgB/hC,IAAkB7F,EAAW8F,gBAAgBsW,MAC7D0rB,EAA8B,GAAXN,EACnBO,EAAsBN,EAAW,EACjCO,EAAgBR,EAAW,EACjC,OAAQrsB,GACN,KAAK,EACCusB,GACA3F,EAAoB+F,GAEpBH,GACAxE,GAAwB,EAAI4E,GAEhC,MAEF,KAAK,EACCL,GACA3F,EAAoB+F,GAEpBH,GACAxE,EAAuB4E,GAE3B,MAEF,KAAK,EACCL,GACA5F,EAAoBgG,GAEpBH,IACI7rB,EACAunB,GAAwB,EAAI0E,GAE5B3E,GAAwB,EAAI2E,IAGhCH,GACAtE,EAAoB0E,GAExB,MAEF,KAAK,GACCN,GACA5F,EAAoBgG,GAEpBH,IACI7rB,EACAunB,EAAuB0E,GAEvB3E,EAAuB2E,IAG3BH,GACArE,EAAsByE,KAK5BC,GAAc,CAACzvB,EAAOvR,KACxB,MAAOpB,cAAeA,GAAiBmb,EAAmB3b,MAC1D,GAAsB,gBAAlBQ,EACA,OAIJw9B,EAD6B,IADF,OAATp8B,EAAgB,GAAK,GAEhBugC,EAErBU,GAAgB1vB,IAClByvB,GAAYzvB,EAAO,KAAA,EAEjB2vB,GAAiB3vB,IACnByvB,GAAYzvB,EAAO,MAAA,EAEvBlY,EAAM6kB,WAAS,KACPwe,EAAYtN,UACZsN,EAAYtN,QAAQG,iBAAiB,UAAWwN,EAAmB,CAC/DoE,SAAS,IAEbzE,EAAYtN,QAAQG,iBAAiB,QAAS0N,EAAe,CACzDkE,SAAS,KAGV,KACCzE,EAAYtN,UACZsN,EAAYtN,QAAQI,oBAAoB,UAAWuN,GACnDL,EAAYtN,QAAQI,oBAAoB,QAASyN,GACpD,IAEL,CAAE9b,KAAKC,UAAUnlB,GAAQygC,EAAYtN,QAASrV,EAAmB3b,MAAMQ,cAAemb,EAAmB3b,MAAMgB,cACnH/F,EAAM6kB,WAAS,KACX,MAAMkjB,EAAeznC,EAAgB0nC,KAAKC,UAAQ,KAC9C,GAAI5E,GAAeA,EAAYtN,QAAS,CACpC,MAAM/nB,EAAQq1B,EAAYtN,QAAQmS,YAC5Bj6B,EAASo1B,EAAYtN,QAAQoS,aACnC3F,EAAyB,CACrBx0B,MAAOA,EACPC,OAAQA,GAEf,CACJ,GAAGvO,EAAW0oC,qCAGf,OAFAL,IACAj9B,OAAOorB,iBAAiB,SAAU6R,GAC3B,KACHj9B,OAAOqrB,oBAAoB,SAAU4R,EAAAA,CAEzC,GAAA,IACJ/nC,EAAM6kB,WAAS,KACX/Z,OAAOorB,iBAAiB,SAAU4O,GAC3B,KACHh6B,OAAOqrB,oBAAoB,SAAU2O,EAAAA,IAEzC,CAAEzC,EAAgB3hB,EAAoBoH,KAAKC,UAAUrE,KACzD1jB,EAAM6kB,WAAS,KACX,GAAsB,oBAAX/Z,OACP,OAEJ,IAAI4jB,EA+BJ,OA9B0Bna,QAAe,OAAA,sBACrC,MACMijB,SADqBra,MACCzb,SACrBmE,eAAgBA,GAAkB6a,EAAmB3b,aACrDyyB,EAAO6Q,SAASC,SAASC,kBACzB/Q,EAAO6Q,SAASC,SAASE,gBACzBhR,EAAO6Q,SAASC,SAASG,yBACzBjR,EAAO6Q,SAASC,SAASI,YAC3BrF,EAAYtN,UAGjBrH,EAAQ,IAAI8I,EAAO6L,EAAYtN,SAC/BrH,EAAM9Q,IAAI,OAAO+qB,IAAI,CACjB9tB,UAAW2c,EAAOoR,gBAEtBla,EAAM9Q,IAAI,SAAS+qB,IAAI,CACnB9tB,UAAW2c,EAAOoR,gBAEtBla,EAAM9Q,IAAI,SAAS+qB,IAAI,CACnBE,QAAQ,IAERhjC,IAAmBnG,EAAW+vB,kBAAkBC,IAChDhB,EAAM+I,GAAG,MAAO8P,IAEhB7Y,EAAM+I,GAAG,QAASwP,IAEtBvY,EAAM+I,GAAG,UAAWmQ,IACpBlZ,EAAM+I,GAAG,WAAYoQ,IACxB,IAEM,KACH,IAAKnZ,EACD,OAEJ,MAAO7oB,eAAgBA,GAAkB6a,EAAmB3b,MACxDc,IAAmBnG,EAAW+vB,kBAAkBC,IAChDhB,EAAMgJ,IAAI,MAAO6P,IAEjB7Y,EAAMgJ,IAAI,QAASuP,IAEvBvY,EAAMgJ,IAAI,UAAWkQ,IACrBlZ,EAAMgJ,IAAI,WAAYmQ,GAAAA,CAE7B,GAAG,CAAExE,EAAYtN,QAASrV,EAAmB3b,MAAMc,eAAgB6a,EAAmB3b,MAAMQ,gBAC7FvF,EAAM6kB,WAAS,KACX,MAAMikB,EAAuB5wB,IACT6wB,UAAUC,cAAc9wB,EAAM+wB,QAAQ9uB,MAGrD,EAEC+uB,EAA0BhxB,IACZ6wB,UAAUC,cAAc9wB,EAAM+wB,QAAQ9uB,MAGrD,EAIL,OAFArP,OAAOorB,iBAAiB,mBAAoB4S,GAC5Ch+B,OAAOorB,iBAAiB,sBAAuBgT,GACxC,KACHp+B,OAAOqrB,oBAAoB,mBAAoB2S,GAC/Ch+B,OAAOqrB,oBAAoB,sBAAuB+S,EAAAA,CAEtD,GAAA,IACJlpC,EAAM6kB,WAAS,KACX,MAAMskB,EAAgB,GACtB,IAAK,MAAMnuB,KAAUuoB,EAAc,CAC/B,MAAM6F,EAAerE,EAAsB/pB,GAC3CmuB,EAAclyB,KAAKmyB,EACtB,CACD,MAAO,KACH,IAAK,MAAMA,KAAgBD,EACvBC,GACH,CAER,GAAG,CAAExmC,EAAMmC,MAAMwI,gBAAiBg2B,EAAa9oB,OAAQqN,KAAKC,UAAUrE,KACvE1jB,EAAM6kB,WAAS,KACX,IAAK,MAAM7J,KAAUuoB,EACjBwD,GAAoB/rB,EAExB,GAAA,CAAEuoB,EAAa9oB,OAAQiG,EAAoByhB,IAC/CniC,EAAM6kB,WAAS,KACXigB,GACA,GAAA,IACJ,MAAMuE,GAAgB,CAClBjjB,gBAAiBA,EACjBC,aAAcA,EACdE,kBAAmBA,EACnBC,YAAaA,EACb2c,cAAeA,EACfpf,iBAAkBA,EAClB0C,aAAcA,EACd2c,SAAUA,EACVpf,cAAeuf,EAAa,GAC5B+F,eA7RmBtuB,IACnB,MAAMuuB,EAAgB,IAAKhG,EAAcvoB,GACzCwoB,EAAgB+F,EAAAA,GA6RpB,OAAO3nC,EAA0B0d,QAAAA,cAAclB,GAAY,CACvDmF,IAAK8f,EACLvd,SAAU,EACVvgB,cAAemb,EAAmB3b,MAAMQ,cACxC,qBAAsB7F,EAAW8pC,oBAClC5nC,EAAe,QAAW0d,cAActB,GAAa,CACpDla,MAAO2c,EACPvC,kBAAmBA,IACnBtc,EAAe,QAAW0d,cAAc/J,GAAQoS,SAAU,CAC1DloB,MAAO4pC,IACkB,IAA1BhH,EAAe5nB,OAAe7Y,EAAe,QAAW0d,cAAc0iB,GAAqB,MAAQpgC,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,OAAA,IA0CtL,MAAMwmB,WAA0BzpC,EAAM2e,UAClCC,YAAYgC,EAAYD,GACpB9B,MAAM+B,GACN9B,KAAK4qB,QAAU9oB,EAAWxE,IAAM,UAChC0C,KAAK6B,QAAUA,EACf,MAAMgpB,EAAe7qB,KAAK8qB,eAC1B9qB,KAAK5K,MAAQA,GAAMy1B,GACnB7qB,KAAK+qB,gBACR,CACDC,qBACI,MAAMC,EAAejrB,KAAK8qB,eAC1B9qB,KAAK5K,MAAMyD,SAAS,CAChBhR,KAAM,YACN7D,QAASinC,GAEhB,CACDC,uBACQlrB,KAAKmrB,kBACLnrB,KAAKmrB,kBAEZ,CACD7qB,SACI,OAAOxd,EAAe,QAAW0d,cAAcpf,EAAWynB,SAAU,CAChEzT,MAAO4K,KAAK5K,MACZyM,QAASrM,IACV1S,UAA0B0d,cAAc4iB,GAAqB5iC,OAAO8C,OAAO,GAAI0c,KAAKR,QAC1F,CACDsrB,eACI,MAAO/8B,KAAMA,EAAM9D,OAAQA,EAAQzG,cAAeA,EAAe4nC,iBAAkBA,EAAkB9jB,gBAAiBA,EAAiB+jB,gBAAiBA,EAAiB/G,SAAUA,EAAUr+B,MAAOA,GAAS+Z,KAAKR,MAClNjW,GAAeU,EAAQqd,EAAiBgd,GACxC,MAAMgH,EAAetrB,KAAK5K,MAAQ4K,KAAK5K,MAAMm2B,gBAAanoC,EACpDooC,EAAa1qC,EAAagD,MAAM2nC,MAAMC,KAAK1rB,KAAK4qB,QAASS,GACzDM,EA1pIe,EAAC9pB,EAAS5b,KACnC,GAAK4b,EAAL,CAGA,IAAK5b,EAAO,CACR,GAAsB,oBAAX+F,OACP,OAGJ,OADuB6V,EAAQ+pB,OAAO5/B,OAAOyN,SAASoyB,SAEzD,CACD,OAAOhqB,EAAQ+pB,OAAO3lC,EARrB,CAQqBA,EA+oIG6lC,CAAqB9rB,KAAK6B,QAAS5b,GAExD,OADcnF,EAAagD,MAAM2U,QAAQ1K,EAAMvK,EAAe8jB,EAAiBgkB,EAAcE,EAAYJ,EAAkBO,EAAcrH,EAE5I,CACDyG,iBACS/qB,KAAK5K,OAGkB,oBAAjB22B,cAGN/rB,KAAKR,MAAM6rB,kBAGhBrrB,KAAKmrB,iBAAmBnrB,KAAK5K,MAAM6Q,WAAS,KACxC,MAAMniB,EAAQkc,KAAK5K,MAAMm2B,WACnBS,EAAYhjB,KAAKC,UAAUnlB,GACjCioC,aAAaE,QAAQ,eAAiBjsB,KAAK4qB,QAASoB,EACvD,IACJ,EAGLrB,GAAkBuB,YAAchpC,EAEhC,MAAMipC,GAAenpC,EAAgB,QAAWuc,GAAG;wBAC3BuC,IACpB,MAAOsqB,UAAWA,EAAWC,SAAUA,GAAYvqB,EACnD,MAAiB,SAAbuqB,EACO,OAEJD,EAAY,IAAMC,CAAAA;;sBAGPvqB,IAClB,MAAOsqB,UAAWA,GAAatqB,EAC/B,MAAkB,MAAdsqB,EACO,MAEJ,QAAA;;;;;;;;EAiRLE,GAAqB,CAAC3kB,EAAcL,EAAiBilB,EAAYC,EAAalI,EAAW,YAC3F,GAAIkI,GAAmG,gBAAnF7kB,eAA4DA,EAAa8kB,MAAwB,CACjH,MAAMjkB,EAAQgkB,GAAe7kB,EAC7B,IAAKa,EACD,MAAO,IAAM,IAAM1lB,UAA0B0d,cAAc1d,UAA0BqhB,SAAU,MAGnG,OADoBuoB,GAAkBlkB,EAAOlB,EAAiBgd,EAEjE,CACD,IAAK3c,EAAc,CACf,MAAMglB,EAAgBJ,EAAW/jB,MAAM,aAAc,SACrD,GAAImkB,GAAwC,UAAvBA,EAAcF,KAAkB,CAEjD,OADuBH,GAAmBK,EAAerlB,EAAiBilB,OAAYnpC,EAAWkhC,EAEpG,CACD,MAAO,IAAM,IAAMxhC,UAA0B0d,cAAc1d,UAA0BqhB,SAAU,KAClG,CACD,MAAOyoB,SAAUA,EAAU7+B,KAAMA,EAAM9D,OAAQA,EAAQ4iC,OAAQA,EAAQtpC,qBAAsBA,EAAsBupC,QAASA,EAASC,SAAUA,GAAYplB,EAAajP,KACpKq0B,GACAA,OAAS3pC,GAEb,MAAM4pC,EAAsB,CACxBrsC,MAAOgnB,EAAaa,MAAM7nB,MAC1B2nB,WAAYX,EAAaa,MAAMF,WAC/BC,MAAOZ,EAAaa,MAAMD,OAE9B,IAAI0kB,EAOJ,OANIhmB,GAAkB2lB,KAClBK,EAAsBL,EAClBK,IACAA,EAAoBC,YAAc,yBAGtCN,IAAYK,GAAwBl/B,GAAS9D,GAAW4iC,EAQxD9+B,EACO,KACH,MAAMmO,EAAS,IAAIrZ,EAAsB,QACnCoD,EAAQ0hB,EAAajP,KAAK/X,MAC1BwsC,EAAoBrqC,EAA0B0d,QAAAA,cAAcmqB,GAAmB,CACjF58B,KAAMA,EACNuZ,gBAAiBA,EACjB9jB,cAAeD,EACf2Y,OAAQA,EACRyL,aAAcA,EACd2c,SAAUA,EACVr+B,MAAOA,IAOX,MALoB,IAAMnD,EAAe,QAAW0d,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAM8oB,GAAuBnqC,EAAe,QAAW0d,cAAcysB,EAAqB,CAC5Lh5B,OAAQ+4B,EACR9wB,OAAQA,EACR2wB,OAAQC,EAAU,CAAEK,QAAsB/pC,KACzC0pC,GAAWhqC,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMgpB,GAC3FC,EA3MM,EAACzlB,EAAc2c,EAAW,YAC/C,IAAI+I,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACxB,GAA0B,UAAtB/lB,EAAa8kB,KACb,MAAO,IAAM,IAAM3pC,UAA0B0d,cAAc1d,UAA0BqhB,SAAU,MAEnG,MAAMT,EAAW,OACXC,EAAO2gB,GACN9b,MAAOA,EAAO9P,KAAMmL,GAAQ8D,GAC5BW,WAAYA,EAAYC,MAAOA,GAASC,EACzCwkB,EAAsB,CACxBrsC,MAAO6nB,EAAM7nB,MACb2nB,WAAYA,EACZC,MAAOA,IAEJqkB,SAAUA,EAAU3iC,OAAQA,EAAQ4iC,OAAQA,EAAQC,QAASA,GAAWnlB,EAAajP,KACtFi1B,GAAkD,QAA1BN,EAAKxpB,EAAK+pB,kBAAoC,IAAZP,OAAY,EAAaA,EAAGjB,YAAc,IACpGyB,GAAiD,QAA1BP,EAAKzpB,EAAK+pB,kBAAoC,IAAZN,OAAY,EAAaA,EAAGjB,WAAa,YACxG,IAAIyB,EAAiB,IAAMhrC,UAA0B0d,cAAc1d,UAA0BqhB,SAAU,MACnG8C,GAAkB2lB,KAClBkB,EAAiBlB,GAErB,IAAImB,EAAe,IAAMjrC,UAA0B0d,cAAc1d,UAA0BqhB,SAAU,MACrG,MAAM6pB,EAAc,GACpB,GAAInB,EACA,IAAK,MAAM5mC,KAAS4mC,EAAQ,CACxB,MAAM5iC,EAAS,GACT8D,EAAO,GACb,GAAI9H,EAAMgE,OACN,IAAK,MAAM5F,KAAS4B,EAAMgE,OAAQ,CAC9B,MAAM4N,EAAYhO,GAA4BxF,IACvC6iB,UAAWA,GAAarP,EAOzBo2B,EADgB,CAAEvqB,EAAUC,EALjBE,EAAKljB,QAAUC,EAAWstC,gCAAkCttC,EAAWutC,0BAA4BrtC,EAAastC,UAAUC,iBAAiBxqB,EAAKljB,OAC/IsF,EAAMtF,QAAUC,EAAW0tC,iCAAmC1tC,EAAW2tC,2BAA6BztC,EAAastC,UAAUC,iBAAiBpoC,EAAMtF,OACjJC,EAAW4tC,8BACZ5tC,EAAW6tC,6BACb3tC,EAAastC,UAAUC,iBAAiBx2B,EAAUlX,QAErC+tC,KAAK9tC,EAAW+tC,wBACzCxlB,EAAc,CAChBjC,UAAWA,EACXpP,MAAOm2B,GAEXhkC,EAAOkO,KAAKgR,GACZpb,EAAKoK,KAAK81B,EACb,CAEL,GAAIhoC,EAAM2oC,UACN,IAAK,MAAMC,KAAY5oC,EAAM2oC,UACzB,GAAIC,EAAS5kC,OACT,IAAK,MAAM5F,KAASwqC,EAAS5kC,OAAQ,CACjC,MAAM4N,EAAYhO,GAA4BxF,IACvC6iB,UAAWA,GAAarP,EAOzBo2B,EADgB,CAAEvqB,EAAUC,EALjBE,EAAKljB,QAAUC,EAAWstC,gCAAkCttC,EAAWutC,0BAA4BrtC,EAAastC,UAAUC,iBAAiBxqB,EAAKljB,OAC/IsF,EAAMtF,QAAUC,EAAW0tC,iCAAmC1tC,EAAW2tC,2BAA6BztC,EAAastC,UAAUC,iBAAiBpoC,EAAMtF,OACjJkuC,EAASluC,QAAUC,EAAWkuC,oCAAsCluC,EAAW4tC,8BAAgC1tC,EAAastC,UAAUC,iBAAiBQ,EAASluC,OACjKC,EAAW6tC,6BACb3tC,EAAastC,UAAUC,iBAAiBx2B,EAAUlX,QAErC+tC,KAAK9tC,EAAW+tC,wBACzCxlB,EAAc,CAChBjC,UAAWA,EACXpP,MAAOm2B,GAEXhkC,EAAOkO,KAAKgR,GACZpb,EAAKoK,KAAK81B,EACb,CAIb,MAAMc,EAAwB,IAAI/kC,GAAsB,GAAI,mBACtDglC,EAAMlsC,EAA0B0d,QAAAA,cAAcmqB,GAAmB,CACnE1tB,IAAKzb,EAAgBytC,KAAKC,WAC1B5xB,GAAIuG,EAAKljB,MACTsJ,OAAQA,EACR8D,KAAMA,EACNvK,cAAeyC,EAAMzC,cACrB8jB,gBAAiBynB,EACjBzK,SAAUA,IAEd0J,EAAY71B,KAAK62B,EACpB,CAEL,GAAI/kC,EAAQ,CACR,MAAMklC,EAAe,GACfphC,EAAO,GACb,IAAK,MAAM1J,KAAS4F,EAAQ,CACxB,MAAM4N,EAAYhO,GAA4BxF,IACvC6iB,UAAWA,GAAarP,EAOzBo2B,EADgB,CAAEvqB,EAAUC,EALjBE,EAAKljB,QAAUC,EAAWstC,gCAAkCttC,EAAWutC,0BAA4BrtC,EAAastC,UAAUC,iBAAiBxqB,EAAKljB,OAC/IC,EAAW2tC,2BACR3tC,EAAW4tC,8BACZ5tC,EAAW6tC,6BACb3tC,EAAastC,UAAUC,iBAAiBx2B,EAAUlX,QAErC+tC,KAAK9tC,EAAW+tC,wBACzCxlB,EAAc,CAChBjC,UAAWA,EACXpP,MAAOm2B,GAEXkB,EAAah3B,KAAKgR,GACbtF,EAAK9V,KAGF8V,EAAK9V,KAAK3G,SAASyQ,EAAUlX,QAC7BoN,EAAKoK,KAAK81B,GAHdlgC,EAAKoK,KAAK81B,EAMjB,CACD,MAAMe,EAAMlsC,EAA0B0d,QAAAA,cAAcmqB,GAAmB,CACnE1tB,IAAKzb,EAAgBytC,KAAKC,WAC1B5xB,GAAIuG,EAAKljB,MACTsJ,OAAQklC,EACRphC,KAAMA,EACNvK,cAAeqgB,EAAKtgB,qBACpB+gC,SAAUA,IAEd0J,EAAY71B,KAAK62B,EACpB,CACD,IAAII,EACAC,EAgBJ,OAfIpoB,GAA6C,QAA1BsmB,EAAK1pB,EAAK+pB,kBAAoC,IAAZL,OAAY,EAAaA,EAAG+B,UACjFF,EAA8C,QAA1B5B,EAAK3pB,EAAK+pB,kBAAoC,IAAZJ,OAAY,EAAaA,EAAG8B,QAElFroB,GAA6C,QAA1BwmB,EAAK5pB,EAAK+pB,kBAAoC,IAAZH,OAAY,EAAaA,EAAG8B,UACjFF,EAA8C,QAA1B3B,EAAK7pB,EAAK+pB,kBAAoC,IAAZF,OAAY,EAAaA,EAAG6B,QAEtFxB,EAAe,IAAMjrC,EAA0B0d,QAAAA,cAAc2rB,GAAc,CACvEC,UAAWuB,EACXtB,SAAUwB,EACV,qBAAsBjtC,EAAW4uC,0BAClCJ,GAAoBtsC,EAA0B0d,QAAAA,cAAc4uB,EAAkB,CAC7En7B,OAAQ+4B,IACRgB,EAAaqB,GAAoBvsC,EAA0B0d,QAAAA,cAAc6uB,EAAkB,CAC3Fp7B,OAAQ+4B,KAEL,IACiB,IAAMlqC,EAAe,QAAW0d,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAMyoB,GAAY9pC,EAAe,QAAW0d,cAAcstB,EAAgB,CAC5KjB,OAAQC,EAAUkB,OAAc5qC,EAChC6Q,OAAQ+4B,KACPH,GAAU5iC,KAAY6iC,GAAWhqC,EAAe,QAAW0d,cAAcutB,EAAc,MAC1E,EAkEf0B,CAAiB9nB,GA5Bb,IACiB,IAAM7kB,EAAe,QAAW0d,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAM8oB,GAAuBnqC,EAAe,QAAW0d,cAAcysB,EAAqB,CAC5Lh5B,OAAQ+4B,IA0BIrlB,EAkDtB+kB,GAAoB,CAACgD,EAAYpoB,EAAiBgd,EAAW,YAC/D,GAAIoL,EAAWlnB,MAAMD,MAAMonB,KAAM,CAC7B,MAAMA,EAAOD,EAAWlnB,MAAMD,MAAMonB,KAAK9d,cAEzC,GAD4B,SAAT8d,GAA4B,MAATA,EACtB,CACZ,MAAMC,EAActoB,EAAgBxI,IAAI4wB,EAAWlnB,MAAM7nB,OACzD,GAAIivC,EAAa,CACb,MAAMC,EAAOD,EAAY1oB,UACzB,GAAoB,mBAAT2oB,EACP,MAAO,IAAM,IAAM/sC,UAA0B0d,cAAc1d,UAA0BqhB,SAAU,MAMnG,MAJoB,IACI,IAAMrhB,EAAe,QAAW0d,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAMrhB,EAA0B0d,QAAAA,cAAcqvB,EAAM,MAIjK,CACJ,CACJ,CACD,MAAOtsC,qBAAsBA,GAAwBmsC,aAA2C,EAAaA,EAAWh3B,KAUxH,MAToB,IACI,IAAM5V,EAAe,QAAW0d,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAMrhB,EAA0B0d,QAAAA,cAAcmqB,GAAmB,CACnK58B,KAAM,CAAE2hC,EAAWlnB,MAAM7nB,OACzB2mB,gBAAiBA,EACjB9jB,cAAeD,EACf+gC,SAAUA,IAIXwL,EAGLC,GAAkB/sC,EAAgB,QAAWuc,GAAG;;;EAKhDywB,GAAsBluB,IACxB,MAAOmuB,OAAQA,EAAQhmC,OAAQA,EAAQ2iC,SAAUA,EAAUsD,MAAOA,EAAO5L,SAAUA,EAAU6L,YAAaA,EAAajwB,OAAQkwB,EAAeriC,KAAMsiC,EAAqBC,gBAAiBA,EAAiBC,aAAcC,GAAwB1uB,EAC3OyuB,EAAeC,GAAwB,aACvCrB,EArUiB,EAACc,EAAQhmC,KAChC,MAAMklC,EAAe,GACrB,IAAK,MAAMr3B,KAASm4B,EAAQ,CACxB,GAAIn4B,EAAM7N,OACN,IAAK,MAAM5F,KAASyT,EAAM7N,OAAQ,CAC9B,MAAM4N,EAAYhO,GAA4BxF,GAExC8kB,EAAc,CAChBrR,MAFeD,EAAU44B,KAAO54B,EAAU44B,KAAO54B,EAAUlX,MAAMud,WAAW,KAAOrG,EAAUlX,MAAQmX,EAAMnX,MAAQ,IAAMkX,EAAUlX,MAGnIumB,UAAWrP,EAAUqP,WAEzBioB,EAAah3B,KAAKgR,EACrB,CAEDrR,EAAM+0B,MACb,CACD,GAAI5iC,EACA,IAAK,MAAM5F,KAAS4F,EAAQ,CACxB,MAAM4N,EAAYhO,GAA4BxF,GACxC8kB,EAAc,CAChBrR,MAAOD,EAAUlX,MACjBumB,UAAWrP,EAAUqP,WAEzBioB,EAAah3B,KAAKgR,EACrB,CAEL,OAAOgmB,CAAAA,EA2ScuB,CAAmBT,EAAQhmC,GAC1C0mC,EAAezvC,EAAMsjB,OAAO,MAC5BuqB,EAAwB7tC,EAAMsjB,OAAO,IAAIxa,GAAsBmlC,EAAc7K,IAC7EsM,EAAmB1vC,EAAMsjB,OAAO,IAAIra,GAAmB,CACzD8lC,OAAQA,EACRY,YAAa5mC,GACdq6B,IACGwM,EAAUhvC,EAAqBivC,cAC9BC,EAAaC,GAAkB/vC,EAAM6iB,SA/FdqsB,IAC1BA,EACOA,EAAcvsB,KAEH,oBAAX7X,OACAA,OAAOyN,SAASoyB,SAAW7/B,OAAOyN,SAASy3B,OAE/C,IAwF8CC,CAA0Bf,KACxEzoB,EAAcypB,GAAmBlwC,EAAM6iB,SAAS6sB,EAAiB3Z,QAAQzO,MAAMwoB,EAAa,WAC5F5D,EAAaiE,GAAkBnwC,EAAM6iB,SAASuoB,GAAmB3kB,EAAconB,EAAsB9X,QAAS2Z,EAAiB3Z,QAASmZ,GAAiBA,EAAc5D,YAAcoE,EAAiB3Z,QAAQzO,MAAM4nB,EAAc5D,YAAa,cAAWppC,EAAWkhC,IAUtQgN,EAAiBl4B,IACnB,IAAI43B,EACA53B,GAASA,EAAMm4B,QAAUn4B,EAAMm4B,OAAO1tB,OAASmtB,IAC/CA,EAAc53B,EAAMm4B,OAAO1tB,MAE3BysB,GAAmBD,IAAwBW,IAC3CA,EAAcX,GAElB,MAAMxE,EAAW7/B,OAAOyN,SAASoyB,SAC5BmF,IACDA,EAAcnF,EAAW7/B,OAAOyN,SAASy3B,QAE7CD,EAAeD,GArBD,MACd,IAAKL,EAAa1Z,UAA2B,IAAhBkZ,EACzB,OAEJ,MAAMqB,OAAkC,IAAhBrB,IAA+C,IAAhBA,GAAwC,WAAhBA,EAA2B,SAAW,OACrHQ,EAAa1Z,QAAQwa,eAAe,CAChCD,SAAUA,KAgBdra,EAAAA,EAgDJ,IAAIua,EA9CJxwC,EAAM6kB,WAAS,KACX/Z,OAAOorB,iBAAiB,WAAYka,GACpCtlC,OAAOorB,iBAAiBx2B,EAAW+wC,+BAAgCL,GAC5D,KACHtlC,OAAOqrB,oBAAoB,WAAYia,GACvCtlC,OAAOqrB,oBAAoBz2B,EAAW+wC,+BAAgCL,EAAAA,IAE1E,IACJpwC,EAAM6kB,WAAS,KACX,IAAK+qB,EACD,OAECR,GACG72B,SAASoyB,WAAamF,GACtBY,QAAQC,UAAU,KAAM,GAAIb,GAGpC,IAAIrpB,EAAeipB,EAAiB3Z,QAAQzO,MAAMwoB,EAAa,SAC/D,GAAIrpB,GAAsC,eAAtBA,EAAa8kB,KAAuB,CACpD,MAAMqD,EAAcpD,GAAkB/kB,EAAconB,EAAsB9X,QAASqN,GAGnF,OAFA8M,EAAgBzpB,QAChB0pB,EAAevB,EAElB,CACInoB,IACDA,EAAeipB,EAAiB3Z,QAAQzO,MAAM+nB,EAAc,UAEhEa,EAAgBzpB,GAChB0pB,EAAe/E,GAAmB3kB,EAAconB,EAAsB9X,QAAS2Z,EAAiB3Z,aAAS7zB,EAAWkhC,GACvH,GAAG,CAAEwM,EAASE,IACf9vC,EAAM6kB,WAAS,KACX,IAAK4B,EACD,OAEJ,GAA0B,UAAtBA,EAAa8kB,KACb,OAEJ,MAAM5oB,EAAO8D,EAAaa,MAAM7nB,MAChCa,EAAgBswC,QAAQC,UAAUluB,EAAMjjB,EAAWoxC,uBACnD,MAAMC,EAAsB,IAAIC,YAAYtxC,EAAWuxC,8BAA+B,CAClFZ,OAAQ,CACJ1tB,KAAMA,KAGd7X,OAAOomC,cAAcH,EACxB,GAAG,CAAE3B,EAAiB3oB,IAEnBV,GAAkB2lB,KAClB8E,EAAuB9E,EACnB8E,IACAA,EAAqBxE,YAAc,yBAG3C,IAAImF,EAAoB,EAAE92B,SAAUA,KAAczY,UAA0B0d,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAM5I,GAOpI,OANI0L,GAAkBipB,KAClBmC,EAAoBnC,EAChBmC,IACAA,EAAkBnF,YAAc,sBAGjCpqC,EAA0B0d,QAAAA,cAAc1d,EAAe,QAAWqhB,SAAU,KAAMrhB,EAA0B0d,QAAAA,cAAcuvB,GAAiB,CAC9ItrB,IAAKksB,IACLe,GAAwB5uC,EAA0B0d,QAAAA,cAAckxB,EAAsB,CACtF/pB,aAAcA,IACd7kB,EAAe,QAAW0d,cAAc6xB,EAAmB,CAC3D1qB,aAAcA,GACf7kB,EAAe,QAAW0d,cAAc4sB,EAAa,OAAA,EAGtDkF,GAAqBxwB,IACvB,MAAO+B,KAAMA,EAAM2oB,YAAaA,EAAayD,OAAQA,EAAQhmC,OAAQA,EAAQ2iC,SAAUA,EAAUsD,MAAOA,EAAOxsB,SAAU6uB,EAAkBjO,SAAUkO,EAAkBC,QAASA,EAASC,aAAcC,EAAsBC,gBAAiBC,GAA2B/wB,EACnQ4B,EAAW6uB,GAAoB,OAC/BjO,EAAWkO,GAAoB,SACrC,OAAO1vC,EAA0B0d,QAAAA,cAAcwvB,GAAqB,CAChEC,OAAQA,EACRhmC,OAAQA,EACR2iC,SAAUA,EACVsD,MAAOA,EACPhwB,OAAQ,CACJ2D,KAAMA,EACN2oB,YAAaA,GAEjB9oB,SAAUA,EACV4gB,SAAUA,KAIlB,MAAMwO,WAAuB5xC,EAAM2e,UAC/BC,YAAYgC,GACR/B,MAAM+B,GACN9B,KAAK8B,WAAaA,CACrB,CACDxB,SACI,MAAOyyB,UAAWA,EAAWx3B,SAAUA,GAAYyE,KAAK8B,WACxD,OAAOhf,EAAe,QAAW0d,cAActd,EAAc2lB,SAAU,CACnEloB,MAAOoyC,GACRx3B,EACN,EAGLu3B,GAAe5F,YAAc,iBAE7B,MAEM8F,GAAyB,CAC3BjkC,EAAG,EACHC,EAAG,GAGDikC,GAAenxB,IACjB,MAAOoxB,UAAWA,EAAWC,OAAQA,EAAQ53B,SAAUA,GAAYuG,EAC7DsxB,EAAStxC,EAAqBuxC,UAAUH,EAAWC,GACzD,OAAO/wC,EAASkxC,aAAa/3B,EAAU63B,EAAAA,EAGrCG,GAA2BvwC,EAAgB,QAAWuc,GAAG;;;;;;WAMpD,EAAE9L,gBAAiBA,KACTA,EAAgBzE,EACf;YAEV,EAAEyE,gBAAiBA,KACVA,EAAgB1E,EAAI,EACnB;wBAEE,EAAE/J,MAAOA,KAAWA,EAAMumB;kBAChC,EAAEvmB,MAAOA,KAAWA,EAAMkc;EAuCtCsyB,GAA8BpyC,EAAWsgB,SAPhB5d,IAAU,CACrC6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpDsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,OAG9B+U,KAAe,IAEyD,KAAM,CAC5GgJ,QAASrM,IADuBpU,EApCT0gB,IACvB,MAAO2xB,WAAYA,EAAYhgC,gBAAiBA,EAAiBigC,iBAAkBA,EAAkBC,eAAgBA,EAAgBC,eAAgBA,EAAgBjyB,kBAAmBA,GAAqBG,EACvM+xB,EAA0B,CAC5B9kC,EAAG0E,EAAgB1E,GAAK4kC,QAAuDA,EAAiB,GAChG3kC,EAAGyE,EAAgBzE,GAAK4kC,QAAuDA,EAAiB,IAE9F/xB,EAAU3gB,EAAM8jB,WAAWvO,IACjC,IAAKoL,EACD,OAAO/e,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEvF,MAAOmD,gBAAiBA,GAAmBzF,EACrCiG,EAAiBre,GAAmB6d,GAC1C,IAAKQ,EACD,OAAOhlB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEvF,MAAM9f,EAAQyjB,EAAehJ,IAAI20B,GACjC,IAAKpvC,EACD,OAAOvB,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEvF,MAAMtE,EAAY6zB,QAA2DA,EAAmBrvC,EAAM6iB,UACtG,MAAyB,mBAAdrH,EACA/c,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEhFrhB,EAA0B0d,QAAAA,cAAc+yB,GAA0B,CACrEvuC,MAAO2c,EACPlO,gBAAiBogC,GAClB/wC,EAAe,QAAW0d,cAAcX,EAAW,MAAA,IAcpDi0B,GAAmB9wC,EAAgB,QAAWse,CAAC;;;;;;;aAOxC,EAAEtc,MAAOA,KAAWA,EAAM+1B;;;iBAGtB,EAAE/1B,MAAOA,KAAWA,EAAMmc;;;;oBAIvB,EAAE4yB,UAAWA,EAAWC,OAAQA,KAC3CD,EAME,GALCC,GAGG;;EA2STC,GAAsB7yC,EAAWsgB,SAfR5d,IAAU,CACrC8gB,UAAWlc,GAAUzC,MAAMwH,QAAQ3J,GACnCowC,qBAAsBxrC,GAAUzC,MAAMuI,mBAAmB1K,GACzD6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpD8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,GAC7D+gB,cAAenc,GAAUzC,MAAM+H,YAAYlK,OAGb+U,IAAa,CAC3CA,SAAUA,EACVirB,gBAAiB9/B,GAAW6U,EAAS3Q,GAAQjC,MAAM8M,QAAQ/O,IAC3DwV,sBAAuBxV,GAAW6U,EAAS3Q,GAAQjC,MAAMsJ,cAAcvL,IACvEmwC,mCAAoCnwC,GAAW6U,EAAS3Q,GAAQjC,MAAMsN,2BAA2BvP,OAGH,KAAM,CACpG6d,QAASrM,IADepU,EApST0gB,IACf,MAAMD,EAAU3gB,EAAM8jB,WAAWvO,IACjC,IAAKoL,EACD,OAAO/e,EAA0B0d,QAAAA,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAMrC,EAAWvG,UAExG,MAAO+oB,SAAUA,EAAUhd,gBAAiBA,EAAiBpC,cAAeA,GAAiBrD,EACvFiG,EAAiBre,GAAmB6d,GAC1C,IAAKQ,EACD,OAAOhlB,EAA0B0d,QAAAA,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAMrC,EAAWvG,UAExG,MAAOA,SAAUA,EAAUzD,MAAO27B,EAAYM,UAAWK,EAAYJ,OAAQK,EAASjyB,QAASA,EAASE,MAAOA,EAAOgyB,UAAWA,EAAWC,QAASA,EAASb,iBAAkBA,EAAkBc,cAAeA,EAAeC,eAAgBA,EAAgBd,eAAgBA,EAAgBC,eAAgBA,EAAgBhvB,UAAWA,EAAWsvB,qBAAsBA,EAAsBvyB,kBAAmBA,EAAmBC,mBAAoBA,EAAoBiD,cAAeA,EAAehM,SAAUA,EAAUirB,gBAAiBA,EAAiBtqB,sBAAuBA,EAAuB26B,mCAAoCA,GAAsCryB,EACtpBV,EAAgBQ,EAAmB1d,SAASG,MAAMC,SAASF,KAC3DswC,EAAoBF,GAAiB5zC,EAAW+zC,kDAChDC,EAAuBH,GAAkB7zC,EAAWi0C,mDACpDC,EAAqBzqC,GAAoBopC,GACzCsB,EAAqB3qC,GAAa0qC,EAAoBlzB,EAAmBozB,QAAQtxB,SAAU4gB,GAAY1iB,EAAmBozB,QAAQrxB,MAClIqwB,EAASK,QAAyCA,EAAUzzC,EAAWq0C,yCACvElB,EAAYK,SAA+CA,EAC3Dc,EAAch0C,EAAMsjB,OAAO,MAC3B2wB,EAAiBj0C,EAAMsjB,OAAO,MAC9B4wB,EAAkBl0C,EAAMsjB,OAAO,OAC9B9D,EAAWiF,GAAgBzkB,EAAM6iB,UAAS,IAC1CsxB,EAAaC,GAAkBp0C,EAAM6iB,UAAS,IAC9CwxB,EAAUC,GAAet0C,EAAM6iB,UAAS,IACxCmF,EAAeusB,GAAoBv0C,EAAM6iB,SAAS,KAClD3J,EAAes7B,GAAoBx0C,EAAM6iB,SAASpa,GAAyBurC,EAAYje,WACvFxjB,GAAiBkiC,IAAsBz0C,EAAM6iB,SAASivB,IACvD4C,GAA2B,KAC7B,MAAMnF,EAAOyE,EAAYje,QACzB,IAAKwZ,EACD,OAAOjwC,OAAO8C,OAAO,CAAE,EAAE0vC,IAE7B,IAAI6C,EAAa,EACbC,EAAc,EACdC,GAAY,EACZhhB,EAAU0b,EACVuF,GAAY,EACZC,EAAM,EACNte,EAAO,EACX,KAAOqe,GAmBH,GAlBkD,WAA9ChqC,OAAOkqC,iBAAiBnhB,GAASohB,UAA0BJ,IAC3DF,GAAc9gB,EAAQqhB,UACtBN,GAAe/gB,EAAQshB,WACvBN,GAAY,GAEkC,aAA9C/pC,OAAOkqC,iBAAiBnhB,GAASohB,WACjCF,GAAOJ,EACPle,GAAQme,EACRD,EAAa,EACbC,EAAc,EACdC,GAAY,GAEZhhB,EAAQuhB,aACR3e,IAAS5C,EAAQuhB,YAEjBvhB,EAAQoC,YACR8e,IAAQlhB,EAAQoC,WAEhBpC,EAAQwhB,cAAe,CAEF,gBADAxhB,EAAQwhB,cAAcC,QAAQC,eAE/CT,GAAY,GAEhBjhB,EAAUA,EAAQwhB,aACf,MACHP,GAAY,EAGpB,MAAMU,EAAsBt1B,EAAgB,GAAK,EAGjD,MAAO,CACHrS,EAHM4oB,EAAO8Y,EAAKrH,YAIlBp6B,EAHMinC,EAAMS,IAgBdC,GAAiC70C,EAAqBgkB,2BAV9B,MAC1B,MAAM8wB,EAAqBhB,KAK3BzB,EAJgB,CACZ3gC,QAAS0V,EACTzV,gBAAiBmjC,IAGrB,MAAMvjC,EAAcvS,EAAamF,MAAMyH,KAAKsN,MAAM67B,oBAAoBr1C,EAAgBskC,QAAQgR,MAAMlyB,GAAYxK,EAAe8O,EAAe1nB,EAAgBskC,QAAQgR,MAAMF,IAC5K9S,EAAgBzwB,EAAAA,EAGhB0jC,EACH,GAAGn2C,EAAW0oC,qCAeT0N,GAAcvP,IAChB,MAAOp0B,YAAaA,EAAa4jC,aAAcA,GAAgBn2C,EAAamF,MAAMyH,KAAKsN,MAAM0sB,oBAAoBlmC,EAAgBskC,QAAQgR,MAAMlyB,GAAYsE,EAAeue,GAI1K,OAHA3D,EAAgBzwB,GAChBmiC,GAAapxC,IAASA,IACtBkxC,GAAe,GACR,CACH2B,aAAcA,IAOhBC,GAAwB,CAAC99B,EAAO69B,KAC7BA,IAGD1B,IAGJ/7B,EAAsB,CAClBhK,MAAO,eACP7O,MAAO,KAEXwY,GAAsBN,EAAUo+B,EAAc79B,IAAAA,EAE5C+9B,GAAwB/9B,IAC1B,GAAIA,EAAMsD,QACF64B,GAAYrsB,EADpB,CAEQ,MAAM7kB,EAAQvD,EAAamF,MAAMyH,KAAKsN,MAAMC,iBAAiB2J,EAAWsE,GACxE/P,GAAsBN,EAAUxU,EAAO+U,EAG9C,MACIm8B,GAAarsB,EAzBK9P,KACvB,MAAO69B,aAAcA,GAAgBD,KACrCE,GAAsB99B,EAAO69B,EAAAA,EA0BzBG,CAAmBh+B,GAnDAA,KACvB,IAAKgB,IAAkB26B,EACnB,OAEJ,MAAOj9B,MAAOA,GAASi9B,EACjBthC,EAAkBmiC,MACjB1sB,cAAeA,EAAe7V,YAAaA,EAAagkC,iBAAkBA,GAAoBv2C,EAAamF,MAAMyH,KAAKsN,MAAMs8B,uBAAuBx/B,EAAOsC,EAAe3G,EAAiBjS,EAAgBskC,QAAQgR,MAAMlyB,GAAYkD,EAAexP,SAAUsJ,EAAoB0iB,GACpRpb,IACAguB,GAAsB99B,EAAOi+B,GAC7BvT,EAAgBzwB,GAChBmiC,GAAY,GACZC,EAAiBvsB,GACpB,EAqCGquB,CAAmBn+B,EAGtB,EAECo+B,GAAc,KACZtC,EAAYje,SACZie,EAAYje,QAAQwgB,MACvB,EAQCpW,GAAcngC,EAAM2jC,aAAazrB,IACnCA,EAAMwD,sBACUxZ,IAAZgf,GACAA,EAAQhJ,GAEZ+9B,GAAsB/9B,GACtBo+B,IACH,GAAG,CAAEp9B,EAAe4O,KAAKC,UAAUrE,GAAYswB,EAAYje,UA2F5D,OAlFA/1B,EAAM6kB,WAAS,KACX,MAAM3L,EAAgBzQ,GAAyBurC,EAAYje,SAC3Dye,EAAiBt7B,GACjB,MAAM3G,EAAkBmiC,KACxBD,GAAmBliC,EACnB,GAAA,IACJvS,EAAM6kB,WAAS,KACPwvB,GACAoB,IAEP,GAAG,CAAEpB,EAAUvsB,KAAKC,UAAUpE,GAAgBmE,KAAKC,UAAUrE,KAC9D1jB,EAAM6kB,WAAS,KACX,GAAKwuB,EAiBL,OAdI7zB,GAAa00B,EAAgBne,UAC7Bke,EAAele,QAAUje,iBACrBs8B,GAAe,EACfZ,GAAAA,GACJ37B,aAAaq8B,EAAgBne,UAE5BvW,IACD00B,EAAgBne,QAAUje,iBACtBs8B,GAAe,GACXH,EAAele,SACfle,aAAao8B,EAAele,QAEhC2d,GAAAA,IAED,KACCQ,EAAgBne,SAChBle,aAAaq8B,EAAgBne,SAE7Bke,EAAele,SACfle,aAAao8B,EAAele,QAC/B,CAER,GAAG,CAAEsd,EAAS7zB,IACfxf,EAAM6kB,WAAAA,KAAsB,GAAA,IAC5B7kB,EAAM6kB,WAAS,KACX,MAAM2xB,EAAuBxyB,EAAce,UAAU,CACjDzI,MAAO5c,EAAW6c,oBAAoBK,kBACtCoI,SAAU,KACFguB,IAAyBhrB,IACzB8tB,KACAx9B,EAAsB,CAClBhK,MAAO,kBACP7O,MAAO,KAEd,IAGT,MAAO,KACHukB,EAAciB,YAAYuxB,EAAAA,CAEjC,GAAG,CAAEnC,EAAUrsB,EAAeF,KAAKC,UAAUrE,KAC9C1jB,EAAM6kB,WAAS,KACX,MAAM4xB,EAAkBzyB,EAAce,UAAU,CAC5CzI,MAAO5c,EAAW6c,oBAAoBO,YACtCkI,SAAUxN,IACN,MAAO4E,GAAIA,GAAM5E,EACjB,GAAI4E,IAAO4L,GACHqsB,EAAU,CAEVyB,IADa,GAEbx9B,EAAsB,CAClBhK,MAAO,kBACP7O,MAAO2c,GAEd,CACJ,IAGT,MAAO,KACH4H,EAAciB,YAAYwxB,EAAAA,CAEjC,GAAG,CAAEpC,EAAUrsB,EAAeF,KAAKC,UAAUrE,KAC9C1jB,EAAM6kB,eAAiB,KACfwvB,GAAoC,OAAxBL,EAAYje,SApGZ,MAChB,MAAM5jB,EAAcvS,EAAamF,MAAMyH,KAAKsN,MAAM48B,oBAAoBp2C,EAAgBskC,QAAQgR,MAAMlyB,GAAYsE,GAChH4a,EAAgBzwB,GAChBmiC,GAAapxC,IAASA,IACtBkxC,GAAe,EAAA,EAiGXuC,EACH,GACD,CAAEtC,EAAUF,EAAansB,EAAe9O,EAAe4O,KAAKC,UAAUrE,KACnE9hB,EAA0B0d,QAAAA,cAAcszB,GAAkB,CAC7DrvB,IAAKywB,EACL9nB,QAAShU,GAASioB,GAAYjoB,GAC9BuN,aAAc,IAAMhB,GAAa,GACjCiB,aAAc,IAAMjB,GAAa,GACjCmyB,QAAS1+B,GA/FOA,KAChB,GAAmB,UAAfA,EAAMyD,KAGN,OAFAwkB,GAAYjoB,QACZo+B,IAGJ,EAyFkBO,CAAY3+B,GAC9BpU,MAAO2c,EACPqyB,OAAQA,EACRD,UAAWA,EACXzxB,MAAO9hB,OAAO8C,OAAO,CAAA,EAAIgf,GACzBgyB,UAAWA,EACX,qBAAsB1zC,EAAWo3C,mBACjChxB,SAAU,GACXzL,EAAU85B,IAAgBE,GAAYzyC,EAAe,QAAW0d,cAAcyyB,GAAc,CAC3FC,UAAW,WAAW94B,IACtB+4B,OAAQ/4B,GACTtX,EAAe,QAAW0d,cAAcgzB,GAA6B,CACpEC,WAAYqB,EACZrhC,gBAAiBA,GACjBigC,iBAAkBA,EAClBC,eAAgBA,EAChBC,eAAgBA,SAuBlBqE,GAAcr2C,EAAOmhB,GAAG;aACjB,EAAE/d,MAAOA,KAAWA,EAAM+1B;;;;qBAIlB,EAAE/1B,MAAOA,KAAWA,EAAMmc;;;EAKzC+2B,GAA+Bl1C,EAAgB,QAAWse,CAAC;MAC3D22B;EAGAE,GAA4Bn1C,EAAgB,QAAWuc,GAAG;;;MAG1D04B;EAGAG,GAAmBt2B,IACrB,MAAOhK,MAAOA,EAAOyD,SAAUA,EAAU88B,SAAUC,EAAkBlF,OAAQA,EAAQpuC,MAAOuzC,EAAej2B,MAAOA,EAAOgyB,UAAWA,EAAWlyB,QAASA,GAAWN,EAC7Ju2B,EAAWC,SAA2DA,EACtEtzC,EAAQuzC,GAAiB72C,EAASuS,OAClCotB,EAAcjoB,IAChB,GAAIgJ,EAAS,CAET,GADaA,EAAQhJ,GAEjB,MAEP,CACDA,EAAMwD,iBACS,WAAXw2B,EAIJtyC,EAAa03C,qBAAqB1gC,GAH9B9L,OAAOysC,KAAK3gC,EAGkBA,EAShC4gC,EAAmB,CACrB1xB,SAAU,EACVhiB,MAAOA,EACPsd,MAAOA,EACPgyB,UAAWA,EACXlnB,QAASiU,EACTyW,QAbgB1+B,IACG,UAAfA,EAAMyD,MACNwkB,EAAYjoB,EAGhB,GAUJ,OAAKi/B,EAGEv1C,EAAe,QAAW0d,cAAc03B,GAA8B13C,OAAO8C,OAAO,CACvFq1C,KAAM7gC,GACP4gC,GAAmBn9B,GAJXzY,UAA0B0d,cAAc23B,GAA2B33C,OAAO8C,OAAO,CAAE,EAAEo1C,GAAmBn9B,EAI7FA,EAGpBq9B,GAAsC51C,EAAgB,QAAWuc,GAAG;;;;;;EAuCpEs5B,GAAyCz3C,EAAWsgB,SARhC5d,IAAU,CAChC8d,mBAAoBlZ,GAAUlF,cAAc2E,iBAAiBrE,OAGpC+U,IAAa,CACtC2qB,yBAA0Bx/B,GAAW6U,EAAS3Q,GAAQ1E,cAAcK,iBAAiBG,OAGkB,KAAM,CAC7G6d,QAASrM,IADkCpU,EA/BT0gB,IAClC,MAAMD,EAAU3gB,EAAM8jB,WAAWvO,IACjC,IAAKoL,EACD,OAAO/e,EAAe,QAAW0d,cAAc1d,UAA0BqhB,SAAU,MAEvF,MAAOqmB,eAAgBA,GAAkB3oB,GAClCre,cAAeA,EAAe0Y,OAAQA,EAAQ0F,mBAAoBA,EAAoB4hB,yBAA0BA,GAA4B1hB,EAC7Ig3B,EAAsB53C,EAAMsjB,OAAO,MAUzC,OATAtjB,EAAM6kB,WAAS,KACX,MAAMsgB,EAAwBvlC,EAAa+D,QAAQrB,cAAcoU,MAAMpU,EAAeoe,GACtF4hB,EAAyB6C,EAC5B,GAAG,CAAE7iC,IACNtC,EAAM6kB,WAAS,KACP7J,GACAsuB,EAAetuB,EAEtB,GAAG,CAAEA,IACCpZ,EAA0B0d,QAAAA,cAAco4B,GAAqC,CAChFn0B,IAAKq0B,EACL,qBAAsBl4C,EAAWm4C,4CAgBnCC,GAAgCh2C,EAAgB,QAAWuc,GAAG;;;;;;GAQ7D7V,uBAAwBA,IAA0B5I,EAAamJ,OAmBhEgvC,GAAmC73C,EAAWsgB,SAJrB5d,KAAY,KAET+U,KAAe,IAE8D,KAAM,CACjHgJ,QAASrM,IAD4BpU,EAjBT0gB,IAC5B,MAAMg3B,EAAsB53C,EAAMsjB,OAAO,OAClC00B,EAAcxD,GAAoBx0C,EAAM6iB,SAAS,IAKxD,OAJA7iB,EAAM6kB,WAAS,KACX,MAAM3L,EAAgB1Q,GAAuBovC,EAAoB7hB,SACjEye,EAAiBt7B,EACjB,GAAA,IACGtX,EAA0B0d,QAAAA,cAAcw4B,GAA+B,CAC1Ev0B,IAAKq0B,EACL,qBAAsBl4C,EAAWu4C,sCAYnCC,GAAsBp2C,EAAgB,QAAWuc,GAAG;EA4GpD85B,GAAyBj4C,EAAWsgB,SAPX5d,IAAU,CACrC6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpDsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,OAG9B+U,KAAe,IAEoD,KAAM,CACvGgJ,QAASrM,IADkBpU,EA/CT0gB,IAClB,MAAO7N,OAAQA,GAAU6N,EACnBhK,EAAQ7D,EAAOtT,MACfmwC,EAAU5vC,EAAMsjB,QAAO,IACtB3E,EAAWy5B,GAAgBp4C,EAAM6iB,WAiCxC,OAhCA7iB,EAAM6kB,WAAS,KACX+qB,EAAQ7Z,SAAU,EACX,KACH6Z,EAAQ7Z,SAAU,CAAA,KAG1B/1B,EAAM6kB,WAAS,KACX,IAAIlZ,GAAU,EACK4I,QAAe,OAAA,sBAC9B,IAAI5I,EAAJ,CAGAA,GAAU,EACV,IACI,MAAO0sC,OAAQA,EAAQpyB,IAAKA,GA7EzBtD,KACf,MACM2E,EAAQ3E,EAAK2E,MADR,+BAEX,IAAKA,EACD,MAAO,CACH+wB,OAAQ,GACRpyB,IAAK,IAGb,MAAMoyB,EAAS/wB,EAAM,GAGrB,MAAO,CACH+wB,OAAQA,EACRpyB,IAHQ,UAAiBoyB,WAkEkBC,CAAW1hC,GACxC2hC,EA5DF,EAACF,EAAQ11B,KACzB,GAAK01B,EAIL,OADiB11B,EAAKzF,QAAQ,UAAUm7B,IAAU,GAC3CE,EAuDsBC,CAAYH,EAAQzhC,GACrC,IAAKqP,IAAQsyB,EACT,OAEJ,MAAM55B,OAxDC,EAACsH,EAAKtD,IAASpO,QAAe,OAAA,sBACjD,IACI,MAAMkkC,QAAiB12C,EAAe,QAAWkkB,EAAK,CAClDyyB,OAAQ,OACRC,QAAS,CACLC,OAAQ,mBACR,eAAgB,oBAEpBC,KAAM/wB,KAAKC,UAAU,CACjBpF,KAAMA,IAEVm2B,YAAa,YAEXthC,QAAaihC,EAASM,OAC5B,IAAKvhC,EAAKqc,QACN,OAEJ,MAAOA,QAASA,GAAWrc,EACrBwhC,EAAkB,IAAI13C,EAAqB23C,gBAAgB,CAC7DhzB,IAAK4N,EAAQ5N,OAEVizB,OAAQA,EAAQC,SAAUA,SAAkBH,EAAgBp7B,IAAIiW,EAAQklB,KAAM,QACrF,IAAKG,EACD,OAEJ,MAAME,EAAUD,EAAStlB,EAAQrxB,MACjC,MAAO,IAAM42C,CAGhB,CAFC,MAAOn6B,GACL,MACH,CACJ,IA0BuCo6B,CAAepzB,EAAKsyB,GAC5C,IAAK3I,EAAQ7Z,QACT,OAEApX,GACAy5B,EAAaz5B,EAIpB,CAFC,MAAOM,GACL,MACH,CAjBA,CAkBJ,GAED,GAAA,IACGrd,UAA0B0d,cAAc44B,GAAqB,KAAMv5B,GAAa/c,EAA0B0d,QAAAA,cAAcX,EAAW,MAAA,IAcxI26B,GAAoBx3C,EAAgB,QAAWuc,GAAG;EAkBlDk7B,GAAuBr5C,EAAWsgB,SAPT5d,IAAU,CACrC6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpDsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,OAG9B+U,KAAe,IAEkD,KAAM,CACrGgJ,QAASrM,IADgBpU,EAfT0gB,IAChB,MAAO7N,OAAQA,GAAU6N,EACnBhK,EAAQ7D,EAAOtT,MACrB,OAAOmC,UAA0B0d,cAAcg6B,GAAmB,KAAM13C,EAAe,QAAW0d,cAAc,SAAU,CACtHk6B,IAAK5iC,QAeP6iC,GAAkB74B,IACpB,MAAOm0B,IAAKA,EAAK56B,MAAOA,EAAO0Z,QAASA,EAAS6lB,UAAWA,GAAa94B,EACnEva,EAAKrG,EAAMsjB,OAAO,MAMxB,OALAtjB,EAAM6kB,WAAS,KACPxe,EAAG0vB,SACH2jB,EAAUrzC,EAAG0vB,QAAQoS,aAAchuB,EAE1C,GAAG,CAAE9T,EAAG0vB,UACFn0B,EAA0B0d,QAAAA,cAAc,MAAO,CAClDiE,IAAKld,EACL+a,MAAO,CACH6zB,SAAU,WACVF,IAAKA,EAAM,OAEhBlhB,EAAAA,GAGA8lB,SAAUC,QAASC,KAAkB74C,EAAwB6qB,UA2E9DiuB,GAA6B55C,EAAWsgB,SAPtB5d,IAAU,CAC9B4H,aAAchD,GAAUzC,MAAMqH,gBAAgBxJ,GAC9CmK,SAAUvF,GAAUzC,MAAM+H,YAAYlK,OAGf+U,KAAe,IAEiD,KAAM,CAC7FgJ,QAASrM,IADsBpU,EAzET0gB,IACtB,MAAOoL,MAAOA,EAAO+tB,cAAeA,EAAevvC,aAAcA,EAAcuC,SAAUA,GAAY6T,EAC/Fo5B,EAAiBD,GAAiB,IAClCE,EAAcj6C,EAAMsjB,OAAO,MAC3B42B,EAAOl6C,EAAMsjB,OAAO,IACpB62B,EAAUn6C,EAAMsjB,OAAOmQ,MAAMzH,EAAMvR,QAAQ+G,KAAKw4B,KAC/CI,EAAOC,GAAYr6C,EAAM6iB,SAAS,IAClCy3B,EAAKC,GAAUv6C,EAAM6iB,SAASvT,KAAKkrC,MAAM,IAAMR,KAC/CS,EAAeC,GAAoB16C,EAAM6iB,SAASm3B,GAAkBM,EAAMF,KAC1EO,EAAUC,GAAe56C,EAAM6iB,UAAS,GACzC62B,EAAY,CAACj6C,EAAO0a,KACtBggC,EAAQpkB,QAAQ5b,GAAS1a,CAAAA,EA+C7B,OA/BAO,EAAM6kB,WAAS,KACX,GAAIs1B,EAAQpkB,QAAS,CACjB,MAAM0kB,EAAgBn6C,EAAgBmN,YAAYotC,WAAWC,IAAIX,EAAQpkB,QAASokB,EAAQpkB,QAAQtb,QAClGigC,EAAiBD,EACpB,CACD,GAAA,CAAEL,EAAOE,EAAKH,EAAQpkB,UAC1B/1B,EAAM6kB,WAAS,KACX,IAAIi2B,EAAM,EACV,IAAK,MAAO3gC,EAAO1a,KAAU06C,EAAQpkB,QAAQ3b,UACzC0gC,GAAOr7C,EACH+K,EAAe,GACXswC,EAAMxrC,KAAKqC,IAAInH,IACf6vC,EAASlgC,GAET2gC,EAAMxrC,KAAKqC,IAAInH,GAAgBuC,EAASkB,QAAU6sC,EAAMxrC,KAAKqC,IAAInH,GAAgBuC,EAASkB,OAAS,KACnGssC,EAAOpgC,KAGXkgC,EAAS,GACTE,EAAO,IAGf,GAAA,CAAExtC,EAASkB,OAAQzD,IACvBxK,EAAM6kB,WAAS,KACX+1B,GAAY,GACZ9iC,iBACI,MAAM2iC,EAAgBn6C,EAAgBmN,YAAYotC,WAAWC,IAAIX,EAAQpkB,QAASokB,EAAQpkB,QAAQtb,QAClGigC,EAAiBD,GACjBG,GAAY,EACZ,GAAA,IACP,GAAG,CAAE7tC,IACCnL,EAA0B0d,QAAAA,cAAc,MAAO,CAClD8B,MAAO,CACHnT,OAAQwsC,GAEZl3B,IAAK02B,GACNU,GAAY/4C,EAA0B0d,QAAAA,cAAc1d,EAA0BqhB,QAAAA,SAAU,KAAMrhB,EAAe,QAAW0d,cAAcu6B,GAAe,QAASc,GAAY/4C,EAAe,QAAW0d,cAAc1d,EAAe,QAAWqhB,SAAU,KAlDtO,MACfi3B,EAAKnkB,QAAU,GACf,IAAK,IAAIglB,EAAIX,EAAOW,GAAKT,EAAKS,IAAK,CAC/B,MAAMC,EAAOhvB,EAAM+uB,GACnBb,EAAKnkB,QAAQ9e,KAAKrV,EAAe,QAAW0d,cAAcm6B,GAAiB,CACvE19B,IAAKg/B,EAAIzrC,KAAK2rC,SACd9gC,MAAO4gC,EACPhG,IAAKz0C,EAAgBmN,YAAYotC,WAAWC,IAAIX,EAAQpkB,QAASglB,GACjElnB,QAASmnB,EACTtB,UAAWA,IAElB,CACD,OAAOQ,EAAKnkB,OAAAA,EAsC+OmlB,IAAAA,IAc7PC,GAA4Br5C,EAAgB,QAAWuc,GAAG;EAY1D+8B,GAA+Bl7C,EAAWsgB,SAPjB5d,IAAU,CACrC6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpDsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,OAG9B+U,KAAe,IAE0D,KAAM,CAC7GgJ,QAASrM,IADwBpU,EATT0gB,GAAchf,EAA0B0d,QAAAA,cAAc67B,GAA2B,KAAM,yBAa7GE,GAA4Bv5C,EAAgB,QAAWuc,GAAG;EAY1Di9B,GAA+Bp7C,EAAWsgB,SAPnB5d,IAAU,CACnC6d,kBAAmBjZ,GAAUwL,OAAOI,gBAAgBxQ,GACpDsf,sBAAuB1a,GAAUwL,OAAOK,oBAAoBzQ,OAGhC+U,KAAe,IAEwD,KAAM,CACzGgJ,QAASrM,IADwBpU,EATT0gB,GAAchf,EAA0B0d,QAAAA,cAAc+7B,GAA2B,KAAM,yBAa7GE,GAAyB,CAACC,EAAUC,EAAOC,IAAYnnC,QAAe,OAAA,UAAiB,YACzF,MAEMonC,OAh0C0B,EAACH,EAAUh5B,EAAUC,EAAMi5B,IAAYnnC,QAAAA,OAAuB,OAAA,GAAS,YACvG,MAAMoO,EAAO,CACT5Z,OAAQ,GACR4iC,OAAQ,GACR9+B,KAAM,GACNpN,MAAO,IAEX,IAAI4C,EACJ,GAAsB,UAAlBm5C,EAASjQ,KAAkB,CAC3B,IAAIqQ,EAAYJ,EAAShkC,KACzBnV,EAAuBu5C,EAAUv5C,qBAC7Bm5C,EAAShkC,KAAKq0B,WACd+P,QAAkBJ,EAAShkC,KAAKq0B,SAAS6P,IAE7C/4B,EAAK5Z,OAAS6yC,EAAU7yC,QAAU,GAClC4Z,EAAKgpB,OAASiQ,EAAUjQ,QAAU,GAClChpB,EAAK9V,KAAO+uC,EAAU/uC,MAAQ,GAC9B8V,EAAKljB,MAAQ+7C,EAAShkC,KAAK/X,OAAS,EACvC,CACD,MAAOsJ,OAAQA,EAAQ4iC,OAAQA,EAAQ9+B,KAAMA,GAAQ8V,EAC/Ck5B,EAAU,GAChB,GAAIlQ,EACA,IAAK,MAAM5mC,KAAS4mC,EAAQ,CACxB,MAAM5iC,EAAS,GACT8D,EAAO,GACb,GAAI9H,EAAMgE,OACN,IAAK,MAAM5F,KAAS4B,EAAMgE,OAAQ,CAC9B,MAAM4N,EAAYhO,GAA4BxF,GAC9Cwf,EAAKljB,QAAUC,EAAWstC,gCAAkCttC,EAAWutC,0BAA4BrtC,EAAastC,UAAUC,iBAAiBxqB,EAAKljB,OAChJsF,EAAMtF,QAAUC,EAAW0tC,iCAAmC1tC,EAAW2tC,2BAA6BztC,EAAastC,UAAUC,iBAAiBpoC,EAAMtF,OACpJG,EAAastC,UAAUC,iBAAiBx2B,EAAUlX,MACrD,CAEL,GAAIsF,EAAM2oC,UACN,IAAK,MAAMC,KAAY5oC,EAAM2oC,UAAW,CACpC,GAAIC,EAASmO,SACT,IAAK,MAAMC,KAAWpO,EAASmO,SAC3B,IAAK,MAAM34C,KAAS44C,EAAQhzC,OAAQ,CAChC,MAAM4N,EAAYhO,GAA4BxF,GAC9Cwf,EAAKljB,QAAUC,EAAWstC,gCAAkCttC,EAAWutC,0BAA4BrtC,EAAastC,UAAUC,iBAAiBxqB,EAAKljB,OAChJsF,EAAMtF,QAAUC,EAAW0tC,iCAAmC1tC,EAAW2tC,2BAA6BztC,EAAastC,UAAUC,iBAAiBpoC,EAAMtF,OACpJkuC,EAASluC,QAAUC,EAAWkuC,oCAAsCluC,EAAW4tC,8BAAgC1tC,EAAastC,UAAUC,iBAAiBQ,EAASluC,OAChKs8C,EAAQt8C,QAAUC,EAAWs8C,mCAAqCt8C,EAAW6tC,6BAA+B3tC,EAAastC,UAAUC,iBAAiB4O,EAAQt8C,OAC5JG,EAAastC,UAAUC,iBAAiBx2B,EAAUlX,MACrD,CAGT,GAAIkuC,EAAS5kC,OACT,IAAK,MAAM5F,KAASwqC,EAAS5kC,OAAQ,CACjC,MAAM4N,EAAYhO,GAA4BxF,GAC9Cwf,EAAKljB,QAAUC,EAAWstC,gCAAkCttC,EAAWutC,0BAA4BrtC,EAAastC,UAAUC,iBAAiBxqB,EAAKljB,OAChJsF,EAAMtF,QAAUC,EAAW0tC,iCAAmC1tC,EAAW2tC,2BAA6BztC,EAAastC,UAAUC,iBAAiBpoC,EAAMtF,OACpJkuC,EAASluC,QAAUC,EAAWkuC,oCAAsCluC,EAAW4tC,8BAAgC1tC,EAAastC,UAAUC,iBAAiBQ,EAASluC,OAChKG,EAAastC,UAAUC,iBAAiBx2B,EAAUlX,MACrD,CAER,CAEL,MAAMwsC,EAAoB,CACtBljC,OAAQA,EACR8D,KAAMA,EACNvK,cAAeD,GAEnBw5C,EAAQ5kC,KAAKg1B,EAChB,CAEL,GAAIljC,EAAQ,CACR,MAAMklC,EAAe,GACrB,IAAK,MAAM9qC,KAAS4F,EAAQ,CACxB,MAAM4N,EAAYhO,GAA4BxF,IACvC1D,MAAOA,EAAOumB,UAAWA,GAAarP,EAC7CgM,EAAKljB,QAAUC,EAAWstC,gCAAkCttC,EAAWutC,0BAA4BrtC,EAAastC,UAAUC,iBAAiBxqB,EAAKljB,OAChJG,EAAastC,UAAUC,iBAAiBx2B,EAAUlX,OAClD,MAAMwoB,EAAc,CAChBjC,UAAWA,EACXpP,MAAOnX,GAEXwuC,EAAah3B,KAAKgR,EACrB,CACD,MAAMgkB,EAAoB,CACtBljC,OAAQklC,EACRphC,KAAMA,EACNvK,cAAeD,GAEnBw5C,EAAQ5kC,KAAKg1B,EAChB,CACD,OAAO4P,CACV,IAyuCoCI,CAA4BT,EAF5C,EACJ,EAC0EE,GACjFhR,EAAS,CAAA,EACf,IAAK,MAAMwR,KAAeP,EAAoB,CAC1C,MAAO5yC,OAAQA,EAAQ8D,KAAMA,EAAMvK,cAAeA,GAAiB45C,GAC5D7kC,aAAcA,EAAcZ,iBAAkBA,GAAoBD,GAAmBzN,EAAQyyC,EAAShkC,KAAKnV,qBAAsBwK,GAClIjK,EAAQ,CACVN,cAAehD,OAAO8C,OAAO,CAAA,EAAIqU,GACjC3O,UAAW,CACPjE,QAAQ,GAEZmP,OAAQ,CACJrP,QAAS9B,EAA2BkR,QAAAA,OACpCnP,YAAa/B,EAA2BkR,QAAAA,QAE5CU,GAAI,CACAC,sBAAuB,IAE3B3O,MAAO,CACH4G,SAAS,EACTG,mBAAmB,EACnBP,UAAW,4CACXX,MAAO,EACPF,UAAW,EACXC,UAAW,EACXJ,aAAc,EACdC,aAAc,EACdC,aAAc,EACd+B,KAAM6K,EACN1K,iBAAkB,GAClBiB,OAAQ,CACJC,EAAG,EACHC,EAAG,EACHC,EAAG,GAEPhB,SAAU,CACNiB,MAAO,KACPC,OAAQ,KAEZC,UAAW,CACPF,MAAO,KACPC,OAAQ,IACRE,MAAO,EACPC,UAAW,CACPP,EAAG,EACHC,EAAG,EACHC,EAAG,IAGXlB,KAAMA,EACNI,WAAY,KAIpBy9B,EADW8Q,EAAShkC,KAAK/X,OACZmD,CAChB,CACD,MAAO,CACH8nC,OAAQA,EAEf,KAoBM1hC,WAAYmzC,GAAkBC,YAAaC,IAAqBz8C,EAAawJ,QAE9EkzC,GAAY,CACdC,kBAAmBh8B,GACnB6C,mBAAoBA,GACpBo5B,oBAAqBv6B,GACrBw6B,oBAAqBrB,GACrBsB,oBAAqBpB,IAGnBqB,GAAS,CACXC,YAAanT,GACboT,aAAczL,GACd0L,cAAehO,GACfnnB,SAAUiqB,GACVmL,KAAMhK,GACNiK,WAAY9F,GACZ+F,wBAAyBtF,GACzBuF,kBAAmBnF,GACnBoF,cAAehF,GACfiF,YAAa7D,GACb8D,YAAavD,GACbwD,aAAc59C,EAAWkH,aACzByiB,MAAO3pB,EAAW2pB,MAClB7jB,gBAAiB9F,EAAW8F,gBAC5BiqB,kBAAmB/vB,EAAW+vB,kBAC9B8tB,OAAQ57C,EAAsB,QAC9B67C,aAAc99C,EAAW6c,oBACzBg/B,uBAAwBA,GACxBvyC,WAAYmzC,GACZsB,eAAgB79C,EAAa03C,qBAC7BgF,UAAWA,IAGfh9C,OAAOC,eAAeC,EAAS,sBAAuB,CAClDqe,YAAY,EACZD,IAAK,WACD,OAAOle,EAAW6c,mBACrB,IAGLjd,OAAOC,eAAeC,EAAS,iCAAkC,CAC7Dqe,YAAY,EACZD,IAAK,WACD,OAAOle,EAAW+wC,8BACrB,IAGLnxC,OAAOC,eAAeC,EAAS,gCAAiC,CAC5Dqe,YAAY,EACZD,IAAK,WACD,OAAOle,EAAWuxC,6BACrB,IAGL3xC,OAAOC,eAAeC,EAAS,QAAS,CACpCqe,YAAY,EACZD,IAAK,WACD,OAAOle,EAAW2pB,KACrB,IAGL/pB,OAAOC,eAAeC,EAAS,eAAgB,CAC3Cqe,YAAY,EACZD,IAAK,WACD,OAAOle,EAAWkH,YACrB,IAGLtH,OAAOC,eAAeC,EAAS,kBAAmB,CAC9Cqe,YAAY,EACZD,IAAK,WACD,OAAOle,EAAW8F,eACrB,IAGLlG,OAAOC,eAAeC,EAAS,oBAAqB,CAChDqe,YAAY,EACZD,IAAK,WACD,OAAOle,EAAW+vB,iBACrB,IAGLnwB,OAAOC,eAAeC,EAAS,uBAAwB,CACnDqe,YAAY,EACZD,IAAK,WACD,OAAOhe,EAAa03C,oBACvB,IAGLh4C,OAAOC,eAAeC,EAAS,eAAgB,CAC3Cqe,YAAY,EACZD,IAAK,WACD,OAAOjc,EAAsB,OAChC,IAGLnC,EAAAiqC,kBAA4BA,GAE5BjqC,EAAAk+C,8BAAwC/F,GAExCn4C,EAAAm+C,oBAA8BxF,GAE9B34C,EAAAo+C,kBAA4BrE,GAE5B/5C,EAAA28C,iBAA2BA,GAE3B38C,EAAAq+C,WAAqB9K,GAErBvzC,EAAAs+C,wBAAkC/F,GAElCv4C,EAAAoyC,eAAyBA,GAEzBpyC,EAAA68C,kBAA4BA,GAE5B78C,EAAAsvC,oBAA8BA,GAE9BtvC,EAAA03C,iBAA2BA,GAE3B13C,EAAA4xC,mBAA6BA,GAE7B5xC,EAAAu+C,kBAA4BjE,GAE5Bt6C,EAAqBm9C,QAAAA,GAErBn9C,EAAAw+C,oBA1rC4B,CAAClO,EAAaf,EAAQhmC,KAC9C,IAAIk1C,EACAC,EACAC,EACJ,IAAK,MAAMvnC,KAASm4B,EAAQ,CACxB,GAAIn4B,EAAM7N,OACN,IAAK,MAAM5F,KAASyT,EAAM7N,OAAQ,CAC9B,MAAM4N,EAAYhO,GAA4BxF,GACxCi7C,EAA4B,MAAhBxnC,EAAMnX,MAAgBkX,EAAUlX,MAAQmX,EAAMnX,MAAQkX,EAAUlX,MAElF,GADA0+C,EAAYC,EACRtO,IAAgBsO,EAAW,CAC3BF,EAAa/6C,EACb,KACH,CACJ,CAEL,GAAI+6C,EAAY,CACZD,EAAarnC,EACb,KACH,CACJ,CACD,GAAI7N,EACA,IAAK,MAAM5F,KAAS4F,EAAQ,CAExB,GAAI+mC,IADcnnC,GAA4BxF,GAChB1D,MAAO,CACjCy+C,EAAa/6C,EACb,KACH,CACJ,CAEL,MAAO,CACH86C,WAAYA,EACZC,WAAYA,EACZC,UAAWA,IA2pCnB3+C,EAAA88C,UAAoBA,GAEpB98C,EAAA6+C,mBAA6BrqC,GAE7BxU,EAAA+7C,uBAAiCA,GAEjC/7C,EAAA8+C,gBAvJwB,KACpB,MAAOC,EAAaC,GAAkBx+C,EAAM6iB,SAAS,IAcrD,OAbA7iB,EAAM6kB,WAAS,KACX,MAAM45B,EAAa,KACf,MAAM77C,EAAQtC,EAAgBswC,QAAQ8N,UAAUh/C,EAAWoxC,uBACvDluC,GACA47C,EAAe57C,EAClB,EAIL,OAFA67C,IACA3zC,OAAOorB,iBAAiBx2B,EAAWuxC,8BAA+BwN,GAC3D,KACH3zC,OAAOqrB,oBAAoBz2B,EAAWuxC,8BAA+BwN,EAAAA,CAEzE,GAAA,IACGF,CAAAA"}
|