@aloudata/ink-flow 1.0.5 → 1.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/classnames/index.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/shim/index.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/shim/with-selector.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/vanilla.mjs","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/traditional.mjs","../src/contexts/StoreContext.ts","../src/constants/errorMessages.ts","../src/hooks/useStore.ts","../src/utils/store.ts","../src/utils/general.ts","../src/utils/dom.ts","../src/hooks/useKeyPress.ts","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/shallow.mjs","../src/styles/utils.ts","../src/types/system/general.ts","../src/types/system/edges.ts","../src/types/system/utils.ts","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/array.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/pointer.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-interpolate/src/zoom.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-zoom/src/constant.js","../../../node_modules/d3-zoom/src/event.js","../../../node_modules/d3-zoom/src/transform.js","../../../node_modules/d3-zoom/src/noevent.js","../../../node_modules/d3-zoom/src/zoom.js","../src/utils/xypanzoom/utils.ts","../src/utils/xypanzoom/XYPanZoom.ts","../src/utils/xypanzoom/eventhandler.ts","../src/utils/xypanzoom/filter.ts","../src/container/ZoomPane/index.tsx","../src/hooks/useResizeHandler.ts","../src/hooks/useGlobalKeyHandler.ts","../src/utils/changes.ts","../src/utils/graph.ts","../src/components/UserSelection/index.tsx","../src/container/Pane/index.tsx","../src/container/FlowRenderer/index.tsx","../src/hooks/useIsomorphicLayoutEffect.ts","../src/components/BatchProvider/useQueue.ts","../src/components/BatchProvider/index.tsx","../src/hooks/useViewportHelper.ts","../src/hooks/useInkFlow.ts","../src/container/NodeRenderer/useResizeObserver.ts","../src/hooks/useVisibleNodeIds.ts","../src/contexts/NodeIdContext.ts","../src/components/A11yDescriptions/index.tsx","../src/utils/edges/bezier-edge.ts","../src/utils/edges/general.ts","../src/utils/edges/smoothstep-edge.ts","../src/utils/xyhandle/utils.ts","../src/utils/xyhandle/XYHandle.ts","../src/components/Handle/index.tsx","../src/components/NodeWrapper/utils.tsx","../src/components/Nodes/InputNode.tsx","../src/components/Nodes/DefaultNode.tsx","../src/components/Nodes/OutputNode.tsx","../src/components/Nodes/GroupNode.tsx","../src/components/Nodes/utils.ts","../src/utils/xydrag/utils.ts","../src/utils/xydrag/XYDrag.ts","../src/hooks/useMoveSelectedNodes.ts","../src/components/NodeWrapper/index.tsx","../src/components/NodeWrapper/useNodeObserver.ts","../src/hooks/useDrag.ts","../src/container/NodeRenderer/index.tsx","../src/container/EdgeRenderer/MarkerSymbols.tsx","../src/utils/marker.ts","../src/container/EdgeRenderer/MarkerDefinitions.tsx","../src/components/Edges/EdgeText.tsx","../src/components/Edges/BaseEdge.tsx","../src/components/Edges/SimpleBezierEdge.tsx","../src/components/Edges/SmoothStepEdge.tsx","../src/components/Edges/StepEdge.tsx","../src/components/Edges/StraightEdge.tsx","../src/utils/edges/straight-edge.ts","../src/components/Edges/BezierEdge.tsx","../src/components/EdgeWrapper/utils.ts","../src/components/Edges/EdgeAnchor.tsx","../src/components/EdgeWrapper/EdgeUpdateAnchors.tsx","../src/utils/positions.ts","../src/components/EdgeWrapper/index.tsx","../src/container/EdgeRenderer/index.tsx","../src/hooks/useVisibleEdgeIds.ts","../src/container/Viewport/index.tsx","../src/container/GraphView/index.tsx","../src/store/initialState.ts","../src/store/index.ts","../src/components/InkFlowProvider/index.tsx","../src/container/InkFlow/Wrapper.tsx","../src/container/InkFlow/init-values.ts","../src/components/StoreUpdater/index.tsx","../src/container/InkFlow/index.tsx","../src/plugins/Controls/Icons/Plus.tsx","../src/plugins/Controls/Icons/Minus.tsx","../src/plugins/Controls/Icons/FitView.tsx","../src/plugins/Controls/Icons/Lock.tsx","../src/plugins/Controls/Icons/Unlock.tsx","../src/plugins/Controls/ControlButton.tsx","../src/components/Panel/index.tsx","../src/plugins/Controls/Controls.tsx","../src/types/index.ts","../../ink-core/dist/index.esm.js","../src/hooks/useEdgesState.ts","../src/hooks/useNodesState.ts"],"sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = (createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl;\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","import { createContext } from 'react';\n\nimport { createStore } from '../store';\n\nconst StoreContext = createContext<ReturnType<typeof createStore> | null>(null);\n\nexport const Provider = StoreContext.Provider;\nexport default StoreContext;\n","import { CoordinateExtent, HandleType } from '../types/system';\n\nexport const errorMessages = {\n error001: () =>\n '[Ink Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://InkFlow.dev/error#001',\n error002: () =>\n \"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.\",\n error003: (nodeType: string) =>\n `Node type \"${nodeType}\" not found. Using fallback type \"default\".`,\n error004: () =>\n 'The Ink Flow parent container needs a width and a height to render the graph.',\n error005: () => 'Only child nodes can use a parent extent.',\n error006: () => \"Can't create edge. An edge needs a source and a target.\",\n error007: (id: string) => `The old edge with id=${id} does not exist.`,\n error009: (type: string) => `Marker type \"${type}\" doesn't exist.`,\n error008: (\n handleType: HandleType,\n {\n id,\n sourceHandle,\n targetHandle,\n }: { id: string; sourceHandle: string | null; targetHandle: string | null },\n ) =>\n `Couldn't create edge for ${handleType} handle id: \"${\n !sourceHandle ? sourceHandle : targetHandle\n }\", edge id: ${id}.`,\n error010: () =>\n 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.',\n error011: (edgeType: string) =>\n `Edge type \"${edgeType}\" not found. Using fallback type \"default\".`,\n error012: (id: string) =>\n `Node with id \"${id}\" does not exist, it may have been removed. This can happen when a node is deleted before the \"onNodeClick\" handler is called.`,\n};\n\nexport const infiniteExtent: CoordinateExtent = [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY],\n];\n\nexport const elementSelectionKeys = ['Enter', ' ', 'Escape'];\n","import { useContext, useMemo } from 'react';\nimport {\n UseBoundStoreWithEqualityFn,\n useStoreWithEqualityFn as useZustandStore,\n} from 'zustand/traditional';\nimport { StoreApi } from 'zustand';\nimport type { Edge, Node, InkFlowState } from '../types';\n\nimport StoreContext from '../contexts/StoreContext';\n\nimport { errorMessages } from '../constants/errorMessages';\n\nconst zustandErrorMessage = errorMessages['error001']();\n\n/**\n * Hook for accessing the internal store. Should only be used in rare cases.\n *\n * @public\n * @param selector\n * @param equalityFn\n * @returns The selected state slice\n *\n * @example\n * const nodes = useStore((state: InkFlowState<MyNodeType>) => state.nodes);\n *\n */\nfunction useStore<StateSlice = unknown>(\n selector: (state: InkFlowState) => StateSlice,\n equalityFn?: (a: StateSlice, b: StateSlice) => boolean,\n) {\n const store = useContext(StoreContext);\n\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n\n return useZustandStore(store, selector, equalityFn);\n}\n\nfunction useStoreApi<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>() {\n const store = useContext(StoreContext) as UseBoundStoreWithEqualityFn<\n StoreApi<InkFlowState<NodeType, EdgeType>>\n > | null;\n\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n\n return useMemo(\n () => ({\n getState: store.getState,\n setState: store.setState,\n subscribe: store.subscribe,\n }),\n [store],\n );\n}\n\nexport { useStore, useStoreApi };\n","import {\n ConnectionLookup,\n CoordinateExtent,\n EdgeBase,\n EdgeLookup,\n InternalNodeBase,\n InternalNodeUpdate,\n NodeBase,\n NodeDimensionChange,\n NodeLookup,\n NodeOrigin,\n NodePositionChange,\n PanZoomInstance,\n ParentLookup,\n Rect,\n Transform,\n XYPosition,\n XYZPosition,\n} from '../types/system';\nimport { ParentExpandChild } from '../types/utils/types';\nimport { getDimensions, getHandleBounds } from './dom';\nimport {\n getBoundsOfRects,\n getNodeDimensions,\n isNumeric,\n nodeToRect,\n} from './general';\n\ntype UpdateNodesOptions<NodeType extends NodeBase> = {\n nodeOrigin?: NodeOrigin;\n elevateNodesOnSelect?: boolean;\n defaults?: Partial<NodeType>;\n checkEquality?: boolean;\n};\n\nexport function updateAbsolutePositions<NodeType extends NodeBase>(\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n options: UpdateNodesOptions<NodeType> = {\n nodeOrigin: [0, 0] as NodeOrigin,\n elevateNodesOnSelect: true,\n defaults: {},\n },\n) {\n const selectedNodeZ: number = options?.elevateNodesOnSelect ? 1000 : 0;\n\n for (const [, node] of nodeLookup) {\n const parentId = node.parentId;\n\n if (!parentId) {\n continue;\n }\n\n if (!nodeLookup.has(parentId)) {\n throw new Error(`Parent node ${parentId} not found`);\n }\n\n const parentNode = nodeLookup.get(parentId);\n const { x, y, z } = calculateXYZPosition(\n node,\n nodeLookup,\n {\n ...node.position,\n z:\n (isNumeric(node.zIndex) ? node.zIndex : 0) +\n (node.selected ? selectedNodeZ : 0),\n },\n parentNode?.origin ?? options.nodeOrigin,\n );\n\n const currPosition = node.internals.positionAbsolute;\n const positionChanged = x !== currPosition.x || y !== currPosition.y;\n\n if (positionChanged || z !== node.internals.z) {\n node.internals = {\n ...node.internals,\n positionAbsolute: positionChanged ? { x, y } : currPosition,\n z,\n };\n }\n }\n}\n\nexport function updateNodeInternals<NodeType extends InternalNodeBase>(\n updates: Map<string, InternalNodeUpdate>,\n nodeLookup: NodeLookup<NodeType>,\n parentLookup: ParentLookup<NodeType>,\n domNode: HTMLElement | null,\n nodeOrigin?: NodeOrigin,\n): {\n changes: (NodeDimensionChange | NodePositionChange)[];\n updatedInternals: boolean;\n} {\n const viewportNode = domNode?.querySelector('.xyflow__viewport');\n let updatedInternals = false;\n\n if (!viewportNode) {\n return { changes: [], updatedInternals };\n }\n\n const changes: (NodeDimensionChange | NodePositionChange)[] = [];\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform);\n // in this array we collect nodes, that might trigger changes (like expanding parent)\n const parentExpandChildren: ParentExpandChild[] = [];\n\n updates.forEach((update) => {\n const node = nodeLookup.get(update.id);\n\n if (node?.hidden) {\n nodeLookup.set(node.id, {\n ...node,\n internals: {\n ...node.internals,\n handleBounds: undefined,\n },\n });\n updatedInternals = true;\n } else if (node) {\n const dimensions = getDimensions(update.nodeElement);\n const dimensionChanged =\n node.measured.width !== dimensions.width ||\n node.measured.height !== dimensions.height;\n const doUpdate = !!(\n dimensions.width &&\n dimensions.height &&\n (dimensionChanged || !node.internals.handleBounds || update.force)\n );\n\n if (doUpdate) {\n const newNode = {\n ...node,\n measured: dimensions,\n internals: {\n ...node.internals,\n handleBounds: {\n source: getHandleBounds(\n '.source',\n update.nodeElement,\n zoom,\n node.origin || nodeOrigin,\n ),\n target: getHandleBounds(\n '.target',\n update.nodeElement,\n zoom,\n node.origin || nodeOrigin,\n ),\n },\n },\n };\n\n nodeLookup.set(node.id, newNode);\n updatedInternals = true;\n\n if (dimensionChanged) {\n changes.push({\n id: newNode.id,\n type: 'dimensions',\n dimensions,\n });\n\n if (newNode.expandParent && newNode.parentId) {\n parentExpandChildren.push({\n id: newNode.id,\n parentId: newNode.parentId,\n rect: nodeToRect(newNode, newNode.origin || nodeOrigin),\n });\n }\n }\n }\n }\n });\n\n if (parentExpandChildren.length > 0) {\n const parentExpandChanges = handleExpandParent(\n parentExpandChildren,\n nodeLookup,\n parentLookup,\n nodeOrigin,\n );\n changes.push(...parentExpandChanges);\n }\n\n return { changes, updatedInternals };\n}\n\nfunction calculateXYZPosition<NodeType extends NodeBase>(\n node: NodeType,\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n result: XYZPosition,\n nodeOrigin: NodeOrigin = [0, 0],\n): XYZPosition {\n if (!node.parentId) {\n return result;\n }\n\n const parent = nodeLookup.get(node.parentId)!;\n const parentPosition = getNodePositionWithOrigin(parent, nodeOrigin).position;\n\n return calculateXYZPosition(\n parent,\n nodeLookup,\n {\n x: (result.x ?? 0) + parentPosition.x,\n y: (result.y ?? 0) + parentPosition.y,\n z:\n (parent.internals.z ?? 0) > (result.z ?? 0)\n ? parent.internals.z ?? 0\n : result.z ?? 0,\n },\n parent.origin || nodeOrigin,\n );\n}\n\nexport const getNodePositionWithOrigin = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): { position: XYPosition; positionAbsolute: XYPosition } => {\n const { width, height } = getNodeDimensions(node);\n const positionAbsolute =\n 'internals' in node ? node.internals.positionAbsolute : node.position;\n const origin = node.origin || nodeOrigin;\n const offsetX = width * origin[0];\n const offsetY = height * origin[1];\n\n return {\n position: {\n x: node.position.x - offsetX,\n y: node.position.y - offsetY,\n },\n positionAbsolute: {\n x: positionAbsolute.x - offsetX,\n y: positionAbsolute.y - offsetY,\n },\n };\n};\n\nexport function updateConnectionLookup(\n connectionLookup: ConnectionLookup,\n edgeLookup: EdgeLookup,\n edges: EdgeBase[],\n) {\n connectionLookup.clear();\n edgeLookup.clear();\n\n for (const edge of edges) {\n const { source, target, sourceHandle = null, targetHandle = null } = edge;\n\n const sourceKey = `${source}-source-${sourceHandle}`;\n const targetKey = `${target}-target-${targetHandle}`;\n\n const prevSource = connectionLookup.get(sourceKey) || new Map();\n const prevTarget = connectionLookup.get(targetKey) || new Map();\n const connection = {\n edgeId: edge.id,\n source,\n target,\n sourceHandle,\n targetHandle,\n };\n\n edgeLookup.set(edge.id, edge);\n connectionLookup.set(\n sourceKey,\n prevSource.set(`${target}-${targetHandle}`, connection),\n );\n connectionLookup.set(\n targetKey,\n prevTarget.set(`${source}-${sourceHandle}`, connection),\n );\n }\n}\n\nexport function adoptUserNodes<NodeType extends NodeBase>(\n nodes: NodeType[],\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n parentLookup: Map<string, InternalNodeBase<NodeType>[]>,\n options: UpdateNodesOptions<NodeType> = {\n nodeOrigin: [0, 0] as NodeOrigin,\n elevateNodesOnSelect: true,\n defaults: {},\n checkEquality: true,\n },\n) {\n const tmpLookup = new Map(nodeLookup);\n nodeLookup.clear();\n parentLookup.clear();\n\n const selectedNodeZ: number = options?.elevateNodesOnSelect ? 1000 : 0;\n\n nodes.forEach((userNode) => {\n let internalNode = tmpLookup.get(userNode.id);\n\n if (\n options.checkEquality &&\n userNode === internalNode?.internals.userNode\n ) {\n nodeLookup.set(userNode.id, internalNode);\n } else {\n internalNode = {\n ...options.defaults,\n ...userNode,\n measured: {\n width: userNode.measured?.width,\n height: userNode.measured?.height,\n },\n internals: {\n positionAbsolute: userNode.position,\n handleBounds: internalNode?.internals.handleBounds,\n z:\n (isNumeric(userNode.zIndex) ? userNode.zIndex : 0) +\n (userNode.selected ? selectedNodeZ : 0),\n userNode,\n },\n };\n nodeLookup.set(userNode.id, internalNode);\n }\n\n if (userNode.parentId) {\n const childNodes = parentLookup.get(userNode.parentId);\n if (childNodes) {\n childNodes.push(internalNode);\n } else {\n parentLookup.set(userNode.parentId, [internalNode]);\n }\n }\n });\n\n if (parentLookup.size > 0) {\n updateAbsolutePositions(nodeLookup, options);\n }\n}\n\nexport function handleExpandParent(\n children: ParentExpandChild[],\n nodeLookup: NodeLookup,\n parentLookup: ParentLookup,\n nodeOrigin?: NodeOrigin,\n): (NodeDimensionChange | NodePositionChange)[] {\n const changes: (NodeDimensionChange | NodePositionChange)[] = [];\n const parentExpansions = new Map<\n string,\n { expandedRect: Rect; parent: InternalNodeBase }\n >();\n\n // determine the expanded rectangle the child nodes would take for each parent\n for (const child of children) {\n const parent = nodeLookup.get(child.parentId);\n if (!parent) {\n continue;\n }\n\n const parentRect =\n parentExpansions.get(child.parentId)?.expandedRect ??\n nodeToRect(parent, parent.origin ?? nodeOrigin);\n const expandedRect = getBoundsOfRects(parentRect, child.rect);\n parentExpansions.set(child.parentId, { expandedRect, parent });\n }\n\n if (parentExpansions.size > 0) {\n parentExpansions.forEach(({ expandedRect, parent }, parentId) => {\n // determine the position & dimensions of the parent\n const { position } = getNodePositionWithOrigin(parent, parent.origin);\n const dimensions = getNodeDimensions(parent);\n\n // determine how much the parent expands by moving the position\n const xChange =\n expandedRect.x < position.x\n ? Math.round(Math.abs(position.x - expandedRect.x))\n : 0;\n const yChange =\n expandedRect.y < position.y\n ? Math.round(Math.abs(position.y - expandedRect.y))\n : 0;\n\n if (xChange > 0 || yChange > 0) {\n changes.push({\n id: parentId,\n type: 'position',\n position: {\n x: position.x - xChange,\n y: position.y - yChange,\n },\n });\n\n // We move all child nodes in the oppsite direction\n // so the x,y changes of the parent do not move the children\n const childNodes = parentLookup.get(parentId);\n childNodes?.forEach((childNode) => {\n if (!children.some((child) => child.id === childNode.id)) {\n changes.push({\n id: childNode.id,\n type: 'position',\n position: {\n x: childNode.position.x + xChange,\n y: childNode.position.y + yChange,\n },\n });\n }\n });\n }\n\n if (\n dimensions.width < expandedRect.width ||\n dimensions.height < expandedRect.height\n ) {\n changes.push({\n id: parentId,\n type: 'dimensions',\n setAttributes: true,\n dimensions: {\n width: Math.max(dimensions.width, Math.round(expandedRect.width)),\n height: Math.max(\n dimensions.height,\n Math.round(expandedRect.height),\n ),\n },\n });\n }\n });\n }\n\n return changes;\n}\n\nexport function panBy({\n delta,\n panZoom,\n transform,\n translateExtent,\n width,\n height,\n}: {\n delta: XYPosition;\n panZoom: PanZoomInstance | null;\n transform: Transform;\n translateExtent: CoordinateExtent;\n width: number;\n height: number;\n}) {\n if (!panZoom || (!delta.x && !delta.y)) {\n return false;\n }\n\n const nextViewport = panZoom.setViewportConstrained(\n {\n x: transform[0] + delta.x,\n y: transform[1] + delta.y,\n zoom: transform[2],\n },\n [\n [0, 0],\n [width, height],\n ],\n translateExtent,\n );\n\n const transformChanged =\n !!nextViewport &&\n (nextViewport.x !== transform[0] ||\n nextViewport.y !== transform[1] ||\n nextViewport.k !== transform[2]);\n\n return transformChanged;\n}\n","import { Ref, ReactNode, RefAttributes, forwardRef } from 'react';\nimport {\n XYPosition,\n Transform,\n SnapGrid,\n InternalNodeBase,\n NodeBase,\n NodeOrigin,\n Rect,\n Box,\n CoordinateExtent,\n Viewport,\n Dimensions,\n NodeLookup,\n} from '../types/system';\nimport { Node } from '../types';\nimport { getNodePositionWithOrigin } from './store';\n\nexport const clamp = (val: number, min = 0, max = 1): number =>\n Math.min(Math.max(val, min), max);\n\nexport const clampPosition = (\n position: XYPosition = { x: 0, y: 0 },\n extent: CoordinateExtent,\n) => ({\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1]),\n});\n\nexport function getNodeDimensions(node: {\n measured?: { width?: number; height?: number };\n width?: number;\n height?: number;\n initialWidth?: number;\n initialHeight?: number;\n}): { width: number; height: number } {\n return {\n width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0,\n height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0,\n };\n}\n\nexport const isNumeric = (n: any): n is number => !isNaN(n) && isFinite(n);\n\nexport const snapPosition = (\n position: XYPosition,\n snapGrid: SnapGrid = [1, 1],\n): XYPosition => {\n return {\n x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n y: snapGrid[1] * Math.round(position.y / snapGrid[1]),\n };\n};\n\nexport const pointToRendererPoint = (\n { x, y }: XYPosition,\n [tx, ty, tScale]: Transform,\n snapToGrid = false,\n snapGrid: SnapGrid = [1, 1],\n): XYPosition => {\n const position: XYPosition = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale,\n };\n\n return snapToGrid ? snapPosition(position, snapGrid) : position;\n};\n\nexport const nodeToRect = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): Rect => {\n const { x, y } = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;\n\n return {\n x,\n y,\n width: node.measured?.width ?? node.width ?? 0,\n height: node.measured?.height ?? node.height ?? 0,\n };\n};\n\nexport const getBoundsOfBoxes = (box1: Box, box2: Box): Box => ({\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2),\n});\n\nexport const rectToBox = ({ x, y, width, height }: Rect): Box => ({\n x,\n y,\n x2: x + width,\n y2: y + height,\n});\n\nexport const boxToRect = ({ x, y, x2, y2 }: Box): Rect => ({\n x,\n y,\n width: x2 - x,\n height: y2 - y,\n});\n\nexport const nodeToBox = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): Box => {\n const { x, y } = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;\n\n return {\n x,\n y,\n x2: x + (node.measured?.width ?? node.width ?? 0),\n y2: y + (node.measured?.height ?? node.height ?? 0),\n };\n};\n\nexport const getBoundsOfRects = (rect1: Rect, rect2: Rect): Rect =>\n boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\n\nexport function fixedForwardRef<T, P = {}>(\n render: (props: P, ref: Ref<T>) => JSX.Element,\n): (props: P & RefAttributes<T>) => JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return forwardRef(render) as any;\n}\n\nexport const getOverlappingArea = (rectA: Rect, rectB: Rect): number => {\n const xOverlap = Math.max(\n 0,\n Math.min(rectA.x + rectA.width, rectB.x + rectB.width) -\n Math.max(rectA.x, rectB.x),\n );\n const yOverlap = Math.max(\n 0,\n Math.min(rectA.y + rectA.height, rectB.y + rectB.height) -\n Math.max(rectA.y, rectB.y),\n );\n\n return Math.ceil(xOverlap * yOverlap);\n};\n\nexport const getViewportForBounds = (\n bounds: Rect,\n width: number,\n height: number,\n minZoom: number,\n maxZoom: number,\n padding: number,\n): Viewport => {\n const xZoom = width / (bounds.width * (1 + padding));\n const yZoom = height / (bounds.height * (1 + padding));\n const zoom = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom;\n const y = height / 2 - boundsCenterY * clampedZoom;\n\n return { x, y, zoom: clampedZoom };\n};\n\nexport function isCoordinateExtent(\n extent?: CoordinateExtent | 'parent',\n): extent is CoordinateExtent {\n return extent !== undefined && extent !== 'parent';\n}\n\nexport function nodeHasDimensions<NodeType extends NodeBase = NodeBase>(\n node: NodeType,\n): boolean {\n return (\n (node.measured?.width ?? node.width ?? node.initialWidth) !== undefined &&\n (node.measured?.height ?? node.height ?? node.initialHeight) !== undefined\n );\n}\n\nconst calcAutoPanVelocity = (\n value: number,\n min: number,\n max: number,\n): number => {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, 50) / 50;\n } else if (value > max) {\n return -clamp(Math.abs(value - max), 1, 50) / 50;\n }\n\n return 0;\n};\n\nexport const calcAutoPan = (pos: XYPosition, bounds: Dimensions): number[] => {\n const xMovement = calcAutoPanVelocity(pos.x, 35, bounds.width - 35) * 20;\n const yMovement = calcAutoPanVelocity(pos.y, 35, bounds.height - 35) * 20;\n\n return [xMovement, yMovement];\n};\n\nexport const getPositionWithOrigin = ({\n x,\n y,\n width,\n height,\n origin = [0, 0],\n}: {\n x: number;\n y: number;\n width: number;\n height: number;\n origin?: NodeOrigin;\n}): XYPosition => {\n if (\n !width ||\n !height ||\n origin[0] < 0 ||\n origin[1] < 0 ||\n origin[0] > 1 ||\n origin[1] > 1\n ) {\n return { x, y };\n }\n\n return {\n x: x - width * origin[0],\n y: y - height * origin[1],\n };\n};\n\nexport const rendererPointToPoint = (\n { x, y }: XYPosition,\n [tx, ty, tScale]: Transform,\n): XYPosition => {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty,\n };\n};\n\nexport const isMacOs = () =>\n typeof navigator !== 'undefined' && navigator?.userAgent?.indexOf('Mac') >= 0;\n\nexport const isNode = <NodeType extends Node = Node>(\n element: unknown,\n): element is NodeType => isNodeBase<NodeType>(element);\n\nexport const isNodeBase = <NodeType extends NodeBase = NodeBase>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'position' in element &&\n !('source' in element) &&\n !('target' in element);\n\n/**\n * Convert child position to aboslute position\n *\n * @internal\n * @param position\n * @param parentId\n * @param nodeLookup\n * @param nodeOrigin\n * @returns an internal node with an absolute position\n */\nexport function evaluateAbsolutePosition(\n position: XYPosition,\n parentId: string,\n nodeLookup: NodeLookup,\n nodeOrigin: NodeOrigin = [0, 0],\n): XYPosition {\n let nextParentId: string | undefined = parentId;\n const positionAbsolute = { ...position };\n\n while (nextParentId) {\n const parent = nodeLookup.get(parentId);\n nextParentId = parent?.parentId;\n\n if (parent) {\n const origin = parent.origin || nodeOrigin;\n const xOffset = (parent.measured.width ?? 0) * origin[0];\n const yOffset = (parent.measured.height ?? 0) * origin[1];\n positionAbsolute.x += parent.position.x - xOffset;\n positionAbsolute.y += parent.position.y - yOffset;\n }\n }\n\n return positionAbsolute;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isRectObject = (obj: any): obj is Rect =>\n isNumeric(obj.width) &&\n isNumeric(obj.height) &&\n isNumeric(obj.x) &&\n isNumeric(obj.y);\n\nexport const devWarn = (id: string, message: string) => {\n // if (process.env.NODE_ENV === 'development') {\n // console.warn(\n // `[React Flow]: ${message} Help: https://reactflow.dev/error#${id}`,\n // );\n // }\n};\n","import {\n Transform,\n SnapGrid,\n XYPosition,\n Dimensions,\n NodeOrigin,\n HandleElement,\n Position,\n} from '../types/system';\nimport { pointToRendererPoint, snapPosition } from './general';\n\nexport type GetPointerPositionParams = {\n transform: Transform;\n snapGrid?: SnapGrid;\n snapToGrid?: boolean;\n};\n\nexport function getPointerPosition(\n event: MouseEvent | TouchEvent,\n {\n snapGrid = [0, 0],\n snapToGrid = false,\n transform,\n }: GetPointerPositionParams,\n): XYPosition & { xSnapped: number; ySnapped: number } {\n const { x, y } = getEventPosition(event);\n const pointerPos = pointToRendererPoint({ x, y }, transform);\n const { x: xSnapped, y: ySnapped } = snapToGrid\n ? snapPosition(pointerPos, snapGrid)\n : pointerPos;\n\n // we need the snapped position in order to be able to skip unnecessary drag events\n return {\n xSnapped,\n ySnapped,\n ...pointerPos,\n };\n}\n\nexport const getDimensions = (node: HTMLDivElement): Dimensions => ({\n width: node.offsetWidth,\n height: node.offsetHeight,\n});\n\nexport const getHostForElement = (\n element: HTMLElement,\n): Document | ShadowRoot =>\n (element.getRootNode?.() as Document | ShadowRoot) || window?.document;\n\nconst inputTags = ['INPUT', 'SELECT', 'TEXTAREA'];\n\nexport function isInputDOMNode(event: KeyboardEvent): boolean {\n // using composed path for handling shadow dom\n const target = (event.composedPath?.()?.[0] || event.target) as HTMLElement;\n const isInput =\n inputTags.includes(target?.nodeName) ||\n target?.hasAttribute('contenteditable');\n\n // when an input field is focused we don't want to trigger deletion or movement of nodes\n return isInput || !!target?.closest('.nokey');\n}\n\nexport const isMouseEvent = (\n event: MouseEvent | TouchEvent,\n): event is MouseEvent => 'clientX' in event;\n\nexport const getEventPosition = (\n event: MouseEvent | TouchEvent,\n bounds?: DOMRect,\n) => {\n const isMouse = isMouseEvent(event);\n const evtX = isMouse ? event.clientX : event.touches?.[0].clientX;\n const evtY = isMouse ? event.clientY : event.touches?.[0].clientY;\n\n return {\n x: evtX - (bounds?.left ?? 0),\n y: evtY - (bounds?.top ?? 0),\n };\n};\n\n// The handle bounds are calculated relative to the node element.\n// We store them in the internals object of the node in order to avoid\n// unnecessary recalculations.\nexport const getHandleBounds = (\n selector: string,\n nodeElement: HTMLDivElement,\n zoom: number,\n nodeOrigin: NodeOrigin = [0, 0],\n): HandleElement[] | null => {\n const handles = nodeElement.querySelectorAll(selector);\n\n if (!handles || !handles.length) {\n return null;\n }\n\n const handlesArray = Array.from(handles) as HTMLDivElement[];\n\n // @todo can't we use the node dimensions here?\n const nodeBounds = nodeElement.getBoundingClientRect();\n const nodeOffset = {\n x: nodeBounds.width * nodeOrigin[0],\n y: nodeBounds.height * nodeOrigin[1],\n };\n\n return handlesArray.map((handle): HandleElement => {\n const handleBounds = handle.getBoundingClientRect();\n\n return {\n id: handle.getAttribute('data-handleid'),\n position: handle.getAttribute('data-handlepos') as unknown as Position,\n x: (handleBounds.left - nodeBounds.left - nodeOffset.x) / zoom,\n y: (handleBounds.top - nodeBounds.top - nodeOffset.y) / zoom,\n ...getDimensions(handle),\n };\n });\n};\n","import { useState, useEffect, useRef, useMemo } from 'react';\nimport { KeyCode } from '../types/system';\nimport { isInputDOMNode } from '../utils/dom';\n\ntype Keys = Array<string>;\ntype PressedKeys = Set<string>;\ntype KeyOrCode = 'key' | 'code';\n\nexport type UseKeyPressOptions = {\n target?: Window | Document | HTMLElement | ShadowRoot | null;\n actInsideInputWithModifier?: boolean;\n};\n\nconst defaultDoc = typeof document !== 'undefined' ? document : null;\n\n/**\n * Hook for handling key events.\n *\n * @public\n * @param param.keyCode - The key code (string or array of strings) to use\n * @param param.options - Options\n * @returns boolean\n */\nexport function useKeyPress(\n // the keycode can be a string 'a' or an array of strings ['a', 'a+d']\n // a string means a single key 'a' or a combination when '+' is used 'a+d'\n // an array means different possibilites. Explainer: ['a', 'd+s'] here the\n // user can use the single key 'a' or the combination 'd' + 's'\n keyCode: KeyCode | null = null,\n options: UseKeyPressOptions = {\n target: defaultDoc,\n actInsideInputWithModifier: true,\n },\n): boolean {\n const [keyPressed, setKeyPressed] = useState(false);\n\n // we need to remember if a modifier key is pressed in order to track it\n const modifierPressed = useRef(false);\n\n // we need to remember the pressed keys in order to support combinations\n const pressedKeys = useRef<PressedKeys>(new Set([]));\n\n // keyCodes = array with single keys [['a']] or key combinations [['a', 's']]\n // keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft']\n // used to check if we store event.code or event.key. When the code is in the list of keysToWatch\n // we use the code otherwise the key. Explainer: When you press the left \"command\" key, the code is \"MetaLeft\"\n // and the key is \"Meta\". We want users to be able to pass keys and codes so we assume that the key is meant when\n // we can't find it in the list of keysToWatch.\n const [keyCodes, keysToWatch] = useMemo<[Array<Keys>, Keys]>(() => {\n if (keyCode !== null) {\n const keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode];\n const keys = keyCodeArr\n .filter((kc) => typeof kc === 'string')\n .map((kc) => kc.split('+'));\n const keysFlat = keys.reduce(\n (res: Keys, item) => res.concat(...item),\n [],\n );\n\n return [keys, keysFlat];\n }\n\n return [[], []];\n }, [keyCode]);\n\n useEffect(() => {\n const target = options?.target || defaultDoc;\n\n if (keyCode !== null) {\n const downHandler = (event: KeyboardEvent) => {\n modifierPressed.current =\n event.ctrlKey || event.metaKey || event.shiftKey;\n const preventAction =\n (!modifierPressed.current ||\n (modifierPressed.current && !options.actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n pressedKeys.current.add(event[keyOrCode]);\n\n if (isMatchingKey(keyCodes, pressedKeys.current, false)) {\n event.preventDefault();\n setKeyPressed(true);\n }\n };\n\n const upHandler = (event: KeyboardEvent) => {\n const preventAction =\n (!modifierPressed.current ||\n (modifierPressed.current && !options.actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n\n if (isMatchingKey(keyCodes, pressedKeys.current, true)) {\n setKeyPressed(false);\n pressedKeys.current.clear();\n } else {\n pressedKeys.current.delete(event[keyOrCode]);\n }\n\n // fix for Mac: when cmd key is pressed, keyup is not triggered for any other key, see: https://stackoverflow.com/questions/27380018/when-cmd-key-is-kept-pressed-keyup-is-not-triggered-for-any-other-key\n if (event.key === 'Meta') {\n pressedKeys.current.clear();\n }\n\n modifierPressed.current = false;\n };\n\n const resetHandler = () => {\n pressedKeys.current.clear();\n setKeyPressed(false);\n };\n\n target?.addEventListener(\n 'keydown',\n downHandler as EventListenerOrEventListenerObject,\n );\n target?.addEventListener(\n 'keyup',\n upHandler as EventListenerOrEventListenerObject,\n );\n window.addEventListener('blur', resetHandler);\n window.addEventListener('contextmenu', resetHandler);\n\n return () => {\n target?.removeEventListener(\n 'keydown',\n downHandler as EventListenerOrEventListenerObject,\n );\n target?.removeEventListener(\n 'keyup',\n upHandler as EventListenerOrEventListenerObject,\n );\n window.removeEventListener('blur', resetHandler);\n window.removeEventListener('contextmenu', resetHandler);\n };\n }\n }, [keyCode, setKeyPressed]);\n\n return keyPressed;\n}\n\n// utils\n\nfunction isMatchingKey(\n keyCodes: Array<Keys>,\n pressedKeys: PressedKeys,\n isUp: boolean,\n): boolean {\n return (\n keyCodes\n // we only want to compare same sizes of keyCode definitions\n // and pressed keys. When the user specified 'Meta' as a key somewhere\n // this would also be truthy without this filter when user presses 'Meta' + 'r'\n .filter((keys) => isUp || keys.length === pressedKeys.size)\n // since we want to support multiple possibilities only one of the\n // combinations need to be part of the pressed keys\n .some((keys) => keys.every((k) => pressedKeys.has(k)))\n );\n}\n\nfunction useKeyOrCode(eventCode: string, keysToWatch: KeyCode): KeyOrCode {\n return keysToWatch.includes(eventCode) ? 'code' : 'key';\n}\n","function shallow$1(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size)\n return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size)\n return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (const keyA of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {\n return false;\n }\n }\n return true;\n}\n\nvar shallow = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","import type { CSSProperties } from 'react';\n\nexport const containerStyle: CSSProperties = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n D3DragEvent,\n Selection as D3Selection,\n SubjectPosition,\n ZoomBehavior,\n} from 'd3';\n\nimport type { XYPosition, Rect } from './utils';\nimport type {\n InternalNodeBase,\n NodeBase,\n NodeDragItem,\n NodeOrigin,\n} from './nodes';\nimport type { ConnectingHandle, HandleType } from './handles';\nimport { PanZoomInstance } from './panzoom';\nimport { EdgeBase } from '.';\n\nexport type Project = (position: XYPosition) => XYPosition;\n\nexport type OnMove = (\n event: MouseEvent | TouchEvent | null,\n viewport: Viewport,\n) => void;\nexport type OnMoveStart = OnMove;\nexport type OnMoveEnd = OnMove;\n\nexport type ZoomInOut = (options?: ViewportHelperFunctionOptions) => void;\nexport type ZoomTo = (\n zoomLevel: number,\n options?: ViewportHelperFunctionOptions,\n) => void;\nexport type GetZoom = () => number;\nexport type GetViewport = () => Viewport;\nexport type SetViewport = (\n viewport: Viewport,\n options?: ViewportHelperFunctionOptions,\n) => void;\nexport type SetCenter = (\n x: number,\n y: number,\n options?: SetCenterOptions,\n) => void;\nexport type FitBounds = (bounds: Rect, options?: FitBoundsOptions) => void;\n\nexport type Connection = {\n source: string;\n target: string;\n sourceHandle: string | null;\n targetHandle: string | null;\n};\n\nexport type HandleConnection = Connection & {\n edgeId: string;\n};\n\nexport type ConnectionStatus = 'valid' | 'invalid';\n\nexport enum ConnectionMode {\n Strict = 'strict',\n Loose = 'loose',\n}\n\nexport type OnConnectStartParams = {\n nodeId: string | null;\n handleId: string | null;\n handleType: HandleType | null;\n};\n\nexport type OnConnectStart = (\n event: MouseEvent | TouchEvent,\n params: OnConnectStartParams,\n) => void;\nexport type OnConnect = (connection: Connection) => void;\nexport type OnConnectEnd = (event: MouseEvent | TouchEvent) => void;\n\nexport type IsValidConnection = (edge: EdgeBase | Connection) => boolean;\n\nexport type FitViewParamsBase<NodeType extends NodeBase> = {\n nodeLookup: Map<string, InternalNodeBase<NodeType>>;\n width: number;\n height: number;\n panZoom: PanZoomInstance;\n minZoom: number;\n maxZoom: number;\n nodeOrigin?: NodeOrigin;\n};\n\nexport type FitViewOptionsBase<NodeType extends NodeBase = NodeBase> = {\n padding?: number;\n includeHiddenNodes?: boolean;\n minZoom?: number;\n maxZoom?: number;\n duration?: number;\n nodes?: (NodeType | { id: string })[];\n};\n\nexport type Viewport = {\n x: number;\n y: number;\n zoom: number;\n};\n\nexport type KeyCode = string | Array<string>;\n\nexport type SnapGrid = [number, number];\n\nexport enum PanOnScrollMode {\n Free = 'free',\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n\nexport type ViewportHelperFunctionOptions = {\n duration?: number;\n};\n\nexport type SetCenterOptions = ViewportHelperFunctionOptions & {\n zoom?: number;\n};\n\nexport type FitBoundsOptions = ViewportHelperFunctionOptions & {\n padding?: number;\n};\n\nexport type OnViewportChange = (viewport: Viewport) => void;\n\nexport type D3ZoomInstance = ZoomBehavior<Element, unknown>;\nexport type D3SelectionInstance = D3Selection<\n Element,\n unknown,\n null,\n undefined\n>;\nexport type D3ZoomHandler = (this: Element, event: any, d: unknown) => void;\n\nexport type UpdateNodeInternals = (nodeId: string | string[]) => void;\n\nexport type PanelPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport type ProOptions = {\n account?: string;\n hideAttribution: boolean;\n};\n\nexport type UseDragEvent = D3DragEvent<HTMLDivElement, null, SubjectPosition>;\n\nexport enum SelectionMode {\n Partial = 'partial',\n Full = 'full',\n}\n\nexport type SelectionRect = Rect & {\n startX: number;\n startY: number;\n};\n\nexport type OnError = (id: string, message: string) => void;\n\nexport type UpdateNodePositions = (\n dragItems: Map<string, NodeDragItem | InternalNodeBase>,\n dragging?: boolean,\n) => void;\nexport type PanBy = (delta: XYPosition) => boolean;\n\nexport type UpdateConnection = (params: {\n connectionPosition: XYPosition | null;\n connectionStatus: ConnectionStatus | null;\n connectionStartHandle: ConnectingHandle | null;\n connectionEndHandle: ConnectingHandle | null;\n}) => void;\n\nexport type ColorModeClass = 'light' | 'dark';\nexport type ColorMode = ColorModeClass | 'system';\n\nexport type ConnectionLookup = Map<string, Map<string, HandleConnection>>;\n\nexport type OnBeforeDeleteBase<\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n> = ({\n nodes,\n edges,\n}: {\n nodes: NodeType[];\n edges: EdgeType[];\n}) => Promise<boolean | { nodes: NodeType[]; edges: EdgeType[] }>;\n","import { Position } from './utils';\n\nexport type EdgeBase<\n EdgeData extends Record<string, unknown> = Record<string, unknown>,\n EdgeType extends string | undefined = string | undefined\n> = {\n /** Unique id of an edge */\n id: string;\n /** Type of an edge defined in edgeTypes */\n type?: EdgeType;\n /** Id of source node */\n source: string;\n /** Id of target node */\n target: string;\n /** Id of source handle\n * only needed if there are multiple handles per node\n */\n sourceHandle?: string | null;\n /** Id of target handle\n * only needed if there are multiple handles per node\n */\n targetHandle?: string | null;\n animated?: boolean;\n hidden?: boolean;\n deletable?: boolean;\n selectable?: boolean;\n /** Arbitrary data passed to an edge */\n data?: EdgeData;\n selected?: boolean;\n /** Set the marker on the beginning of an edge\n * @example 'arrow', 'arrowclosed' or custom marker\n */\n markerStart?: EdgeMarkerType;\n /** Set the marker on the end of an edge\n * @example 'arrow', 'arrowclosed' or custom marker\n */\n markerEnd?: EdgeMarkerType;\n zIndex?: number;\n ariaLabel?: string;\n /** Padding around the edge where interaction is still possible */\n interactionWidth?: number;\n};\n\nexport type SmoothStepPathOptions = {\n offset?: number;\n borderRadius?: number;\n};\n\nexport type StepPathOptions = {\n offset?: number;\n};\n\nexport type BezierPathOptions = {\n curvature?: number;\n};\n\nexport type DefaultEdgeOptionsBase<EdgeType extends EdgeBase> = Omit<\n EdgeType,\n 'id' | 'source' | 'target' | 'sourceHandle' | 'targetHandle' | 'selected'\n>;\n\nexport enum ConnectionLineType {\n Bezier = 'default',\n Straight = 'straight',\n Step = 'step',\n SmoothStep = 'smoothstep',\n SimpleBezier = 'simplebezier',\n}\n\nexport type EdgeMarker = {\n type: MarkerType;\n color?: string;\n width?: number;\n height?: number;\n markerUnits?: string;\n orient?: string;\n strokeWidth?: number;\n};\n\nexport type EdgeMarkerType = string | EdgeMarker;\n\nexport enum MarkerType {\n Arrow = 'arrow',\n ArrowClosed = 'arrowclosed',\n}\n\nexport type MarkerProps = EdgeMarker & {\n id: string;\n};\n\nexport type EdgePosition = {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n sourcePosition: Position;\n targetPosition: Position;\n};\n\nexport type EdgeLookup<EdgeType extends EdgeBase = EdgeBase> = Map<string, EdgeType>;\n","export enum Position {\n Left = 'left',\n Top = 'top',\n Right = 'right',\n Bottom = 'bottom',\n}\n\nexport type XYPosition = {\n x: number;\n y: number;\n};\n\nexport type XYZPosition = XYPosition & { z: number };\n\nexport type Dimensions = {\n width: number;\n height: number;\n};\n\nexport type Rect = Dimensions & XYPosition;\n\nexport type Box = XYPosition & {\n x2: number;\n y2: number;\n};\n\nexport type Transform = [number, number, number];\n\nexport type CoordinateExtent = [[number, number], [number, number]];\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type ZoomTransform, zoomIdentity } from 'd3-zoom';\nimport { Viewport, D3SelectionInstance } from '../../types/system';\nimport { isMacOs } from '../general';\n\nexport const viewChanged = (\n prevViewport: Viewport,\n eventViewport: any,\n): boolean =>\n prevViewport.x !== eventViewport.x ||\n prevViewport.y !== eventViewport.y ||\n prevViewport.zoom !== eventViewport.k;\n\nexport const transformToViewport = (transform: ZoomTransform): Viewport => ({\n x: transform.x,\n y: transform.y,\n zoom: transform.k,\n});\n\nexport const viewportToTransform = ({ x, y, zoom }: Viewport): ZoomTransform =>\n zoomIdentity.translate(x, y).scale(zoom);\n\nexport const isWrappedWithClass = (event: any, className: string | undefined) =>\n event.target.closest(`.${className}`);\n\nexport const isRightClickPan = (\n panOnDrag: boolean | number[],\n usedButton: number,\n) => usedButton === 2 && Array.isArray(panOnDrag) && panOnDrag.includes(2);\n\nexport const getD3Transition = (selection: D3SelectionInstance, duration = 0) =>\n typeof duration === 'number' && duration > 0\n ? selection.transition().duration(duration)\n : selection;\n\nexport const wheelDelta = (event: any) => {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n\n return (\n -event.deltaY *\n (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) *\n factor\n );\n};\n","import { type ZoomTransform, zoom, zoomTransform } from 'd3-zoom';\nimport { select } from 'd3-selection';\n\nimport { getD3Transition, viewportToTransform, wheelDelta } from './utils';\nimport {\n createPanOnScrollHandler,\n createPanZoomEndHandler,\n createPanZoomHandler,\n createPanZoomStartHandler,\n createZoomOnScrollHandler,\n} from './eventhandler';\nimport { createFilter } from './filter';\nimport {\n Viewport,\n PanZoomInstance,\n PanZoomTransformOptions,\n PanZoomUpdateOptions,\n CoordinateExtent,\n PanZoomParams,\n} from '../../types/system';\nimport { clamp } from '../general';\n\nexport type ZoomPanValues = {\n isZoomingOrPanning: boolean;\n usedRightMouseButton: boolean;\n prevViewport: Viewport;\n mouseButton: number;\n timerId: ReturnType<typeof setTimeout> | undefined;\n panScrollTimeout: ReturnType<typeof setTimeout> | undefined;\n isPanScrolling: boolean;\n};\n\nexport function XYPanZoom({\n domNode,\n minZoom,\n maxZoom,\n translateExtent,\n viewport,\n onPanZoom,\n onPanZoomStart,\n onPanZoomEnd,\n onTransformChange,\n onDraggingChange,\n}: PanZoomParams): PanZoomInstance {\n const zoomPanValues: ZoomPanValues = {\n isZoomingOrPanning: false,\n usedRightMouseButton: false,\n prevViewport: { x: 0, y: 0, zoom: 0 },\n mouseButton: 0,\n timerId: undefined,\n panScrollTimeout: undefined,\n isPanScrolling: false,\n };\n const bbox = domNode.getBoundingClientRect();\n const d3ZoomInstance = zoom()\n .scaleExtent([minZoom, maxZoom])\n .translateExtent(translateExtent);\n const d3Selection = select(domNode).call(d3ZoomInstance);\n\n setViewportConstrained(\n {\n x: viewport.x,\n y: viewport.y,\n zoom: clamp(viewport.zoom, minZoom, maxZoom),\n },\n [\n [0, 0],\n [bbox.width, bbox.height],\n ],\n translateExtent,\n );\n\n const d3ZoomHandler = d3Selection.on('wheel.zoom')!;\n const d3DblClickZoomHandler = d3Selection.on('dblclick.zoom')!;\n d3ZoomInstance.wheelDelta(wheelDelta);\n\n function setTransform(\n transform: ZoomTransform,\n options?: PanZoomTransformOptions,\n ) {\n if (d3Selection) {\n d3ZoomInstance?.transform(\n getD3Transition(d3Selection, options?.duration),\n transform,\n );\n }\n }\n\n // public functions\n function update({\n noWheelClassName,\n noPanClassName,\n onPaneContextMenu,\n userSelectionActive,\n panOnScroll,\n panOnDrag,\n panOnScrollMode,\n panOnScrollSpeed,\n preventScrolling,\n zoomOnPinch,\n zoomOnScroll,\n zoomOnDoubleClick,\n zoomActivationKeyPressed,\n lib,\n }: PanZoomUpdateOptions) {\n if (userSelectionActive && !zoomPanValues.isZoomingOrPanning) {\n destroy();\n }\n\n const isPanOnScroll =\n panOnScroll && !zoomActivationKeyPressed && !userSelectionActive;\n\n const wheelHandler = isPanOnScroll\n ? createPanOnScrollHandler({\n zoomPanValues,\n noWheelClassName,\n d3Selection,\n d3Zoom: d3ZoomInstance,\n panOnScrollMode,\n panOnScrollSpeed,\n zoomOnPinch,\n onPanZoomStart,\n onPanZoom,\n onPanZoomEnd,\n })\n : createZoomOnScrollHandler({\n noWheelClassName,\n preventScrolling,\n d3ZoomHandler,\n });\n\n d3Selection.on('wheel.zoom', wheelHandler, { passive: false });\n\n if (!userSelectionActive) {\n // pan zoom start\n const startHandler = createPanZoomStartHandler({\n zoomPanValues,\n onDraggingChange,\n onPanZoomStart,\n });\n d3ZoomInstance.on('start', startHandler);\n\n // pan zoom\n const panZoomHandler = createPanZoomHandler({\n zoomPanValues,\n panOnDrag,\n onPaneContextMenu: !!onPaneContextMenu,\n onPanZoom,\n onTransformChange,\n });\n d3ZoomInstance.on('zoom', panZoomHandler);\n\n // pan zoom end\n const panZoomEndHandler = createPanZoomEndHandler({\n zoomPanValues,\n panOnDrag,\n panOnScroll,\n onPaneContextMenu,\n onPanZoomEnd,\n onDraggingChange,\n });\n d3ZoomInstance.on('end', panZoomEndHandler);\n }\n\n const filter = createFilter({\n zoomActivationKeyPressed,\n panOnDrag,\n zoomOnScroll,\n panOnScroll,\n zoomOnDoubleClick,\n zoomOnPinch,\n userSelectionActive,\n noPanClassName,\n noWheelClassName,\n lib,\n });\n d3ZoomInstance.filter(filter);\n\n // We cannot add zoomOnDoubleClick to the filter above because\n // double tapping on touch screens circumvents the filter and\n // dblclick.zoom is fired on the selection directly\n if (zoomOnDoubleClick) {\n d3Selection.on('dblclick.zoom', d3DblClickZoomHandler);\n } else {\n d3Selection.on('dblclick.zoom', null);\n }\n }\n\n function destroy() {\n d3ZoomInstance.on('zoom', null);\n }\n\n function setViewportConstrained(\n viewport: Viewport,\n extent: CoordinateExtent,\n translateExtent: CoordinateExtent,\n ): ZoomTransform | undefined {\n const nextTransform = viewportToTransform(viewport);\n const contrainedTransform = d3ZoomInstance?.constrain()(\n nextTransform,\n extent,\n translateExtent,\n );\n\n if (contrainedTransform) {\n setTransform(contrainedTransform);\n }\n\n return contrainedTransform;\n }\n\n function setViewport(viewport: Viewport, options?: PanZoomTransformOptions) {\n const nextTransform = viewportToTransform(viewport);\n\n setTransform(nextTransform, options);\n\n return nextTransform;\n }\n\n function syncViewport(viewport: Viewport) {\n if (d3Selection) {\n const nextTransform = viewportToTransform(viewport);\n const currentTransform = d3Selection.property('__zoom');\n\n if (\n currentTransform.k !== viewport.zoom ||\n currentTransform.x !== viewport.x ||\n currentTransform.y !== viewport.y\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n d3ZoomInstance?.transform(d3Selection, nextTransform, null, {\n sync: true,\n });\n }\n }\n }\n\n function getViewport(): Viewport {\n const transform = d3Selection\n ? zoomTransform(d3Selection.node() as Element)\n : { x: 0, y: 0, k: 1 };\n return { x: transform.x, y: transform.y, zoom: transform.k };\n }\n\n function scaleTo(zoom: number, options?: PanZoomTransformOptions) {\n if (d3Selection) {\n d3ZoomInstance?.scaleTo(\n getD3Transition(d3Selection, options?.duration),\n zoom,\n );\n }\n }\n\n function scaleBy(factor: number, options?: PanZoomTransformOptions) {\n if (d3Selection) {\n d3ZoomInstance?.scaleBy(\n getD3Transition(d3Selection, options?.duration),\n factor,\n );\n }\n }\n\n function setScaleExtent(scaleExtent: [number, number]) {\n d3ZoomInstance?.scaleExtent(scaleExtent);\n }\n\n function setTranslateExtent(translateExtent: CoordinateExtent) {\n d3ZoomInstance?.translateExtent(translateExtent);\n }\n\n return {\n update,\n destroy,\n setViewport,\n setViewportConstrained,\n getViewport,\n scaleTo,\n scaleBy,\n setScaleExtent,\n setTranslateExtent,\n syncViewport,\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport type { D3ZoomEvent } from 'd3-zoom';\nimport { pointer } from 'd3-selection';\n\nimport {\n isRightClickPan,\n isWrappedWithClass,\n transformToViewport,\n viewChanged,\n wheelDelta,\n} from './utils';\nimport { ZoomPanValues } from './XYPanZoom';\nimport {\n D3SelectionInstance,\n D3ZoomInstance,\n PanOnScrollMode,\n OnPanZoom,\n D3ZoomHandler,\n OnDraggingChange,\n OnTransformChange,\n} from '../../types/system';\nimport { isMacOs } from '../general';\n\nexport type PanOnScrollParams = {\n zoomPanValues: ZoomPanValues;\n noWheelClassName: string;\n d3Selection: D3SelectionInstance;\n d3Zoom: D3ZoomInstance;\n panOnScrollMode: PanOnScrollMode;\n panOnScrollSpeed: number;\n zoomOnPinch: boolean;\n onPanZoomStart?: OnPanZoom;\n onPanZoom?: OnPanZoom;\n onPanZoomEnd?: OnPanZoom;\n};\n\nexport type ZoomOnScrollParams = {\n noWheelClassName: string;\n preventScrolling: boolean;\n d3ZoomHandler: D3ZoomHandler;\n};\n\nexport type PanZoomStartParams = {\n zoomPanValues: ZoomPanValues;\n onDraggingChange: OnDraggingChange;\n onPanZoomStart?: OnPanZoom;\n};\n\nexport type PanZoomParams = {\n zoomPanValues: ZoomPanValues;\n panOnDrag: boolean | number[];\n onPaneContextMenu: boolean;\n onTransformChange: OnTransformChange;\n onPanZoom?: OnPanZoom;\n};\n\nexport type PanZoomEndParams = {\n zoomPanValues: ZoomPanValues;\n panOnDrag: boolean | number[];\n panOnScroll: boolean;\n onDraggingChange: (isDragging: boolean) => void;\n onPanZoomEnd?: OnPanZoom;\n onPaneContextMenu?: (event: any) => void;\n};\n\nexport function createPanOnScrollHandler({\n zoomPanValues,\n noWheelClassName,\n d3Selection,\n d3Zoom,\n panOnScrollMode,\n panOnScrollSpeed,\n zoomOnPinch,\n onPanZoomStart,\n onPanZoom,\n onPanZoomEnd,\n}: PanOnScrollParams) {\n return (event: any) => {\n if (isWrappedWithClass(event, noWheelClassName)) {\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n\n const currentZoom = d3Selection.property('__zoom').k || 1;\n\n // macos sets ctrlKey=true for pinch gesture on a trackpad\n if (event.ctrlKey && zoomOnPinch) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom = currentZoom * Math.pow(2, pinchDelta);\n // @ts-ignore\n d3Zoom.scaleTo(d3Selection, zoom, point, event);\n\n return;\n }\n\n // increase scroll speed in firefox\n // firefox: deltaMode === 1; chrome: deltaMode === 0\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX =\n panOnScrollMode === PanOnScrollMode.Vertical\n ? 0\n : event.deltaX * deltaNormalize;\n let deltaY =\n panOnScrollMode === PanOnScrollMode.Horizontal\n ? 0\n : event.deltaY * deltaNormalize;\n\n // this enables vertical scrolling with shift + scroll on windows\n if (\n !isMacOs() &&\n event.shiftKey &&\n panOnScrollMode !== PanOnScrollMode.Vertical\n ) {\n deltaX = event.deltaY * deltaNormalize;\n deltaY = 0;\n }\n\n d3Zoom.translateBy(\n d3Selection,\n -(deltaX / currentZoom) * panOnScrollSpeed,\n -(deltaY / currentZoom) * panOnScrollSpeed,\n // @ts-ignore\n { internal: true },\n );\n\n const nextViewport = transformToViewport(d3Selection.property('__zoom'));\n\n clearTimeout(zoomPanValues.panScrollTimeout);\n\n // for pan on scroll we need to handle the event calls on our own\n // we can't use the start, zoom and end events from d3-zoom\n // because start and move gets called on every scroll event and not once at the beginning\n if (!zoomPanValues.isPanScrolling) {\n zoomPanValues.isPanScrolling = true;\n\n onPanZoomStart?.(event, nextViewport);\n }\n\n if (zoomPanValues.isPanScrolling) {\n onPanZoom?.(event, nextViewport);\n\n zoomPanValues.panScrollTimeout = setTimeout(() => {\n onPanZoomEnd?.(event, nextViewport);\n\n zoomPanValues.isPanScrolling = false;\n }, 150);\n }\n };\n}\n\nexport function createZoomOnScrollHandler({\n noWheelClassName,\n preventScrolling,\n d3ZoomHandler,\n}: ZoomOnScrollParams) {\n return function (this: Element, event: any, d: unknown) {\n // we still want to enable pinch zooming even if preventScrolling is set to false\n const preventZoom =\n !preventScrolling && event.type === 'wheel' && !event.ctrlKey;\n\n if (preventZoom || isWrappedWithClass(event, noWheelClassName)) {\n return null;\n }\n\n event.preventDefault();\n\n d3ZoomHandler.call(this, event, d);\n };\n}\n\nexport function createPanZoomStartHandler({\n zoomPanValues,\n onDraggingChange,\n onPanZoomStart,\n}: PanZoomStartParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n if (event.sourceEvent?.internal) {\n return;\n }\n\n const viewport = transformToViewport(event.transform);\n\n // we need to remember it here, because it's always 0 in the \"zoom\" event\n zoomPanValues.mouseButton = event.sourceEvent?.button || 0;\n zoomPanValues.isZoomingOrPanning = true;\n zoomPanValues.prevViewport = viewport;\n\n if (event.sourceEvent?.type === 'mousedown') {\n onDraggingChange(true);\n }\n\n if (onPanZoomStart) {\n onPanZoomStart?.(event.sourceEvent as MouseEvent | TouchEvent, viewport);\n }\n };\n}\n\nexport function createPanZoomHandler({\n zoomPanValues,\n panOnDrag,\n onPaneContextMenu,\n onTransformChange,\n onPanZoom,\n}: PanZoomParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n zoomPanValues.usedRightMouseButton = !!(\n onPaneContextMenu &&\n isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0)\n );\n\n if (!event.sourceEvent?.sync) {\n onTransformChange([\n event.transform.x,\n event.transform.y,\n event.transform.k,\n ]);\n }\n\n if (onPanZoom && !event.sourceEvent?.internal) {\n onPanZoom?.(\n event.sourceEvent as MouseEvent | TouchEvent,\n transformToViewport(event.transform),\n );\n }\n };\n}\n\nexport function createPanZoomEndHandler({\n zoomPanValues,\n panOnDrag,\n panOnScroll,\n onDraggingChange,\n onPanZoomEnd,\n onPaneContextMenu,\n}: PanZoomEndParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n if (event.sourceEvent?.internal) {\n return;\n }\n\n zoomPanValues.isZoomingOrPanning = false;\n\n if (\n onPaneContextMenu &&\n isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0) &&\n !zoomPanValues.usedRightMouseButton &&\n event.sourceEvent\n ) {\n onPaneContextMenu(event.sourceEvent);\n }\n zoomPanValues.usedRightMouseButton = false;\n\n onDraggingChange(false);\n\n if (\n onPanZoomEnd &&\n viewChanged(zoomPanValues.prevViewport, event.transform)\n ) {\n const viewport = transformToViewport(event.transform);\n zoomPanValues.prevViewport = viewport;\n\n clearTimeout(zoomPanValues.timerId);\n zoomPanValues.timerId = setTimeout(\n () => {\n onPanZoomEnd?.(\n event.sourceEvent as MouseEvent | TouchEvent,\n viewport,\n );\n },\n // we need a setTimeout for panOnScroll to supress multiple end events fired during scroll\n panOnScroll ? 150 : 0,\n );\n }\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isWrappedWithClass } from './utils';\n\nexport type FilterParams = {\n zoomActivationKeyPressed: boolean;\n zoomOnScroll: boolean;\n zoomOnPinch: boolean;\n panOnDrag: boolean | number[];\n panOnScroll: boolean;\n zoomOnDoubleClick: boolean;\n userSelectionActive: boolean;\n noWheelClassName: string;\n noPanClassName: string;\n lib: string;\n};\n\nexport function createFilter({\n zoomActivationKeyPressed,\n zoomOnScroll,\n zoomOnPinch,\n panOnDrag,\n panOnScroll,\n zoomOnDoubleClick,\n userSelectionActive,\n noWheelClassName,\n noPanClassName,\n lib,\n}: FilterParams) {\n return (event: any): boolean => {\n const zoomScroll = zoomActivationKeyPressed || zoomOnScroll;\n const pinchZoom = zoomOnPinch && event.ctrlKey;\n\n if (\n event.button === 1 &&\n event.type === 'mousedown' &&\n (isWrappedWithClass(event, `${lib}-flow__node`) || isWrappedWithClass(event, `${lib}-flow__edge`))\n ) {\n return true;\n }\n\n // if all interactions are disabled, we prevent all zoom events\n if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) {\n return false;\n }\n\n // during a selection we prevent all other interactions\n if (userSelectionActive) {\n return false;\n }\n\n // if the target element is inside an element with the nowheel class, we prevent zooming\n if (isWrappedWithClass(event, noWheelClassName) && event.type === 'wheel') {\n return false;\n }\n\n // if the target element is inside an element with the nopan class, we prevent panning\n if (\n isWrappedWithClass(event, noPanClassName) &&\n (event.type !== 'wheel' || (panOnScroll && event.type === 'wheel' && !zoomActivationKeyPressed))\n ) {\n return false;\n }\n\n if (!zoomOnPinch && event.ctrlKey && event.type === 'wheel') {\n return false;\n }\n\n // when there is no scroll handling enabled, we prevent all wheel events\n if (!zoomScroll && !panOnScroll && !pinchZoom && event.type === 'wheel') {\n return false;\n }\n\n // if the pane is not movable, we prevent dragging it with mousestart or touchstart\n if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) {\n return false;\n }\n\n // if the pane is only movable using allowed clicks\n if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') {\n return false;\n }\n\n // We only allow right clicks if pan on drag is set to right click\n const buttonAllowed =\n (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || !event.button || event.button <= 1;\n\n // default filter for d3-zoom\n return (!event.ctrlKey || event.type === 'wheel') && buttonAllowed;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { containerStyle } from '../../styles/utils';\nimport type { FlowRendererProps } from '../FlowRenderer';\nimport { InkFlowState } from '../../types';\nimport {\n PanOnScrollMode,\n PanZoomInstance,\n Transform,\n} from '../../types/system';\nimport { useKeyPress } from '../../hooks/useKeyPress';\nimport { useResizeHandler } from '../../hooks/useResizeHandler';\nimport { XYPanZoom } from '../../utils/xypanzoom';\n\ntype ZoomPaneProps = Omit<\n FlowRendererProps,\n | 'deleteKeyCode'\n | 'selectionKeyCode'\n | 'multiSelectionKeyCode'\n | 'noDragClassName'\n | 'disableKeyboardA11y'\n | 'selectionOnDrag'\n> & {\n isControlledViewport: boolean;\n};\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n lib: s.lib,\n});\n\nexport function ZoomPane({\n onPaneContextMenu,\n zoomOnScroll = true,\n zoomOnPinch = true,\n panOnScroll = false,\n panOnScrollSpeed = 0.5,\n panOnScrollMode = PanOnScrollMode.Free,\n zoomOnDoubleClick = true,\n panOnDrag = true,\n defaultViewport,\n translateExtent,\n minZoom,\n maxZoom,\n zoomActivationKeyCode,\n preventScrolling = true,\n children,\n noWheelClassName,\n noPanClassName,\n onViewportChange,\n isControlledViewport,\n}: ZoomPaneProps) {\n const store = useStoreApi();\n const zoomPane = useRef<HTMLDivElement>(null);\n const { userSelectionActive, lib } = useStore(selector, shallow);\n const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);\n const panZoom = useRef<PanZoomInstance>();\n\n useResizeHandler(zoomPane);\n\n useEffect(() => {\n if (zoomPane.current) {\n panZoom.current = XYPanZoom({\n domNode: zoomPane.current,\n minZoom,\n maxZoom,\n translateExtent,\n viewport: defaultViewport,\n onTransformChange: (transform: Transform) => {\n onViewportChange?.({\n x: transform[0],\n y: transform[1],\n zoom: transform[2],\n });\n\n if (!isControlledViewport) {\n store.setState({ transform });\n }\n },\n onDraggingChange: (paneDragging: boolean) =>\n store.setState({ paneDragging }),\n onPanZoomStart: (event, vp) => {\n const { onViewportChangeStart, onMoveStart } = store.getState();\n onMoveStart?.(event, vp);\n onViewportChangeStart?.(vp);\n },\n onPanZoom: (event, vp) => {\n const { onViewportChange, onMove } = store.getState();\n onMove?.(event, vp);\n onViewportChange?.(vp);\n },\n onPanZoomEnd: (event, vp) => {\n const { onViewportChangeEnd, onMoveEnd } = store.getState();\n onMoveEnd?.(event, vp);\n onViewportChangeEnd?.(vp);\n },\n });\n\n const { x, y, zoom } = panZoom.current!.getViewport();\n\n store.setState({\n panZoom: panZoom.current,\n transform: [x, y, zoom],\n domNode: zoomPane.current.closest('.ink-flow') as HTMLDivElement,\n });\n\n return () => {\n panZoom.current?.destroy();\n };\n }\n }, []);\n\n useEffect(() => {\n panZoom.current?.update({\n onPaneContextMenu,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag,\n zoomActivationKeyPressed,\n preventScrolling,\n noPanClassName,\n userSelectionActive,\n noWheelClassName,\n lib,\n });\n }, [\n onPaneContextMenu,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag,\n zoomActivationKeyPressed,\n preventScrolling,\n noPanClassName,\n userSelectionActive,\n noWheelClassName,\n lib,\n ]);\n\n return (\n <div className=\"ink-flow__renderer\" ref={zoomPane} style={containerStyle}>\n {children}\n </div>\n );\n}\n","import { useEffect, type MutableRefObject } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { errorMessages } from '../constants';\nimport { getDimensions } from '../utils/dom';\n\n/**\n * Hook for handling resize events.\n *\n * @internal\n */\nexport function useResizeHandler(\n domNode: MutableRefObject<HTMLDivElement | null>,\n): void {\n const store = useStoreApi();\n\n useEffect(() => {\n const updateDimensions = () => {\n if (!domNode.current) {\n return false;\n }\n const size = getDimensions(domNode.current!);\n\n if (size.height === 0 || size.width === 0) {\n store.getState().onError?.('004', errorMessages['error004']());\n }\n\n store.setState({ width: size.width || 500, height: size.height || 500 });\n };\n\n if (domNode.current) {\n updateDimensions();\n window.addEventListener('resize', updateDimensions);\n\n const resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(domNode.current);\n\n return () => {\n window.removeEventListener('resize', updateDimensions);\n\n if (resizeObserver && domNode.current) {\n resizeObserver.unobserve(domNode.current);\n }\n };\n }\n }, []);\n}\n","import { useEffect } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { useKeyPress, UseKeyPressOptions } from './useKeyPress';\nimport { Edge, Node } from '../types';\nimport { KeyCode } from '../types/system';\n\nconst selected = (item: Node | Edge) => item.selected;\n\nconst deleteKeyOptions: UseKeyPressOptions = {\n actInsideInputWithModifier: false,\n};\n\n/**\n * Hook for handling global key events.\n *\n * @internal\n */\nexport function useGlobalKeyHandler({\n deleteKeyCode,\n multiSelectionKeyCode,\n}: {\n deleteKeyCode: KeyCode | null;\n multiSelectionKeyCode: KeyCode | null;\n}): void {\n const store = useStoreApi();\n // const { deleteElements } = useInkFlow();\n\n const deleteKeyPressed = useKeyPress(deleteKeyCode, deleteKeyOptions);\n const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode);\n\n useEffect(() => {\n if (deleteKeyPressed) {\n const { edges, nodes } = store.getState();\n // deleteElements({\n // nodes: nodes.filter(selected),\n // edges: edges.filter(selected),\n // });\n store.setState({ nodesSelectionActive: false });\n }\n }, [deleteKeyPressed]);\n\n useEffect(() => {\n store.setState({ multiSelectionActive: multiSelectionKeyPressed });\n }, [multiSelectionKeyPressed]);\n}\n","import { Edge, InternalNode, Node } from '../types';\nimport {\n EdgeChange,\n EdgeLookup,\n EdgeRemoveChange,\n EdgeSelectionChange,\n NodeChange,\n NodeLookup,\n NodeRemoveChange,\n NodeSelectionChange,\n} from '../types/system';\n\nfunction applyChange(change: any, element: any): any {\n switch (change.type) {\n case 'select': {\n element.selected = change.selected;\n break;\n }\n\n case 'position': {\n if (typeof change.position !== 'undefined') {\n element.position = change.position;\n }\n\n if (typeof change.dragging !== 'undefined') {\n element.dragging = change.dragging;\n }\n\n break;\n }\n\n case 'dimensions': {\n if (typeof change.dimensions !== 'undefined') {\n element.measured ??= {};\n element.measured.width = change.dimensions.width;\n element.measured.height = change.dimensions.height;\n\n if (change.setAttributes) {\n element.width = change.dimensions.width;\n element.height = change.dimensions.height;\n }\n }\n\n if (typeof change.resizing === 'boolean') {\n element.resizing = change.resizing;\n }\n\n break;\n }\n }\n}\n\nfunction applyChanges(changes: any[], elements: any[]): any[] {\n const updatedElements: any[] = [];\n // By storing a map of changes for each element, we can a quick lookup as we\n // iterate over the elements array!\n const changesMap = new Map<any, any[]>();\n\n for (const change of changes) {\n if (change.type === 'add') {\n updatedElements.push(change.item);\n continue;\n } else if (change.type === 'remove' || change.type === 'replace') {\n // For a 'remove' change we can safely ignore any other changes queued for\n // the same element, it's going to be removed anyway!\n changesMap.set(change.id, [change]);\n } else {\n const elementChanges = changesMap.get(change.id);\n\n if (elementChanges) {\n // If we have some changes queued already, we can do a mutable update of\n // that array and save ourselves some copying.\n elementChanges.push(change);\n } else {\n changesMap.set(change.id, [change]);\n }\n }\n }\n\n for (const element of elements) {\n const changes = changesMap.get(element.id);\n\n // When there are no changes for an element we can just push it unmodified,\n // no need to copy it.\n if (!changes) {\n updatedElements.push(element);\n continue;\n }\n\n // If we have a 'remove' change queued, it'll be the only change in the array\n if (changes[0].type === 'remove') {\n continue;\n }\n\n if (changes[0].type === 'replace') {\n updatedElements.push({ ...changes[0].item });\n continue;\n }\n\n // For other types of changes, we want to start with a shallow copy of the\n // object so React knows this element has changed. Sequential changes will\n /// each _mutate_ this object, so there's only ever one copy.\n const updatedElement = { ...element };\n\n for (const change of changes) {\n applyChange(change, updatedElement);\n }\n\n updatedElements.push(updatedElement);\n }\n\n return updatedElements;\n}\n\nexport function applyEdgeChanges<EdgeType extends Edge = Edge>(\n changes: EdgeChange<EdgeType>[],\n edges: EdgeType[],\n): EdgeType[] {\n return applyChanges(changes, edges) as EdgeType[];\n}\n\nexport function applyNodeChanges<NodeType extends Node = Node>(\n changes: NodeChange<NodeType>[],\n nodes: NodeType[],\n): NodeType[] {\n return applyChanges(changes, nodes) as NodeType[];\n}\n\nexport function createSelectionChange(\n id: string,\n selected: boolean,\n): NodeSelectionChange | EdgeSelectionChange {\n return {\n id,\n type: 'select',\n selected,\n };\n}\n\nexport function getSelectionChanges(\n items: Map<string, any>,\n selectedIds: Set<string> = new Set(),\n mutateItem = false,\n): NodeSelectionChange[] | EdgeSelectionChange[] {\n const changes: NodeSelectionChange[] | EdgeSelectionChange[] = [];\n\n for (const [id, item] of items) {\n const willBeSelected = selectedIds.has(id);\n\n // we don't want to set all items to selected=false on the first selection\n if (\n !(item.selected === undefined && !willBeSelected) &&\n item.selected !== willBeSelected\n ) {\n if (mutateItem) {\n // this hack is needed for nodes. When the user dragged a node, it's selected.\n // When another node gets dragged, we need to deselect the previous one,\n // in order to have only one selected node at a time - the onNodesChange callback comes too late here :/\n item.selected = willBeSelected;\n }\n changes.push(createSelectionChange(item.id, willBeSelected));\n }\n }\n\n return changes;\n}\n\nexport function getElementsDiffChanges({\n items,\n lookup,\n}: {\n items: Node[] | undefined;\n lookup: NodeLookup<InternalNode<Node>>;\n}): NodeChange[];\nexport function getElementsDiffChanges({\n items,\n lookup,\n}: {\n items: Edge[] | undefined;\n lookup: EdgeLookup;\n}): EdgeChange[];\nexport function getElementsDiffChanges({\n items = [],\n lookup,\n}: {\n items: any[] | undefined;\n lookup: Map<string, any>;\n}): any[] {\n const changes: any[] = [];\n const itemsLookup = new Map<string, any>(\n items.map((item) => [item.id, item]),\n );\n\n for (const item of items) {\n const lookupItem = lookup.get(item.id);\n const storeItem = lookupItem?.internals?.userNode ?? lookupItem;\n\n if (storeItem !== undefined && storeItem !== item) {\n changes.push({ id: item.id, item: item, type: 'replace' });\n }\n\n if (storeItem === undefined) {\n changes.push({ item: item, type: 'add' });\n }\n }\n\n for (const [id] of lookup) {\n const nextNode = itemsLookup.get(id);\n\n if (nextNode === undefined) {\n changes.push({ id, type: 'remove' });\n }\n }\n\n return changes;\n}\n\nexport function elementToRemoveChange<T extends Node | Edge>(\n item: T,\n): NodeRemoveChange | EdgeRemoveChange {\n return {\n id: item.id,\n type: 'remove',\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n boxToRect,\n clampPosition,\n getBoundsOfBoxes,\n getOverlappingArea,\n nodeToRect,\n pointToRendererPoint,\n getViewportForBounds,\n isCoordinateExtent,\n getNodeDimensions,\n nodeToBox,\n} from './general';\n\nimport { errorMessages } from '../constants';\nimport {\n EdgeBase,\n NodeBase,\n InternalNodeBase,\n NodeOrigin,\n XYPosition,\n Rect,\n NodeDragItem,\n Transform,\n FitViewParamsBase,\n FitViewOptionsBase,\n CoordinateExtent,\n NodeLookup,\n OnError,\n OnBeforeDeleteBase,\n} from '../types/system';\n\n/**\n * Test whether an object is useable as an Edge\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Edge\n */\nexport const isEdgeBase = <EdgeType extends EdgeBase = EdgeBase>(\n element: any,\n): element is EdgeType =>\n 'id' in element && 'source' in element && 'target' in element;\n\n/**\n * Test whether an object is useable as a Node\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Node\n */\nexport const isNodeBase = <NodeType extends NodeBase = NodeBase>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'position' in element &&\n !('source' in element) &&\n !('target' in element);\n\nexport const isInternalNodeBase = <\n NodeType extends InternalNodeBase = InternalNodeBase,\n>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'internals' in element &&\n !('source' in element) &&\n !('target' in element);\n\n/**\n * Pass in a node, and get connected nodes where edge.source === node.id\n * @public\n * @param node - The node to get the connected nodes from\n * @param nodes - The array of all nodes\n * @param edges - The array of all edges\n * @returns An array of nodes that are connected over eges where the source is the given node\n */\nexport const getOutgoers = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n node: NodeType | { id: string },\n nodes: NodeType[],\n edges: EdgeType[],\n): NodeType[] => {\n if (!node.id) {\n return [];\n }\n\n const outgoerIds = new Set();\n edges.forEach((edge) => {\n if (edge.source === node.id) {\n outgoerIds.add(edge.target);\n }\n });\n\n return nodes.filter((n) => outgoerIds.has(n.id));\n};\n\n/**\n * Pass in a node, and get connected nodes where edge.target === node.id\n * @public\n * @param node - The node to get the connected nodes from\n * @param nodes - The array of all nodes\n * @param edges - The array of all edges\n * @returns An array of nodes that are connected over eges where the target is the given node\n */\nexport const getIncomers = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n node: NodeType | { id: string },\n nodes: NodeType[],\n edges: EdgeType[],\n): NodeType[] => {\n if (!node.id) {\n return [];\n }\n const incomersIds = new Set();\n edges.forEach((edge) => {\n if (edge.target === node.id) {\n incomersIds.add(edge.source);\n }\n });\n\n return nodes.filter((n) => incomersIds.has(n.id));\n};\n\nexport const getNodePositionWithOrigin = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): { position: XYPosition; positionAbsolute: XYPosition } => {\n const { width, height } = getNodeDimensions(node);\n const positionAbsolute =\n 'internals' in node ? node.internals.positionAbsolute : node.position;\n const origin = node.origin || nodeOrigin;\n const offsetX = width * origin[0];\n const offsetY = height * origin[1];\n\n return {\n position: {\n x: node.position.x - offsetX,\n y: node.position.y - offsetY,\n },\n positionAbsolute: {\n x: positionAbsolute.x - offsetX,\n y: positionAbsolute.y - offsetY,\n },\n };\n};\n\nexport type GetNodesBoundsParams = {\n nodeOrigin?: NodeOrigin;\n};\n\n/**\n * Determines a bounding box that contains all given nodes in an array\n * @public\n * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport.\n * @param nodes - Nodes to calculate the bounds for\n * @param params.nodeOrigin - Origin of the nodes: [0, 0] - top left, [0.5, 0.5] - center\n * @returns Bounding box enclosing all nodes\n */\nexport const getNodesBounds = (\n nodes: NodeBase[],\n params: GetNodesBoundsParams = { nodeOrigin: [0, 0] },\n): Rect => {\n if (nodes.length === 0) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n const box = nodes.reduce(\n (currBox, node) => {\n const nodeBox = nodeToBox(node, params.nodeOrigin);\n return getBoundsOfBoxes(currBox, nodeBox);\n },\n { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity },\n );\n\n return boxToRect(box);\n};\n\nexport type GetInternalNodesBoundsParams<NodeType> = {\n nodeOrigin?: NodeOrigin;\n useRelativePosition?: boolean;\n filter?: (node: NodeType) => boolean;\n};\n\n/**\n * Determines a bounding box that contains all given nodes in an array\n * @internal\n */\nexport const getInternalNodesBounds = <\n NodeType extends InternalNodeBase | NodeDragItem,\n>(\n nodeLookup: Map<string, NodeType>,\n params: GetInternalNodesBoundsParams<NodeType> = {\n nodeOrigin: [0, 0],\n },\n): Rect => {\n if (nodeLookup.size === 0) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n let box = { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity };\n\n nodeLookup.forEach((node) => {\n if (params.filter == undefined || params.filter(node)) {\n const nodeBox = nodeToBox(node as InternalNodeBase, params.nodeOrigin);\n box = getBoundsOfBoxes(box, nodeBox);\n }\n });\n\n return boxToRect(box);\n};\n\nexport const getNodesInside = <NodeType extends NodeBase = NodeBase>(\n nodes: Map<string, InternalNodeBase<NodeType>>,\n rect: Rect,\n [tx, ty, tScale]: Transform = [0, 0, 1],\n partially = false,\n // set excludeNonSelectableNodes if you want to pay attention to the nodes \"selectable\" attribute\n excludeNonSelectableNodes = false,\n nodeOrigin: NodeOrigin = [0, 0],\n): InternalNodeBase<NodeType>[] => {\n const paneRect = {\n ...pointToRendererPoint(rect, [tx, ty, tScale]),\n width: rect.width / tScale,\n height: rect.height / tScale,\n };\n\n const visibleNodes: InternalNodeBase<NodeType>[] = [];\n\n for (const [, node] of nodes) {\n const { measured, selectable = true, hidden = false } = node;\n const width = measured.width ?? node.width ?? node.initialWidth ?? null;\n const height = measured.height ?? node.height ?? node.initialHeight ?? null;\n\n if ((excludeNonSelectableNodes && !selectable) || hidden) {\n continue;\n }\n\n const overlappingArea = getOverlappingArea(\n paneRect,\n nodeToRect(node, nodeOrigin),\n );\n const notInitialized = width === null || height === null;\n\n const partiallyVisible = partially && overlappingArea > 0;\n const area = (width ?? 0) * (height ?? 0);\n const isVisible =\n notInitialized || partiallyVisible || overlappingArea >= area;\n\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n }\n\n return visibleNodes;\n};\n\n/**\n * Get all connecting edges for a given set of nodes\n * @param nodes - Nodes you want to get the connected edges for\n * @param edges - All edges\n * @returns Array of edges that connect any of the given nodes with each other\n */\nexport const getConnectedEdges = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n nodes: NodeType[],\n edges: EdgeType[],\n): EdgeType[] => {\n const nodeIds = new Set();\n nodes.forEach((node) => {\n nodeIds.add(node.id);\n });\n\n return edges.filter(\n (edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target),\n );\n};\n\nexport function fitView<\n Params extends FitViewParamsBase<NodeBase>,\n Options extends FitViewOptionsBase<NodeBase>,\n>(\n {\n nodeLookup,\n width,\n height,\n panZoom,\n minZoom,\n maxZoom,\n nodeOrigin = [0, 0],\n }: Params,\n options?: Options,\n) {\n const filteredNodes: InternalNodeBase[] = [];\n const optionNodeIds = options?.nodes\n ? new Set(options.nodes.map((node) => node.id))\n : null;\n\n nodeLookup.forEach((n) => {\n const isVisible =\n n.measured.width &&\n n.measured.height &&\n (options?.includeHiddenNodes || !n.hidden);\n\n if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) {\n filteredNodes.push(n);\n }\n });\n\n if (filteredNodes.length > 0) {\n const bounds = getNodesBounds(filteredNodes, { nodeOrigin });\n\n const viewport = getViewportForBounds(\n bounds,\n width,\n height,\n options?.minZoom ?? minZoom,\n options?.maxZoom ?? maxZoom,\n options?.padding ?? 0.1,\n );\n\n panZoom.setViewport(viewport, { duration: options?.duration });\n\n return true;\n }\n\n return false;\n}\n\n/**\n * This function clamps the passed extend by the node's width and height.\n * This is needed to prevent the node from being dragged outside of its extent.\n *\n * @param node\n * @param extent\n * @returns\n */\nfunction clampNodeExtent<NodeType extends NodeBase>(\n node: NodeType,\n extent?: CoordinateExtent | 'parent',\n): CoordinateExtent | 'parent' | undefined {\n if (!extent || extent === 'parent') {\n return extent;\n }\n return [\n extent[0],\n [\n extent[1][0] - (node.measured?.width ?? 0),\n extent[1][1] - (node.measured?.height ?? 0),\n ],\n ];\n}\n\n/**\n * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin.\n *\n * @internal\n * @returns position, positionAbsolute\n */\nexport function calculateNodePosition<NodeType extends NodeBase>({\n nodeId,\n nextPosition,\n nodeLookup,\n nodeOrigin = [0, 0],\n nodeExtent,\n onError,\n}: {\n nodeId: string;\n nextPosition: XYPosition;\n nodeLookup: NodeLookup<InternalNodeBase<NodeType>>;\n nodeOrigin?: NodeOrigin;\n nodeExtent?: CoordinateExtent;\n onError?: OnError;\n}): { position: XYPosition; positionAbsolute: XYPosition } {\n const node = nodeLookup.get(nodeId)!;\n const parentNode = node.parentId ? nodeLookup.get(node.parentId) : undefined;\n const { x: parentX, y: parentY } = parentNode\n ? getNodePositionWithOrigin(parentNode, parentNode.origin || nodeOrigin)\n .positionAbsolute\n : { x: 0, y: 0 };\n\n let currentExtent = clampNodeExtent(node, node.extent || nodeExtent);\n\n if (node.extent === 'parent' && !node.expandParent) {\n if (!parentNode) {\n onError?.('005', errorMessages['error005']());\n } else {\n const nodeWidth = node.measured.width;\n const nodeHeight = node.measured.height;\n const parentWidth = parentNode.measured.width;\n const parentHeight = parentNode.measured.height;\n\n if (nodeWidth && nodeHeight && parentWidth && parentHeight) {\n const currNodeOrigin = node.origin || nodeOrigin;\n const extentX = parentX + nodeWidth * currNodeOrigin[0];\n const extentY = parentY + nodeHeight * currNodeOrigin[1];\n\n currentExtent = [\n [extentX, extentY],\n [\n extentX + parentWidth - nodeWidth,\n extentY + parentHeight - nodeHeight,\n ],\n ];\n }\n }\n } else if (parentNode && isCoordinateExtent(node.extent)) {\n currentExtent = [\n [node.extent[0][0] + parentX, node.extent[0][1] + parentY],\n [node.extent[1][0] + parentX, node.extent[1][1] + parentY],\n ];\n }\n\n const positionAbsolute = isCoordinateExtent(currentExtent)\n ? clampPosition(nextPosition, currentExtent)\n : nextPosition;\n\n return {\n position: {\n x: positionAbsolute.x - parentX,\n y: positionAbsolute.y - parentY,\n },\n positionAbsolute,\n };\n}\n\n/**\n * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted\n * @internal\n * @param param.nodesToRemove - The nodes to remove\n * @param param.edgesToRemove - The edges to remove\n * @param param.nodes - All nodes\n * @param param.edges - All edges\n * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted\n * @returns nodes: nodes that can be deleted, edges: edges that can be deleted\n */\nexport async function getElementsToRemove<\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>({\n nodesToRemove = [],\n edgesToRemove = [],\n nodes,\n edges,\n onBeforeDelete,\n}: {\n nodesToRemove: Partial<NodeType>[];\n edgesToRemove: Partial<EdgeType>[];\n nodes: NodeType[];\n edges: EdgeType[];\n onBeforeDelete?: OnBeforeDeleteBase<NodeType, EdgeType>;\n}): Promise<{\n nodes: NodeType[];\n edges: EdgeType[];\n}> {\n const nodeIds = new Set(nodesToRemove.map((node) => node.id));\n const matchingNodes: NodeType[] = [];\n\n for (const node of nodes) {\n if (node.deletable === false) {\n continue;\n }\n\n const isIncluded = nodeIds.has(node.id);\n const parentHit =\n !isIncluded &&\n node.parentId &&\n matchingNodes.find((n) => n.id === node.parentId);\n\n if (isIncluded || parentHit) {\n matchingNodes.push(node);\n }\n }\n\n const edgeIds = new Set(edgesToRemove.map((edge) => edge.id));\n const deletableEdges = edges.filter((edge) => edge.deletable !== false);\n const connectedEdges = getConnectedEdges(matchingNodes, deletableEdges);\n const matchingEdges: EdgeType[] = connectedEdges;\n\n for (const edge of deletableEdges) {\n const isIncluded = edgeIds.has(edge.id);\n\n if (isIncluded && !matchingEdges.find((e) => e.id === edge.id)) {\n matchingEdges.push(edge);\n }\n }\n\n if (!onBeforeDelete) {\n return {\n edges: matchingEdges,\n nodes: matchingNodes,\n };\n }\n\n const onBeforeDeleteResult = await onBeforeDelete({\n nodes: matchingNodes,\n edges: matchingEdges,\n });\n\n if (typeof onBeforeDeleteResult === 'boolean') {\n return onBeforeDeleteResult\n ? { edges: matchingEdges, nodes: matchingNodes }\n : { edges: [], nodes: [] };\n }\n\n return onBeforeDeleteResult;\n}\n","import { shallow } from 'zustand/shallow';\n\nimport { useStore } from '../../hooks/useStore';\nimport { InkFlowState } from '../../types';\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n userSelectionRect: s.userSelectionRect,\n});\n\nexport function UserSelection() {\n const { userSelectionActive, userSelectionRect } = useStore(\n selector,\n shallow,\n );\n const isActive = userSelectionActive && userSelectionRect;\n\n if (!isActive) {\n return null;\n }\n\n return (\n <div\n className=\"ink-flow__selection ink-flow__container\"\n style={{\n width: userSelectionRect.width,\n height: userSelectionRect.height,\n transform: `translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`,\n }}\n />\n );\n}\n","/**\n * The user selection rectangle gets displayed when a user drags the mouse while pressing shift\n */\n\nimport {\n useRef,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { shallow } from 'zustand/shallow';\nimport cc from 'classnames';\n\nimport { containerStyle } from '../../styles/utils';\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { InkFlowProps, InkFlowState } from '../../types';\nimport { SelectionMode, NodeChange, EdgeChange } from '../../types/system';\nimport { getSelectionChanges } from '../../utils/changes';\nimport { getEventPosition } from '../../utils/dom';\nimport { getNodesInside } from '../../utils/graph';\nimport { UserSelection } from '../../components/UserSelection';\n\ntype PaneProps = {\n isSelecting: boolean;\n children: ReactNode;\n} & Partial<\n Pick<\n InkFlowProps,\n | 'selectionMode'\n | 'panOnDrag'\n | 'onSelectionStart'\n | 'onSelectionEnd'\n | 'onPaneClick'\n | 'onPaneContextMenu'\n | 'onPaneScroll'\n | 'onPaneMouseEnter'\n | 'onPaneMouseMove'\n | 'onPaneMouseLeave'\n >\n>;\n\nconst wrapHandler = (\n handler: React.MouseEventHandler | undefined,\n containerRef: React.MutableRefObject<HTMLDivElement | null>,\n): React.MouseEventHandler => {\n return (event: ReactMouseEvent) => {\n if (event.target !== containerRef.current) {\n return;\n }\n handler?.(event);\n };\n};\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n elementsSelectable: s.elementsSelectable,\n dragging: s.paneDragging,\n});\n\nexport function Pane({\n isSelecting,\n selectionMode,\n panOnDrag,\n onSelectionStart,\n onSelectionEnd,\n onPaneClick,\n onPaneContextMenu,\n onPaneScroll,\n onPaneMouseEnter,\n onPaneMouseMove,\n onPaneMouseLeave,\n children,\n}: PaneProps) {\n const container = useRef<HTMLDivElement | null>(null);\n const store = useStoreApi();\n const prevSelectedNodesCount = useRef<number>(0);\n const prevSelectedEdgesCount = useRef<number>(0);\n const containerBounds = useRef<DOMRect>();\n const edgeIdLookup = useRef<Map<string, Set<string>>>(new Map());\n\n const { userSelectionActive, elementsSelectable, dragging } = useStore(\n selector,\n shallow,\n );\n\n const resetUserSelection = () => {\n store.setState({ userSelectionActive: false, userSelectionRect: null });\n\n prevSelectedNodesCount.current = 0;\n prevSelectedEdgesCount.current = 0;\n };\n\n const onClick = (event: ReactMouseEvent) => {\n onPaneClick?.(event);\n store.getState().resetSelectedElements();\n store.setState({ nodesSelectionActive: false });\n };\n\n const onContextMenu = (event: ReactMouseEvent) => {\n if (Array.isArray(panOnDrag) && panOnDrag?.includes(2)) {\n event.preventDefault();\n return;\n }\n\n onPaneContextMenu?.(event);\n };\n\n const onWheel = onPaneScroll\n ? (event: React.WheelEvent) => onPaneScroll(event)\n : undefined;\n\n const onMouseDown = (event: ReactMouseEvent): void => {\n const { resetSelectedElements, domNode, edgeLookup } = store.getState();\n containerBounds.current = domNode?.getBoundingClientRect();\n\n if (\n !elementsSelectable ||\n !isSelecting ||\n event.button !== 0 ||\n event.target !== container.current ||\n !containerBounds.current\n ) {\n return;\n }\n\n edgeIdLookup.current = new Map();\n\n for (const [id, edge] of edgeLookup) {\n edgeIdLookup.current.set(\n edge.source,\n edgeIdLookup.current.get(edge.source)?.add(id) || new Set([id]),\n );\n edgeIdLookup.current.set(\n edge.target,\n edgeIdLookup.current.get(edge.target)?.add(id) || new Set([id]),\n );\n }\n\n const { x, y } = getEventPosition(\n event.nativeEvent,\n containerBounds.current,\n );\n\n resetSelectedElements();\n\n store.setState({\n userSelectionRect: {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y,\n },\n });\n\n onSelectionStart?.(event);\n };\n\n const onMouseMove = (event: ReactMouseEvent): void => {\n const {\n userSelectionRect,\n edgeLookup,\n transform,\n nodeOrigin,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = store.getState();\n\n if (!isSelecting || !containerBounds.current || !userSelectionRect) {\n return;\n }\n\n const { x: mouseX, y: mouseY } = getEventPosition(\n event.nativeEvent,\n containerBounds.current,\n );\n const { startX, startY } = userSelectionRect;\n\n const nextUserSelectRect = {\n startX,\n startY,\n x: mouseX < startX ? mouseX : startX,\n y: mouseY < startY ? mouseY : startY,\n width: Math.abs(mouseX - startX),\n height: Math.abs(mouseY - startY),\n };\n\n const selectedNodes = getNodesInside(\n nodeLookup,\n nextUserSelectRect,\n transform,\n false,\n true,\n nodeOrigin,\n );\n\n const selectedEdgeIds = new Set<string>();\n const selectedNodeIds = new Set<string>();\n\n for (const selectedNode of selectedNodes) {\n selectedNodeIds.add(selectedNode.id);\n\n const edgeIds = edgeIdLookup.current.get(selectedNode.id);\n\n if (edgeIds) {\n for (const edgeId of edgeIds) {\n selectedEdgeIds.add(edgeId);\n }\n }\n }\n\n if (prevSelectedNodesCount.current !== selectedNodeIds.size) {\n prevSelectedNodesCount.current = selectedNodeIds.size;\n const changes = getSelectionChanges(\n nodeLookup,\n selectedNodeIds,\n true,\n ) as NodeChange[];\n triggerNodeChanges(changes);\n }\n\n if (prevSelectedEdgesCount.current !== selectedEdgeIds.size) {\n prevSelectedEdgesCount.current = selectedEdgeIds.size;\n const changes = getSelectionChanges(\n edgeLookup,\n selectedEdgeIds,\n ) as EdgeChange[];\n triggerEdgeChanges(changes);\n }\n\n store.setState({\n userSelectionRect: nextUserSelectRect,\n userSelectionActive: true,\n nodesSelectionActive: false,\n });\n };\n\n const onMouseUp = (event: ReactMouseEvent) => {\n if (event.button !== 0) {\n return;\n }\n const { userSelectionRect } = store.getState();\n // We only want to trigger click functions when in selection mode if\n // the user did not move the mouse.\n if (\n !userSelectionActive &&\n userSelectionRect &&\n event.target === container.current\n ) {\n onClick?.(event);\n }\n\n store.setState({\n nodesSelectionActive: prevSelectedNodesCount.current > 0,\n });\n\n resetUserSelection();\n onSelectionEnd?.(event);\n };\n\n const onMouseLeave = (event: ReactMouseEvent) => {\n if (userSelectionActive) {\n store.setState({\n nodesSelectionActive: prevSelectedNodesCount.current > 0,\n });\n onSelectionEnd?.(event);\n }\n\n resetUserSelection();\n };\n\n const hasActiveSelection =\n elementsSelectable && (isSelecting || userSelectionActive);\n\n return (\n <div\n className={cc([\n 'ink-flow__pane',\n { draggable: panOnDrag, dragging, selection: isSelecting },\n ])}\n onClick={hasActiveSelection ? undefined : wrapHandler(onClick, container)}\n onContextMenu={wrapHandler(onContextMenu, container)}\n onWheel={wrapHandler(onWheel, container)}\n onMouseEnter={hasActiveSelection ? undefined : onPaneMouseEnter}\n onMouseDown={hasActiveSelection ? onMouseDown : undefined}\n onMouseMove={hasActiveSelection ? onMouseMove : onPaneMouseMove}\n onMouseUp={hasActiveSelection ? onMouseUp : undefined}\n onMouseLeave={hasActiveSelection ? onMouseLeave : onPaneMouseLeave}\n ref={container}\n style={containerStyle}\n >\n {children}\n <UserSelection />\n </div>\n );\n}\n","import { memo, type ReactNode } from 'react';\n\nimport { useStore } from '../../hooks/useStore';\nimport { GraphViewProps } from '../GraphView';\nimport { InkFlowState, Node } from '../../types';\nimport { useKeyPress } from '../../hooks/useKeyPress';\nimport { ZoomPane } from '../ZoomPane';\nimport { useGlobalKeyHandler } from '../../hooks/useGlobalKeyHandler';\nimport { Pane } from '../Pane';\n\nexport type FlowRendererProps<NodeType extends Node = Node> = Omit<\n GraphViewProps<NodeType>,\n | 'snapToGrid'\n | 'nodeTypes'\n | 'edgeTypes'\n | 'snapGrid'\n | 'connectionLineType'\n | 'connectionLineContainerStyle'\n | 'arrowHeadColor'\n | 'onlyRenderVisibleElements'\n | 'selectNodesOnDrag'\n | 'defaultMarkerColor'\n | 'rfId'\n | 'nodeOrigin'\n> & {\n isControlledViewport: boolean;\n children: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => {\n return {\n nodesSelectionActive: s.nodesSelectionActive,\n userSelectionActive: s.userSelectionActive,\n };\n};\n\nfunction FlowRendererComponent<NodeType extends Node = Node>({\n children,\n onPaneClick,\n onPaneMouseEnter,\n onPaneMouseMove,\n onPaneMouseLeave,\n onPaneContextMenu,\n onPaneScroll,\n deleteKeyCode,\n selectionKeyCode,\n selectionOnDrag,\n selectionMode,\n onSelectionStart,\n onSelectionEnd,\n multiSelectionKeyCode,\n panActivationKeyCode,\n zoomActivationKeyCode,\n elementsSelectable,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll: _panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag: _panOnDrag,\n defaultViewport,\n translateExtent,\n minZoom,\n maxZoom,\n preventScrolling,\n onSelectionContextMenu,\n noWheelClassName,\n noPanClassName,\n disableKeyboardA11y,\n onViewportChange,\n isControlledViewport,\n}: FlowRendererProps<NodeType>) {\n const { nodesSelectionActive, userSelectionActive } = useStore(selector);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n const panActivationKeyPressed = useKeyPress(panActivationKeyCode);\n\n const panOnDrag = panActivationKeyPressed || _panOnDrag;\n const panOnScroll = panActivationKeyPressed || _panOnScroll;\n const isSelecting =\n selectionKeyPressed ||\n userSelectionActive ||\n (selectionOnDrag && panOnDrag !== true);\n\n useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });\n\n return (\n <ZoomPane\n onPaneContextMenu={onPaneContextMenu}\n elementsSelectable={elementsSelectable}\n zoomOnScroll={zoomOnScroll}\n zoomOnPinch={zoomOnPinch}\n panOnScroll={panOnScroll}\n panOnScrollSpeed={panOnScrollSpeed}\n panOnScrollMode={panOnScrollMode}\n zoomOnDoubleClick={zoomOnDoubleClick}\n panOnDrag={!selectionKeyPressed && panOnDrag}\n defaultViewport={defaultViewport}\n translateExtent={translateExtent}\n minZoom={minZoom}\n maxZoom={maxZoom}\n zoomActivationKeyCode={zoomActivationKeyCode}\n preventScrolling={preventScrolling}\n noWheelClassName={noWheelClassName}\n noPanClassName={noPanClassName}\n onViewportChange={onViewportChange}\n isControlledViewport={isControlledViewport}\n >\n <Pane\n onSelectionStart={onSelectionStart}\n onSelectionEnd={onSelectionEnd}\n onPaneClick={onPaneClick}\n onPaneMouseEnter={onPaneMouseEnter}\n onPaneMouseMove={onPaneMouseMove}\n onPaneMouseLeave={onPaneMouseLeave}\n onPaneContextMenu={onPaneContextMenu}\n onPaneScroll={onPaneScroll}\n panOnDrag={panOnDrag}\n isSelecting={!!isSelecting}\n selectionMode={selectionMode}\n >\n {children}\n {/* {nodesSelectionActive && (\n <NodesSelection\n onSelectionContextMenu={onSelectionContextMenu}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={disableKeyboardA11y}\n />\n )} */}\n </Pane>\n </ZoomPane>\n );\n}\n\nFlowRendererComponent.displayName = 'FlowRenderer';\n\nexport const FlowRenderer = memo(\n FlowRendererComponent,\n) as typeof FlowRendererComponent;\n","import { useEffect, useLayoutEffect } from 'react';\n\n// we need this hook to prevent a warning when using ink-flow in SSR\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import { useState } from 'react';\n\nimport { Queue, QueueItem } from './types';\nimport { useIsomorphicLayoutEffect } from '../../hooks/useIsomorphicLayoutEffect';\n\n/**\n * This hook returns a queue that can be used to batch updates.\n *\n * @param runQueue - a function that gets called when the queue is flushed\n * @internal\n *\n * @returns a Queue object\n */\nexport function useQueue<T>(runQueue: (items: QueueItem<T>[]) => void) {\n // Because we're using a ref above, we need some way to let React know when to\n // actually process the queue. We flip this bit of state to `true` any time we\n // mutate the queue and then flip it back to `false` after flushing the queue.\n const [shouldFlush, setShouldFlush] = useState(false);\n\n // A reference of all the batched updates to process before the next render. We\n // want a reference here so multiple synchronous calls to `setNodes` etc can be\n // batched together.\n const [queue] = useState(() => createQueue<T>(() => setShouldFlush(true)));\n\n // Layout effects are guaranteed to run before the next render which means we\n // shouldn't run into any issues with stale state or weird issues that come from\n // rendering things one frame later than expected (we used to use `setTimeout`).\n useIsomorphicLayoutEffect(() => {\n // Because we need to flip the state back to false after flushing, this should\n // trigger the hook again (!). If the hook is being run again we know that any\n // updates should have been processed by now and we can safely clear the queue\n // and bail early.\n if (!shouldFlush) {\n queue.reset();\n return;\n }\n\n const queueItems = queue.get();\n\n if (queueItems.length) {\n runQueue(queueItems);\n\n queue.reset();\n }\n\n // Beacuse we're using reactive state to trigger this effect, we need to flip\n // it back to false.\n setShouldFlush(false);\n }, [shouldFlush]);\n\n return queue;\n}\n\nfunction createQueue<T>(cb: () => void): Queue<T> {\n let queue: QueueItem<T>[] = [];\n\n return {\n get: () => queue,\n reset: () => {\n queue = [];\n },\n push: (item) => {\n queue.push(item);\n cb();\n },\n };\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\n\nimport { useStoreApi } from '../../hooks/useStore';\nimport { Queue, QueueItem } from './types';\nimport type { Edge, Node } from '../../types';\nimport { useQueue } from './useQueue';\nimport { NodeChange, EdgeChange } from '../../types/system';\nimport { getElementsDiffChanges } from '../../utils/changes';\n\nconst BatchContext = createContext<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeQueue: Queue<any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n edgeQueue: Queue<any>;\n} | null>(null);\n\n/**\n * This is a context provider that holds and processes the node and edge update queues\n * that are needed to handle setNodes, addNodes, setEdges and addEdges.\n *\n * @internal\n */\nexport function BatchProvider<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>({ children }: { children: ReactNode }) {\n const store = useStoreApi<NodeType, EdgeType>();\n\n const nodeQueueHandler = useCallback((queueItems: QueueItem<NodeType>[]) => {\n const {\n nodes = [],\n setNodes,\n hasDefaultNodes,\n onNodesChange,\n nodeLookup,\n } = store.getState();\n\n // This is essentially an `Array.reduce` in imperative clothing. Processing\n // this queue is a relatively hot path so we'd like to avoid the overhead of\n // array methods where we can.\n let next = nodes as NodeType[];\n for (const payload of queueItems) {\n next = typeof payload === 'function' ? payload(next) : payload;\n }\n\n if (hasDefaultNodes) {\n setNodes(next);\n } else if (onNodesChange) {\n onNodesChange(\n getElementsDiffChanges({\n items: next,\n lookup: nodeLookup,\n }) as NodeChange<NodeType>[],\n );\n }\n }, []);\n const nodeQueue = useQueue<NodeType>(nodeQueueHandler);\n\n const edgeQueueHandler = useCallback((queueItems: QueueItem<EdgeType>[]) => {\n const {\n edges = [],\n setEdges,\n hasDefaultEdges,\n onEdgesChange,\n edgeLookup,\n } = store.getState();\n\n let next = edges as EdgeType[];\n for (const payload of queueItems) {\n next = typeof payload === 'function' ? payload(next) : payload;\n }\n\n if (hasDefaultEdges) {\n setEdges(next);\n } else if (onEdgesChange) {\n onEdgesChange(\n getElementsDiffChanges({\n items: next,\n lookup: edgeLookup,\n }) as EdgeChange<EdgeType>[],\n );\n }\n }, []);\n const edgeQueue = useQueue<EdgeType>(edgeQueueHandler);\n\n const value = useMemo(() => ({ nodeQueue, edgeQueue }), []);\n\n return (\n <BatchContext.Provider value={value}>{children}</BatchContext.Provider>\n );\n}\n\nexport function useBatchContext() {\n const batchContext = useContext(BatchContext);\n\n if (!batchContext) {\n throw new Error('useBatchContext must be used within a BatchProvider');\n }\n\n return batchContext;\n}\n","import { useMemo } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { ViewportHelperFunctions } from '../types';\nimport { XYPosition } from '../types/system';\nimport {\n getViewportForBounds,\n pointToRendererPoint,\n rendererPointToPoint,\n} from '../utils/general';\nimport { fitView } from '../utils/graph';\n\n/**\n * Hook for getting viewport helper functions.\n *\n * @internal\n * @returns viewport helper functions\n */\nconst useViewportHelper = (): ViewportHelperFunctions => {\n const store = useStoreApi();\n\n return useMemo<ViewportHelperFunctions>(() => {\n return {\n zoomIn: (options) =>\n store.getState().panZoom?.scaleBy(1.2, { duration: options?.duration }),\n zoomOut: (options) =>\n store\n .getState()\n .panZoom?.scaleBy(1 / 1.2, { duration: options?.duration }),\n zoomTo: (zoomLevel, options) =>\n store\n .getState()\n .panZoom?.scaleTo(zoomLevel, { duration: options?.duration }),\n getZoom: () => store.getState().transform[2],\n setViewport: (viewport, options) => {\n const {\n transform: [tX, tY, tZoom],\n panZoom,\n } = store.getState();\n\n panZoom?.setViewport(\n {\n x: viewport.x ?? tX,\n y: viewport.y ?? tY,\n zoom: viewport.zoom ?? tZoom,\n },\n { duration: options?.duration },\n );\n },\n getViewport: () => {\n const [x, y, zoom] = store.getState().transform;\n return { x, y, zoom };\n },\n fitView: (options) => {\n const {\n nodeLookup,\n width,\n height,\n nodeOrigin,\n minZoom,\n maxZoom,\n panZoom,\n } = store.getState();\n\n return panZoom\n ? fitView(\n {\n nodeLookup,\n width,\n height,\n nodeOrigin,\n minZoom,\n maxZoom,\n panZoom,\n },\n options,\n )\n : false;\n },\n setCenter: (x, y, options) => {\n const { width, height, maxZoom, panZoom } = store.getState();\n const nextZoom =\n typeof options?.zoom !== 'undefined' ? options.zoom : maxZoom;\n const centerX = width / 2 - x * nextZoom;\n const centerY = height / 2 - y * nextZoom;\n\n panZoom?.setViewport(\n {\n x: centerX,\n y: centerY,\n zoom: nextZoom,\n },\n { duration: options?.duration },\n );\n },\n fitBounds: (bounds, options) => {\n const { width, height, minZoom, maxZoom, panZoom } = store.getState();\n const viewport = getViewportForBounds(\n bounds,\n width,\n height,\n minZoom,\n maxZoom,\n options?.padding ?? 0.1,\n );\n\n panZoom?.setViewport(viewport, { duration: options?.duration });\n },\n screenToFlowPosition: (\n clientPosition: XYPosition,\n options: { snapToGrid: boolean } = { snapToGrid: true },\n ) => {\n const { transform, snapGrid, domNode } = store.getState();\n\n if (!domNode) {\n return clientPosition;\n }\n\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n\n const correctedPosition = {\n x: clientPosition.x - domX,\n y: clientPosition.y - domY,\n };\n\n return pointToRendererPoint(\n correctedPosition,\n transform,\n options.snapToGrid,\n snapGrid,\n );\n },\n flowToScreenPosition: (flowPosition: XYPosition) => {\n const { transform, domNode } = store.getState();\n\n if (!domNode) {\n return flowPosition;\n }\n\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n const rendererPosition = rendererPointToPoint(flowPosition, transform);\n\n return {\n x: rendererPosition.x + domX,\n y: rendererPosition.y + domY,\n };\n },\n };\n }, []);\n};\n\nexport default useViewportHelper;\n","import { useMemo } from 'react';\n\nimport { useStore, useStoreApi } from './useStore';\nimport { useBatchContext } from '../components/BatchProvider';\nimport useViewportHelper from './useViewportHelper';\nimport { Node, Edge, InkFlowState, InternalNode } from '../types';\nimport { Rect, EdgeRemoveChange, NodeRemoveChange } from '../types/system';\nimport {\n nodeToRect,\n getOverlappingArea,\n isNode,\n evaluateAbsolutePosition,\n isRectObject,\n} from '../utils/general';\nimport { getElementsToRemove } from '../utils/graph';\nimport { GeneralHelpers, InkFlowInstance } from '../types/instance';\nimport { elementToRemoveChange } from '../utils/changes';\n\nconst selector = (s: InkFlowState) => !!s.panZoom;\n\n/**\n * Hook for accessing the ReactFlow instance.\n *\n * @public\n * @returns ReactFlowInstance\n */\nexport function useInkFlow<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>(): InkFlowInstance<NodeType, EdgeType> {\n const viewportHelper = useViewportHelper();\n const store = useStoreApi();\n const batchContext = useBatchContext();\n const viewportInitialized = useStore(selector);\n\n const generalHelper = useMemo<GeneralHelpers<NodeType, EdgeType>>(() => {\n const getInternalNode: GeneralHelpers<\n NodeType,\n EdgeType\n >['getInternalNode'] = (id) =>\n store.getState().nodeLookup.get(id) as InternalNode<NodeType>;\n\n const setNodes: GeneralHelpers<NodeType, EdgeType>['setNodes'] = (\n payload,\n ) => {\n batchContext.nodeQueue.push(payload as NodeType[]);\n };\n\n const getNodeRect = (node: NodeType | { id: string }): Rect | null => {\n const { nodeLookup, nodeOrigin } = store.getState();\n\n const nodeToUse = isNode<NodeType>(node)\n ? node\n : nodeLookup.get(node.id)!;\n const position = nodeToUse.parentId\n ? evaluateAbsolutePosition(\n nodeToUse.position,\n nodeToUse.parentId,\n nodeLookup,\n nodeOrigin,\n )\n : nodeToUse.position;\n\n const nodeWithPosition = {\n id: nodeToUse.id,\n position,\n width: nodeToUse.measured?.width ?? nodeToUse.width,\n height: nodeToUse.measured?.height ?? nodeToUse.height,\n data: nodeToUse.data,\n };\n\n return nodeToRect(nodeWithPosition);\n };\n\n const updateNode: GeneralHelpers<NodeType, EdgeType>['updateNode'] = (\n id,\n nodeUpdate,\n options = { replace: false },\n ) => {\n setNodes((prevNodes) =>\n prevNodes.map((node) => {\n if (node.id === id) {\n const nextNode =\n typeof nodeUpdate === 'function'\n ? nodeUpdate(node as NodeType)\n : nodeUpdate;\n return options.replace && isNode(nextNode)\n ? (nextNode as NodeType)\n : { ...node, ...nextNode };\n }\n\n return node;\n }),\n );\n };\n\n return {\n getNodes: () =>\n store.getState().nodes.map((n) => ({ ...n })) as NodeType[],\n getNode: (id) => getInternalNode(id)?.internals.userNode as NodeType,\n getInternalNode,\n getEdges: () => {\n const { edges = [] } = store.getState();\n return edges.map((e) => ({ ...e })) as EdgeType[];\n },\n getEdge: (id) => store.getState().edgeLookup.get(id) as EdgeType,\n setNodes,\n setEdges: (payload) => {\n batchContext.edgeQueue.push(payload as EdgeType[]);\n },\n addNodes: (payload) => {\n const newNodes = Array.isArray(payload) ? payload : [payload];\n batchContext.nodeQueue.push((nodes) => [...nodes, ...newNodes]);\n },\n addEdges: (payload) => {\n const newEdges = Array.isArray(payload) ? payload : [payload];\n batchContext.edgeQueue.push((edges) => [...edges, ...newEdges]);\n },\n toObject: () => {\n const { nodes = [], edges = [], transform } = store.getState();\n const [x, y, zoom] = transform;\n return {\n nodes: nodes.map((n) => ({ ...n })) as NodeType[],\n edges: edges.map((e) => ({ ...e })) as EdgeType[],\n viewport: {\n x,\n y,\n zoom,\n },\n };\n },\n deleteElements: async ({\n nodes: nodesToRemove = [],\n edges: edgesToRemove = [],\n }) => {\n const {\n nodes,\n edges,\n onNodesDelete,\n onEdgesDelete,\n triggerNodeChanges,\n triggerEdgeChanges,\n onDelete,\n onBeforeDelete,\n } = store.getState();\n const { nodes: matchingNodes, edges: matchingEdges } =\n await getElementsToRemove({\n nodesToRemove,\n edgesToRemove,\n nodes,\n edges,\n onBeforeDelete,\n });\n\n const hasMatchingEdges = matchingEdges.length > 0;\n const hasMatchingNodes = matchingNodes.length > 0;\n\n if (hasMatchingEdges) {\n const edgeChanges: EdgeRemoveChange[] = matchingEdges.map(\n elementToRemoveChange,\n );\n\n onEdgesDelete?.(matchingEdges);\n triggerEdgeChanges(edgeChanges);\n }\n\n if (hasMatchingNodes) {\n const nodeChanges: NodeRemoveChange[] = matchingNodes.map(\n elementToRemoveChange,\n );\n\n onNodesDelete?.(matchingNodes);\n triggerNodeChanges(nodeChanges);\n }\n\n if (hasMatchingNodes || hasMatchingEdges) {\n onDelete?.({ nodes: matchingNodes, edges: matchingEdges });\n }\n\n return { deletedNodes: matchingNodes, deletedEdges: matchingEdges };\n },\n getIntersectingNodes: (nodeOrRect, partially = true, nodes) => {\n const isRect = isRectObject(nodeOrRect);\n const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n const hasNodesOption = nodes !== undefined;\n\n if (!nodeRect) {\n return [];\n }\n\n return (nodes || store.getState().nodes).filter((n) => {\n const internalNode = store.getState().nodeLookup.get(n.id);\n\n if (\n internalNode &&\n !isRect &&\n (n.id === nodeOrRect!.id ||\n !internalNode.internals.positionAbsolute)\n ) {\n return false;\n }\n\n const currNodeRect = nodeToRect(hasNodesOption ? n : internalNode!);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n\n return (\n partiallyVisible ||\n overlappingArea >= nodeRect.width * nodeRect.height\n );\n }) as NodeType[];\n },\n isNodeIntersecting: (nodeOrRect, area, partially = true) => {\n const isRect = isRectObject(nodeOrRect);\n const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n\n if (!nodeRect) {\n return false;\n }\n\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n\n return (\n partiallyVisible ||\n overlappingArea >= nodeRect.width * nodeRect.height\n );\n },\n updateNode,\n updateNodeData: (id, dataUpdate, options = { replace: false }) => {\n updateNode(\n id,\n (node) => {\n const nextData =\n typeof dataUpdate === 'function' ? dataUpdate(node) : dataUpdate;\n return options.replace\n ? { ...node, data: nextData }\n : { ...node, data: { ...node.data, ...nextData } };\n },\n options,\n );\n },\n };\n }, []);\n\n return useMemo(() => {\n return {\n ...generalHelper,\n ...viewportHelper,\n viewportInitialized,\n };\n }, [viewportInitialized]);\n}\n","import { useEffect, useState } from 'react';\n\nimport { InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\nimport { InternalNodeUpdate } from '../../types/system';\n\nconst selector = (s: InkFlowState) => s.updateNodeInternals;\n\nexport function useResizeObserver() {\n const updateNodeInternals = useStore(selector);\n const [resizeObserver] = useState(() => {\n if (typeof ResizeObserver === 'undefined') {\n return null;\n }\n\n return new ResizeObserver((entries: ResizeObserverEntry[]) => {\n const updates = new Map<string, InternalNodeUpdate>();\n entries.forEach((entry: ResizeObserverEntry) => {\n const id = entry.target.getAttribute('data-id') as string;\n updates.set(id, {\n id,\n nodeElement: entry.target as HTMLDivElement,\n });\n });\n\n updateNodeInternals(updates);\n });\n });\n\n useEffect(() => {\n return () => {\n resizeObserver?.disconnect();\n };\n }, [resizeObserver]);\n\n return resizeObserver;\n}\n","import { useCallback } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore } from './useStore';\nimport type { Node, InkFlowState } from '../types';\nimport { getNodesInside } from '../utils/graph';\n\nconst selector = (onlyRenderVisible: boolean) => (s: InkFlowState) => {\n return onlyRenderVisible\n ? getNodesInside<Node>(\n s.nodeLookup,\n { x: 0, y: 0, width: s.width, height: s.height },\n s.transform,\n true,\n ).map((node) => node.id)\n : Array.from(s.nodeLookup.keys());\n};\n\n/**\n * Hook for getting the visible node ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible node ids\n */\nexport function useVisibleNodeIds(onlyRenderVisible: boolean) {\n const nodeIds = useStore(\n useCallback(selector(onlyRenderVisible), [onlyRenderVisible]),\n shallow,\n );\n\n return nodeIds;\n}\n","import { createContext, useContext } from 'react';\n\nexport const NodeIdContext = createContext<string | null>(null);\nexport const Provider = NodeIdContext.Provider;\nexport const Consumer = NodeIdContext.Consumer;\n\nexport const useNodeId = (): string | null => {\n const nodeId = useContext(NodeIdContext);\n return nodeId;\n};\n\nexport default NodeIdContext;\n","import { CSSProperties } from 'react';\n\nimport { useStore } from '../../hooks/useStore';\nimport type { InkFlowState } from '../../types';\n\nconst style: CSSProperties = { display: 'none' };\nconst ariaLiveStyle: CSSProperties = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0px, 0px, 0px, 0px)',\n clipPath: 'inset(100%)',\n};\n\nexport const ARIA_NODE_DESC_KEY = 'ink-flow__node-desc';\nexport const ARIA_EDGE_DESC_KEY = 'ink-flow__edge-desc';\nexport const ARIA_LIVE_MESSAGE = 'ink-flow__aria-live';\n\nconst selector = (s: InkFlowState) => s.ariaLiveMessage;\n\nfunction AriaLiveMessage({ rfId }: { rfId: string }) {\n const ariaLiveMessage = useStore(selector);\n\n return (\n <div\n id={`${ARIA_LIVE_MESSAGE}-${rfId}`}\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n style={ariaLiveStyle}\n >\n {ariaLiveMessage}\n </div>\n );\n}\n\nexport function A11yDescriptions({\n rfId,\n disableKeyboardA11y,\n}: {\n rfId: string;\n disableKeyboardA11y: boolean;\n}) {\n return (\n <>\n <div id={`${ARIA_NODE_DESC_KEY}-${rfId}`} style={style}>\n Press enter or space to select a node.\n {!disableKeyboardA11y &&\n 'You can then use the arrow keys to move the node around.'}{' '}\n Press delete to remove it and escape to cancel.{' '}\n </div>\n <div id={`${ARIA_EDGE_DESC_KEY}-${rfId}`} style={style}>\n Press enter or space to select an edge. You can then press delete to\n remove it or escape to cancel.\n </div>\n {!disableKeyboardA11y && <AriaLiveMessage rfId={rfId} />}\n </>\n );\n}\n","import { Position } from '../../types/system';\n\nexport type GetBezierPathParams = {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n curvature?: number;\n};\n\nexport type GetControlWithCurvatureParams = {\n pos: Position;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n c: number;\n};\n\nexport function getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n}: {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n sourceControlX: number;\n sourceControlY: number;\n targetControlX: number;\n targetControlY: number;\n}): [number, number, number, number] {\n // cubic bezier t=0.5 mid point, not the actual mid point, but easy to calculate\n // https://stackoverflow.com/questions/67516101/how-to-find-distance-mid-point-of-bezier-curve\n const centerX =\n sourceX * 0.125 +\n sourceControlX * 0.375 +\n targetControlX * 0.375 +\n targetX * 0.125;\n const centerY =\n sourceY * 0.125 +\n sourceControlY * 0.375 +\n targetControlY * 0.375 +\n targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n\n return [centerX, centerY, offsetX, offsetY];\n}\n\nfunction calculateControlOffset(distance: number, curvature: number): number {\n if (distance >= 0) {\n return 0.5 * distance;\n }\n\n return curvature * 25 * Math.sqrt(-distance);\n}\n\nfunction getControlWithCurvature({\n pos,\n x1,\n y1,\n x2,\n y2,\n c,\n}: GetControlWithCurvatureParams): [number, number] {\n switch (pos) {\n case Position.Left:\n return [x1 - calculateControlOffset(x1 - x2, c), y1];\n case Position.Right:\n return [x1 + calculateControlOffset(x2 - x1, c), y1];\n case Position.Top:\n return [x1, y1 - calculateControlOffset(y1 - y2, c)];\n case Position.Bottom:\n return [x1, y1 + calculateControlOffset(y2 - y1, c)];\n }\n}\n\n/**\n * Get a bezier path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.sourcePosition - The position of the source handle (default: Position.Bottom)\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @param params.targetPosition - The position of the target handle (default: Position.Top)\n * @param params.curvature - The curvature of the bezier edge\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n});\n */\nexport function getBezierPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n curvature = 0.25,\n}: GetBezierPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature,\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\n","import { errorMessages } from '../../constants';\nimport {\n Connection,\n EdgeBase,\n InternalNodeBase,\n Transform,\n} from '../../types/system';\nimport {\n getOverlappingArea,\n boxToRect,\n nodeToBox,\n getBoundsOfBoxes,\n devWarn,\n} from '../general';\nimport { isEdgeBase } from '../graph';\n\n// this is used for straight edges and simple smoothstep edges (LTR, RTL, BTT, TTB)\nexport function getEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n}: {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n}): [number, number, number, number] {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n return [centerX, centerY, xOffset, yOffset];\n}\n\nexport type GetEdgeZIndexParams = {\n sourceNode: InternalNodeBase;\n targetNode: InternalNodeBase;\n selected?: boolean;\n zIndex?: number;\n elevateOnSelect?: boolean;\n};\n\nexport function getElevatedEdgeZIndex({\n sourceNode,\n targetNode,\n selected = false,\n zIndex = 0,\n elevateOnSelect = false,\n}: GetEdgeZIndexParams): number {\n if (!elevateOnSelect) {\n return zIndex;\n }\n\n const edgeOrConnectedNodeSelected =\n selected || targetNode.selected || sourceNode.selected;\n const selectedZIndex = Math.max(\n sourceNode.internals.z || 0,\n targetNode.internals.z || 0,\n 1000,\n );\n\n return zIndex + (edgeOrConnectedNodeSelected ? selectedZIndex : 0);\n}\n\ntype IsEdgeVisibleParams = {\n sourceNode: InternalNodeBase;\n targetNode: InternalNodeBase;\n width: number;\n height: number;\n transform: Transform;\n};\n\nexport function isEdgeVisible({\n sourceNode,\n targetNode,\n width,\n height,\n transform,\n}: IsEdgeVisibleParams): boolean {\n const edgeBox = getBoundsOfBoxes(\n nodeToBox(sourceNode),\n nodeToBox(targetNode),\n );\n\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n\n const viewRect = {\n x: -transform[0] / transform[2],\n y: -transform[1] / transform[2],\n width: width / transform[2],\n height: height / transform[2],\n };\n\n return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0;\n}\n\nconst getEdgeId = ({\n source,\n sourceHandle,\n target,\n targetHandle,\n}: Connection | EdgeBase): string =>\n `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`;\n\nconst connectionExists = (edge: EdgeBase, edges: EdgeBase[]) => {\n return edges.some(\n (el) =>\n el.source === edge.source &&\n el.target === edge.target &&\n (el.sourceHandle === edge.sourceHandle ||\n (!el.sourceHandle && !edge.sourceHandle)) &&\n (el.targetHandle === edge.targetHandle ||\n (!el.targetHandle && !edge.targetHandle)),\n );\n};\n\n/**\n * This util is a convenience function to add a new Edge to an array of edges\n * @remarks It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one.\n * @public\n * @param edgeParams - Either an Edge or a Connection you want to add\n * @param edges - The array of all current edges\n * @returns A new array of edges with the new edge added\n */\nexport const addEdge = <EdgeType extends EdgeBase>(\n edgeParams: EdgeType | Connection,\n edges: EdgeType[],\n): EdgeType[] => {\n if (!edgeParams.source || !edgeParams.target) {\n devWarn('006', errorMessages['error006']());\n\n return edges;\n }\n\n let edge: EdgeType;\n if (isEdgeBase(edgeParams)) {\n edge = { ...edgeParams };\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams),\n } as EdgeType;\n }\n\n if (connectionExists(edge, edges)) {\n return edges;\n }\n\n if (edge.sourceHandle === null) {\n delete edge.sourceHandle;\n }\n\n if (edge.targetHandle === null) {\n delete edge.targetHandle;\n }\n\n return edges.concat(edge);\n};\n\nexport type UpdateEdgeOptions = {\n shouldReplaceId?: boolean;\n};\n\n/**\n * A handy utility to update an existing Edge with new properties\n * @param oldEdge - The edge you want to update\n * @param newConnection - The new connection you want to update the edge with\n * @param edges - The array of all current edges\n * @param options.shouldReplaceId - should the id of the old edge be replaced with the new connection id\n * @returns the updated edges array\n */\nexport const updateEdge = <EdgeType extends EdgeBase>(\n oldEdge: EdgeType,\n newConnection: Connection,\n edges: EdgeType[],\n options: UpdateEdgeOptions = { shouldReplaceId: true },\n): EdgeType[] => {\n const { id: oldEdgeId, ...rest } = oldEdge;\n\n if (!newConnection.source || !newConnection.target) {\n devWarn('006', errorMessages['error006']());\n\n return edges;\n }\n\n const foundEdge = edges.find((e) => e.id === oldEdge.id) as EdgeType;\n\n if (!foundEdge) {\n devWarn('007', errorMessages['error007'](oldEdgeId));\n\n return edges;\n }\n\n // Remove old edge and create the new edge with parameters of old edge.\n const edge = {\n ...rest,\n id: options.shouldReplaceId ? getEdgeId(newConnection) : oldEdgeId,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle,\n } as EdgeType;\n\n return edges.filter((e) => e.id !== oldEdgeId).concat(edge);\n};\n","import { Position, XYPosition } from '../../types/system';\nimport { getEdgeCenter } from './general';\n\nexport interface GetSmoothStepPathParams {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n borderRadius?: number;\n centerX?: number;\n centerY?: number;\n offset?: number;\n}\n\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 },\n};\n\nconst getDirection = ({\n source,\n sourcePosition = Position.Bottom,\n target,\n}: {\n source: XYPosition;\n sourcePosition: Position;\n target: XYPosition;\n}): XYPosition => {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n};\n\nconst distance = (a: XYPosition, b: XYPosition) =>\n Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n\n// ith this function we try to mimic a orthogonal edge routing behaviour\n// It's not as good as a real orthogonal edge routing but it's faster and good enough as a default for step and smooth step edges\nfunction getPoints({\n source,\n sourcePosition = Position.Bottom,\n target,\n targetPosition = Position.Top,\n center,\n offset,\n}: {\n source: XYPosition;\n sourcePosition: Position;\n target: XYPosition;\n targetPosition: Position;\n center: Partial<XYPosition>;\n offset: number;\n}): [XYPosition[], number, number, number, number] {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped: XYPosition = {\n x: source.x + sourceDir.x * offset,\n y: source.y + sourceDir.y * offset,\n };\n const targetGapped: XYPosition = {\n x: target.x + targetDir.x * offset,\n y: target.y + targetDir.y * offset,\n };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped,\n });\n const dirAccessor = dir.x !== 0 ? 'x' : 'y';\n const currDir = dir[dirAccessor];\n\n let points: XYPosition[] = [];\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n\n const [defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY] =\n getEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y,\n });\n\n // opposite handle positions, default case\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n centerX = center.x ?? defaultCenterX;\n centerY = center.y ?? defaultCenterY;\n // --->\n // |\n // >---\n const verticalSplit: XYPosition[] = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y },\n ];\n // |\n // ---\n // |\n const horizontalSplit: XYPosition[] = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY },\n ];\n\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n // sourceTarget means we take x from source and y from target, targetSource is the opposite\n const sourceTarget: XYPosition[] = [\n { x: sourceGapped.x, y: targetGapped.y },\n ];\n const targetSource: XYPosition[] = [\n { x: targetGapped.x, y: sourceGapped.y },\n ];\n // this handles edges with same handle positions\n if (dirAccessor === 'x') {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n } else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n\n // if an edge goes from right to right for example (sourcePosition === targetPosition) and the distance between source.x and target.x is less than the offset, the added point and the gapped source/target will overlap. This leads to a weird edge path. To avoid this we add a gapOffset to the source/target\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] =\n (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) *\n gapOffset;\n } else {\n targetGapOffset[dirAccessor] =\n (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) *\n gapOffset;\n }\n }\n }\n\n // these are conditions for handling mixed handle positions like Right -> Bottom for example\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x';\n const isSameDir =\n sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo =\n sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo =\n sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget =\n (sourceDir[dirAccessor] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) ||\n (isSameDir && sourceLtTargetOppo))) ||\n (sourceDir[dirAccessor] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) ||\n (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = dirAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n\n const sourceGapPoint = {\n x: sourceGapped.x + sourceGapOffset.x,\n y: sourceGapped.y + sourceGapOffset.y,\n };\n const targetGapPoint = {\n x: targetGapped.x + targetGapOffset.x,\n y: targetGapped.y + targetGapOffset.y,\n };\n const maxXDistance = Math.max(\n Math.abs(sourceGapPoint.x - points[0].x),\n Math.abs(targetGapPoint.x - points[0].x),\n );\n const maxYDistance = Math.max(\n Math.abs(sourceGapPoint.y - points[0].y),\n Math.abs(targetGapPoint.y - points[0].y),\n );\n\n // we want to place the label on the longest segment of the edge\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n } else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n\n const pathPoints = [\n source,\n {\n x: sourceGapped.x + sourceGapOffset.x,\n y: sourceGapped.y + sourceGapOffset.y,\n },\n ...points,\n {\n x: targetGapped.x + targetGapOffset.x,\n y: targetGapped.y + targetGapOffset.y,\n },\n target,\n ];\n\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\n\nfunction getBend(\n a: XYPosition,\n b: XYPosition,\n c: XYPosition,\n size: number,\n): string {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n\n // no bend\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${x} ${y}`;\n }\n\n // first segment is horizontal\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir},${y}Q ${x},${y} ${x},${\n y + bendSize * yDir\n }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\n\n/**\n * Get a smooth step path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.sourcePosition - The position of the source handle (default: Position.Bottom)\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @param params.targetPosition - The position of the target handle (default: Position.Top)\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n });\n */\nexport function getSmoothStepPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n borderRadius = 5,\n centerX,\n centerY,\n offset = 20,\n}: GetSmoothStepPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset,\n });\n\n const path = points.reduce<string>((res, p, i) => {\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n } else {\n segment = `${i === 0 ? 'M' : 'L'}${p.x} ${p.y}`;\n }\n\n res += segment;\n\n return res;\n }, '');\n\n return [path, labelX, labelY, offsetX, offsetY];\n}\n","// this functions collects all handles and adds an absolute position\n\nimport {\n InternalNodeBase,\n NodeHandleBounds,\n HandleType,\n ConnectionHandle,\n XYPosition,\n NodeLookup,\n ConnectionStatus,\n} from '../../types/system';\n\n// so that we can later find the closest handle to the mouse position\nexport function getHandles(\n node: InternalNodeBase,\n handleBounds: NodeHandleBounds,\n type: HandleType,\n currentHandle: string,\n): ConnectionHandle[] {\n return (handleBounds[type] || []).reduce<ConnectionHandle[]>((res, h) => {\n if (`${node.id}-${h.id}-${type}` !== currentHandle) {\n res.push({\n id: h.id || null,\n type,\n nodeId: node.id,\n x: node.internals.positionAbsolute.x + h.x + h.width / 2,\n y: node.internals.positionAbsolute.y + h.y + h.height / 2,\n });\n }\n return res;\n }, []);\n}\n\nexport function getClosestHandle(\n pos: XYPosition,\n connectionRadius: number,\n handles: ConnectionHandle[],\n): ConnectionHandle | null {\n let closestHandles: ConnectionHandle[] = [];\n let minDistance = Infinity;\n\n for (const handle of handles) {\n const distance = Math.sqrt(\n Math.pow(handle.x - pos.x, 2) + Math.pow(handle.y - pos.y, 2),\n );\n if (distance <= connectionRadius) {\n if (distance < minDistance) {\n closestHandles = [handle];\n } else if (distance === minDistance) {\n // when multiple handles are on the same distance we collect all of them\n closestHandles.push(handle);\n }\n minDistance = distance;\n }\n }\n\n if (!closestHandles.length) {\n return null;\n }\n\n return closestHandles.length === 1\n ? closestHandles[0]\n : // if multiple handles are layouted on top of each other we take the one with type = target because it's more likely that the user wants to connect to this one\n closestHandles.find((handle) => handle.type === 'target') ||\n closestHandles[0];\n}\n\ntype GetHandleLookupParams = {\n nodeLookup: NodeLookup;\n nodeId: string;\n handleId: string | null;\n handleType: string;\n};\n\nexport function getHandleLookup({\n nodeLookup,\n nodeId,\n handleId,\n handleType,\n}: GetHandleLookupParams): ConnectionHandle[] {\n const connectionHandles: ConnectionHandle[] = [];\n\n for (const [, node] of nodeLookup) {\n if (node.internals.handleBounds) {\n const id = `${nodeId}-${handleId}-${handleType}`;\n const sourceHandles = getHandles(\n node,\n node.internals.handleBounds,\n 'source',\n id,\n );\n const targetHandles = getHandles(\n node,\n node.internals.handleBounds,\n 'target',\n id,\n );\n connectionHandles.push(...sourceHandles, ...targetHandles);\n }\n }\n\n return connectionHandles;\n}\n\nexport function getHandleType(\n edgeUpdaterType: HandleType | undefined,\n handleDomNode: Element | null,\n): HandleType | null {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n } else if (handleDomNode?.classList.contains('target')) {\n return 'target';\n } else if (handleDomNode?.classList.contains('source')) {\n return 'source';\n }\n\n return null;\n}\n\nexport function getConnectionStatus(\n isInsideConnectionRadius: boolean,\n isHandleValid: boolean,\n) {\n let connectionStatus = null;\n\n if (isHandleValid) {\n connectionStatus = 'valid';\n } else if (isInsideConnectionRadius && !isHandleValid) {\n connectionStatus = 'invalid';\n }\n\n return connectionStatus as ConnectionStatus;\n}\n","import { IsValidConnection } from '../../types';\nimport {\n ConnectionMode,\n NodeLookup,\n HandleType,\n UpdateConnection,\n PanBy,\n OnConnectStart,\n OnConnect,\n OnConnectEnd,\n Transform,\n ConnectingHandle,\n ConnectionHandle,\n Connection,\n} from '../../types/system';\nimport { getHostForElement, getEventPosition } from '../dom';\nimport {\n calcAutoPan,\n pointToRendererPoint,\n rendererPointToPoint,\n} from '../general';\nimport {\n getClosestHandle,\n getConnectionStatus,\n getHandleLookup,\n getHandleType,\n} from './utils';\n\nexport type OnPointerDownParams = {\n autoPanOnConnect: boolean;\n connectionMode: ConnectionMode;\n connectionRadius: number;\n domNode: HTMLDivElement | null;\n handleId: string | null;\n nodeId: string;\n isTarget: boolean;\n nodeLookup: NodeLookup;\n lib: string;\n flowId: string | null;\n edgeUpdaterType?: HandleType;\n updateConnection: UpdateConnection;\n panBy: PanBy;\n cancelConnection: () => void;\n onConnectStart?: OnConnectStart;\n onConnect?: OnConnect;\n onConnectEnd?: OnConnectEnd;\n isValidConnection?: IsValidConnection;\n onEdgeUpdateEnd?: (evt: MouseEvent | TouchEvent) => void;\n getTransform: () => Transform;\n getConnectionStartHandle: () => ConnectingHandle | null;\n};\n\nexport type IsValidParams = {\n handle: Pick<ConnectionHandle, 'nodeId' | 'id' | 'type'> | null;\n connectionMode: ConnectionMode;\n fromNodeId: string;\n fromHandleId: string | null;\n fromType: HandleType;\n isValidConnection?: IsValidConnection;\n doc: Document | ShadowRoot;\n lib: string;\n flowId: string | null;\n};\n\nexport type XYHandleInstance = {\n onPointerDown: (\n event: MouseEvent | TouchEvent,\n params: OnPointerDownParams,\n ) => void;\n isValid: (event: MouseEvent | TouchEvent, params: IsValidParams) => Result;\n};\n\ntype Result = {\n handleDomNode: Element | null;\n isValid: boolean;\n connection: Connection | null;\n endHandle: ConnectingHandle | null;\n};\n\nconst alwaysValid = () => true;\n\nlet connectionStartHandle: ConnectingHandle | null = null;\n\nfunction onPointerDown(\n event: MouseEvent | TouchEvent,\n {\n connectionMode,\n connectionRadius,\n handleId,\n nodeId,\n edgeUpdaterType,\n isTarget,\n domNode,\n nodeLookup,\n lib,\n autoPanOnConnect,\n flowId,\n panBy,\n cancelConnection,\n onConnectStart,\n onConnect,\n onConnectEnd,\n isValidConnection = alwaysValid,\n onEdgeUpdateEnd,\n updateConnection,\n getTransform,\n getConnectionStartHandle,\n }: OnPointerDownParams,\n) {\n // when xyflow is used inside a shadow root we can't use document\n const doc = getHostForElement(event.target as HTMLElement);\n let autoPanId = 0;\n let closestHandle: ConnectionHandle | null;\n\n const { x, y } = getEventPosition(event);\n const clickedHandle = doc?.elementFromPoint(x, y);\n const handleType = getHandleType(edgeUpdaterType, clickedHandle);\n const containerBounds = domNode?.getBoundingClientRect();\n\n if (!containerBounds || !handleType) {\n return;\n }\n\n let connectionPosition = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n let connection: Connection | null = null;\n let isValid = false;\n let handleDomNode: Element | null = null;\n\n const handleLookup = getHandleLookup({\n nodeLookup,\n nodeId,\n handleId,\n handleType,\n });\n\n // when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas\n function autoPan(): void {\n if (!autoPanOnConnect || !containerBounds) {\n return;\n }\n const [x, y] = calcAutoPan(connectionPosition, containerBounds);\n\n panBy({ x, y });\n autoPanId = requestAnimationFrame(autoPan);\n }\n\n // Stays the same for all consecutive pointermove events\n connectionStartHandle = {\n nodeId,\n handleId,\n type: handleType,\n };\n\n updateConnection({\n connectionPosition,\n connectionStatus: null,\n // connectionNodeId etc will be removed in the next major in favor of connectionStartHandle\n connectionStartHandle,\n connectionEndHandle: null,\n });\n\n onConnectStart?.(event, { nodeId, handleId, handleType });\n\n function onPointerMove(event: MouseEvent | TouchEvent) {\n if (!getConnectionStartHandle()) {\n onPointerUp(event);\n }\n\n const transform = getTransform();\n connectionPosition = getEventPosition(event, containerBounds);\n closestHandle = getClosestHandle(\n pointToRendererPoint(connectionPosition, transform, false, [1, 1]),\n connectionRadius,\n handleLookup,\n );\n\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n\n const result = isValidHandle(event, {\n handle: closestHandle,\n connectionMode,\n fromNodeId: nodeId,\n fromHandleId: handleId,\n fromType: isTarget ? 'target' : 'source',\n isValidConnection,\n doc,\n lib,\n flowId,\n });\n\n handleDomNode = result.handleDomNode;\n connection = result.connection;\n isValid = result.isValid;\n\n updateConnection({\n connectionStartHandle,\n connectionPosition:\n closestHandle && isValid\n ? rendererPointToPoint(\n {\n x: closestHandle.x,\n y: closestHandle.y,\n },\n transform,\n )\n : connectionPosition,\n connectionStatus: getConnectionStatus(!!closestHandle, isValid),\n connectionEndHandle: result.endHandle,\n });\n }\n\n function onPointerUp(event: MouseEvent | TouchEvent) {\n if ((closestHandle || handleDomNode) && connection && isValid) {\n onConnect?.(connection);\n }\n\n // it's important to get a fresh reference from the store here\n // in order to get the latest state of onConnectEnd\n onConnectEnd?.(event);\n\n if (edgeUpdaterType) {\n onEdgeUpdateEnd?.(event);\n }\n\n cancelConnection();\n cancelAnimationFrame(autoPanId);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n handleDomNode = null;\n connectionStartHandle = null;\n\n doc.removeEventListener('mousemove', onPointerMove as EventListener);\n doc.removeEventListener('mouseup', onPointerUp as EventListener);\n\n doc.removeEventListener('touchmove', onPointerMove as EventListener);\n doc.removeEventListener('touchend', onPointerUp as EventListener);\n }\n\n doc.addEventListener('mousemove', onPointerMove as EventListener);\n doc.addEventListener('mouseup', onPointerUp as EventListener);\n\n doc.addEventListener('touchmove', onPointerMove as EventListener);\n doc.addEventListener('touchend', onPointerUp as EventListener);\n}\n\n// checks if and returns connection in fom of an object { source: 123, target: 312 }\nfunction isValidHandle(\n event: MouseEvent | TouchEvent,\n {\n handle,\n connectionMode,\n fromNodeId,\n fromHandleId,\n fromType,\n doc,\n lib,\n flowId,\n isValidConnection = alwaysValid,\n }: IsValidParams,\n) {\n const isTarget = fromType === 'target';\n const handleDomNode = handle\n ? doc.querySelector(\n `.${lib}-flow__handle[data-id=\"${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}\"]`,\n )\n : null;\n\n const { x, y } = getEventPosition(event);\n const handleBelow = doc.elementFromPoint(x, y);\n // we always want to prioritize the handle below the mouse cursor over the closest distance handle,\n // because it could be that the center of another handle is closer to the mouse pointer than the handle below the cursor\n const handleToCheck = handleBelow?.classList.contains(`${lib}-flow__handle`)\n ? handleBelow\n : handleDomNode;\n\n const result: Result = {\n handleDomNode: handleToCheck,\n isValid: false,\n connection: null,\n endHandle: null,\n };\n\n if (handleToCheck) {\n const handleType = getHandleType(undefined, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute('data-nodeid');\n const handleId = handleToCheck.getAttribute('data-handleid');\n const connectable = handleToCheck.classList.contains('connectable');\n const connectableEnd = handleToCheck.classList.contains('connectableend');\n\n if (!handleNodeId) {\n return result;\n }\n\n const connection: Connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId,\n };\n\n result.connection = connection;\n\n const isConnectable = connectable && connectableEnd;\n // in strict mode we don't allow target to target or source to source connections\n const isValid =\n isConnectable &&\n (connectionMode === ConnectionMode.Strict\n ? (isTarget && handleType === 'source') ||\n (!isTarget && handleType === 'target')\n : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n\n if (isValid) {\n result.endHandle = {\n nodeId: handleNodeId as string,\n handleId,\n type: handleType as HandleType,\n };\n\n result.isValid = isValidConnection(connection);\n }\n }\n\n return result;\n}\n\nexport const XYHandle: XYHandleInstance = {\n onPointerDown,\n isValid: isValidHandle,\n};\n","import {\n type HTMLAttributes,\n type MouseEvent as ReactMouseEvent,\n type TouchEvent as ReactTouchEvent,\n type ForwardedRef,\n memo,\n} from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { useNodeId } from '../../contexts/NodeIdContext';\nimport { errorMessages } from '../../constants';\nimport {\n HandleProps,\n HandleType,\n ConnectionMode,\n Position,\n Connection,\n} from '../../types/system';\nimport { isMouseEvent, getHostForElement } from '../../utils/dom';\nimport { fixedForwardRef } from '../../utils/general';\nimport { InkFlowState } from '../../types';\nimport { addEdge } from '../../utils/edges';\nimport { XYHandle } from '../../utils/xyhandle';\n\nexport interface HandleComponentProps\n extends HandleProps,\n Omit<HTMLAttributes<HTMLDivElement>, 'id'> {}\n\nconst selector = (s: InkFlowState) => ({\n connectOnClick: s.connectOnClick,\n noPanClassName: s.noPanClassName,\n rfId: s.rfId,\n});\n\nconst connectingSelector =\n (nodeId: string | null, handleId: string | null, type: HandleType) =>\n (state: InkFlowState) => {\n const {\n connectionStartHandle: startHandle,\n connectionEndHandle: endHandle,\n connectionClickStartHandle: clickHandle,\n connectionMode,\n connectionStatus,\n } = state;\n\n const connectingTo =\n endHandle?.nodeId === nodeId &&\n endHandle?.handleId === handleId &&\n endHandle?.type === type;\n\n return {\n connectingFrom:\n startHandle?.nodeId === nodeId &&\n startHandle?.handleId === handleId &&\n startHandle?.type === type,\n connectingTo,\n clickConnecting:\n clickHandle?.nodeId === nodeId &&\n clickHandle?.handleId === handleId &&\n clickHandle?.type === type,\n isPossibleEndHandle:\n connectionMode === ConnectionMode.Strict\n ? startHandle?.type !== type\n : nodeId !== startHandle?.nodeId ||\n handleId !== startHandle?.handleId,\n connectionInProcess: !!startHandle,\n valid: connectingTo && connectionStatus === 'valid',\n };\n };\n\nfunction HandleComponent(\n {\n type = 'source',\n position = Position.Top,\n isValidConnection,\n isConnectable = true,\n isConnectableStart = true,\n isConnectableEnd = true,\n id,\n onConnect,\n children,\n className,\n onMouseDown,\n onTouchStart,\n ...rest\n }: HandleComponentProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const handleId = id || null;\n const isTarget = type === 'target';\n const store = useStoreApi();\n const nodeId = useNodeId();\n const { connectOnClick, noPanClassName, rfId } = useStore(selector, shallow);\n const {\n connectingFrom,\n connectingTo,\n clickConnecting,\n isPossibleEndHandle,\n connectionInProcess,\n valid,\n } = useStore(connectingSelector(nodeId, handleId, type), shallow);\n\n if (!nodeId) {\n store.getState().onError?.('010', errorMessages['error010']());\n }\n\n const onConnectExtended = (params: Connection) => {\n const {\n defaultEdgeOptions,\n onConnect: onConnectAction,\n hasDefaultEdges,\n } = store.getState();\n\n const edgeParams = {\n ...defaultEdgeOptions,\n ...params,\n };\n if (hasDefaultEdges) {\n const { edges, setEdges } = store.getState();\n setEdges(addEdge(edgeParams, edges));\n }\n\n onConnectAction?.(edgeParams);\n onConnect?.(edgeParams);\n };\n\n const onPointerDown = (\n event: ReactMouseEvent<HTMLDivElement> | ReactTouchEvent<HTMLDivElement>,\n ) => {\n if (!nodeId) {\n return;\n }\n\n const isMouseTriggered = isMouseEvent(event.nativeEvent);\n\n if (\n isConnectableStart &&\n ((isMouseTriggered &&\n (event as ReactMouseEvent<HTMLDivElement>).button === 0) ||\n !isMouseTriggered)\n ) {\n const currentStore = store.getState();\n\n XYHandle.onPointerDown(event.nativeEvent, {\n autoPanOnConnect: currentStore.autoPanOnConnect,\n connectionMode: currentStore.connectionMode,\n connectionRadius: currentStore.connectionRadius,\n domNode: currentStore.domNode,\n nodeLookup: currentStore.nodeLookup,\n lib: currentStore.lib,\n isTarget,\n handleId,\n nodeId,\n flowId: currentStore.rfId,\n panBy: currentStore.panBy,\n cancelConnection: currentStore.cancelConnection,\n onConnectStart: currentStore.onConnectStart,\n onConnectEnd: currentStore.onConnectEnd,\n updateConnection: currentStore.updateConnection,\n onConnect: onConnectExtended,\n isValidConnection: isValidConnection || currentStore.isValidConnection,\n getTransform: () => store.getState().transform,\n getConnectionStartHandle: () => store.getState().connectionStartHandle,\n });\n }\n\n if (isMouseTriggered) {\n onMouseDown?.(event as ReactMouseEvent<HTMLDivElement>);\n } else {\n onTouchStart?.(event as ReactTouchEvent<HTMLDivElement>);\n }\n };\n\n const onClick = (event: ReactMouseEvent) => {\n const {\n onClickConnectStart,\n onClickConnectEnd,\n connectionClickStartHandle,\n connectionMode,\n isValidConnection: isValidConnectionStore,\n lib,\n rfId: flowId,\n } = store.getState();\n\n if (!nodeId || (!connectionClickStartHandle && !isConnectableStart)) {\n return;\n }\n\n if (!connectionClickStartHandle) {\n onClickConnectStart?.(event.nativeEvent, {\n nodeId,\n handleId,\n handleType: type,\n });\n store.setState({\n connectionClickStartHandle: { nodeId, type, handleId },\n });\n return;\n }\n\n const doc = getHostForElement(event.target as HTMLElement);\n const isValidConnectionHandler =\n isValidConnection || isValidConnectionStore;\n const { connection, isValid } = XYHandle.isValid(event.nativeEvent, {\n handle: {\n nodeId,\n id: handleId,\n type,\n },\n connectionMode,\n fromNodeId: connectionClickStartHandle.nodeId,\n fromHandleId: connectionClickStartHandle.handleId || null,\n fromType: connectionClickStartHandle.type,\n isValidConnection: isValidConnectionHandler,\n flowId,\n doc,\n lib,\n });\n\n if (isValid && connection) {\n onConnectExtended(connection);\n }\n\n onClickConnectEnd?.(event as unknown as MouseEvent);\n\n store.setState({ connectionClickStartHandle: null });\n };\n\n return (\n <div\n data-handleid={handleId}\n data-nodeid={nodeId}\n data-handlepos={position}\n data-id={`${rfId}-${nodeId}-${handleId}-${type}`}\n className={cc([\n 'ink-flow__handle',\n `ink-flow__handle-${position}`,\n 'nodrag',\n noPanClassName,\n className,\n {\n source: !isTarget,\n target: isTarget,\n connectable: isConnectable,\n connectablestart: isConnectableStart,\n connectableend: isConnectableEnd,\n clickconnecting: clickConnecting,\n connectingfrom: connectingFrom,\n connectingto: connectingTo,\n valid,\n // shows where you can start a connection from\n // and where you can end it while connecting\n connectionindicator:\n isConnectable &&\n (!connectionInProcess || isPossibleEndHandle) &&\n (connectionInProcess ? isConnectableEnd : isConnectableStart),\n },\n ])}\n onMouseDown={onPointerDown}\n onTouchStart={onPointerDown}\n onClick={connectOnClick ? onClick : undefined}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n/**\n * The Handle component is a UI element that is used to connect nodes.\n */\nexport const Handle = memo(fixedForwardRef(HandleComponent));\n","import { InputNode } from '../Nodes/InputNode';\nimport { DefaultNode } from '../Nodes/DefaultNode';\nimport { GroupNode } from '../Nodes/GroupNode';\nimport { OutputNode } from '../Nodes/OutputNode';\nimport type { InternalNode, Node, NodeTypes } from '../../types';\nimport { XYPosition } from '../../types/system';\n\nexport const arrowKeyDiffs: Record<string, XYPosition> = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 },\n};\n\nexport const builtinNodeTypes: NodeTypes = {\n input: InputNode,\n default: DefaultNode,\n output: OutputNode,\n group: GroupNode,\n};\n\nexport function getNodeInlineStyleDimensions<NodeType extends Node = Node>(\n node: InternalNode<NodeType>,\n): {\n width: number | string | undefined;\n height: number | string | undefined;\n} {\n if (node.internals.handleBounds === undefined) {\n return {\n width: node.width ?? node.initialWidth ?? node.style?.width,\n height: node.height ?? node.initialHeight ?? node.style?.height,\n };\n }\n\n return {\n width: node.width ?? node.style?.width,\n height: node.height ?? node.style?.height,\n };\n}\n","import { BuiltInNode } from '../../types';\nimport { NodeProps, Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function InputNode({\n data,\n isConnectable,\n sourcePosition = Position.Bottom,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n {data?.label}\n <Handle\n type=\"source\"\n position={sourcePosition}\n isConnectable={isConnectable}\n />\n </>\n );\n}\n","import { BuiltInNode, NodeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function DefaultNode({\n data,\n isConnectable,\n targetPosition = Position.Top,\n sourcePosition = Position.Bottom,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n <Handle\n type=\"target\"\n position={targetPosition}\n isConnectable={isConnectable}\n />\n {data?.label}\n <Handle\n type=\"source\"\n position={sourcePosition}\n isConnectable={isConnectable}\n />\n </>\n );\n}\n","import { BuiltInNode, NodeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function OutputNode({\n data,\n isConnectable,\n targetPosition = Position.Top,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n <Handle\n type=\"target\"\n position={targetPosition}\n isConnectable={isConnectable}\n />\n {data?.label}\n </>\n );\n}\n","export function GroupNode() {\n return null;\n}\n","import type { RefObject } from 'react';\nimport type { StoreApi } from 'zustand';\nimport { errorMessages } from '../../constants';\nimport { InkFlowState } from '../../types';\n\n// this handler is called by\n// 1. the click handler when node is not draggable or selectNodesOnDrag = false\n// or\n// 2. the on drag start handler when node is draggable and selectNodesOnDrag = true\nexport function handleNodeClick({\n id,\n store,\n unselect = false,\n nodeRef,\n}: {\n id: string;\n store: {\n getState: StoreApi<InkFlowState>['getState'];\n setState: StoreApi<InkFlowState>['setState'];\n };\n unselect?: boolean;\n nodeRef?: RefObject<HTMLDivElement>;\n}) {\n const {\n addSelectedNodes,\n unselectNodesAndEdges,\n multiSelectionActive,\n nodeLookup,\n onError,\n } = store.getState();\n const node = nodeLookup.get(id);\n\n if (!node) {\n onError?.('012', errorMessages['error012'](id));\n return;\n }\n\n store.setState({ nodesSelectionActive: false });\n\n if (!node.selected) {\n addSelectedNodes([id]);\n } else if (unselect || (node.selected && multiSelectionActive)) {\n unselectNodesAndEdges({ nodes: [node], edges: [] });\n\n requestAnimationFrame(() => nodeRef?.current?.blur());\n }\n}\n","import {\n NodeBase,\n NodeLookup,\n InternalNodeBase,\n XYPosition,\n NodeDragItem,\n} from '../../types/system';\n\nexport function isParentSelected<NodeType extends NodeBase>(\n node: NodeType,\n nodeLookup: NodeLookup,\n): boolean {\n if (!node.parentId) {\n return false;\n }\n\n const parentNode = nodeLookup.get(node.parentId);\n\n if (!parentNode) {\n return false;\n }\n\n if (parentNode.selected) {\n return true;\n }\n\n return isParentSelected(parentNode, nodeLookup);\n}\n\nexport function hasSelector(\n target: Element,\n selector: string,\n domNode: Element,\n): boolean {\n let current = target;\n\n do {\n if (current?.matches(selector)) return true;\n if (current === domNode) return false;\n current = current.parentElement as Element;\n } while (current);\n\n return false;\n}\n\n// looks for all selected nodes and created a NodeDragItem for each of them\nexport function getDragItems<NodeType extends NodeBase>(\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n nodesDraggable: boolean,\n mousePos: XYPosition,\n nodeId?: string,\n): Map<string, NodeDragItem> {\n const dragItems = new Map<string, NodeDragItem>();\n\n for (const [id, node] of nodeLookup) {\n if (\n (node.selected || node.id === nodeId) &&\n (!node.parentId || !isParentSelected(node, nodeLookup)) &&\n (node.draggable ||\n (nodesDraggable && typeof node.draggable === 'undefined'))\n ) {\n const internalNode = nodeLookup.get(id);\n\n if (internalNode) {\n dragItems.set(id, {\n id,\n position: internalNode.position || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - internalNode.internals.positionAbsolute.x,\n y: mousePos.y - internalNode.internals.positionAbsolute.y,\n },\n extent: internalNode.extent,\n parentId: internalNode.parentId,\n origin: internalNode.origin,\n expandParent: internalNode.expandParent,\n internals: {\n positionAbsolute: internalNode.internals.positionAbsolute || {\n x: 0,\n y: 0,\n },\n },\n measured: {\n width: internalNode.measured.width ?? 0,\n height: internalNode.measured.height ?? 0,\n },\n });\n }\n }\n }\n\n return dragItems;\n}\n\n// returns two params:\n// 1. the dragged node (or the first of the list, if we are dragging a node selection)\n// 2. array of selected nodes (for multi selections)\nexport function getEventHandlerParams<NodeType extends InternalNodeBase>({\n nodeId,\n dragItems,\n nodeLookup,\n}: {\n nodeId?: string;\n dragItems: Map<string, NodeDragItem>;\n nodeLookup: Map<string, NodeType>;\n}): [NodeBase, NodeBase[]] {\n const nodesFromDragItems: NodeBase[] = [];\n\n for (const [id, dragItem] of dragItems) {\n const node = nodeLookup.get(id)?.internals.userNode;\n\n if (node) {\n nodesFromDragItems.push({\n ...node,\n position: dragItem.position,\n });\n }\n }\n\n if (!nodeId) {\n return [nodesFromDragItems[0], nodesFromDragItems];\n }\n\n const node = nodeLookup.get(nodeId)!.internals.userNode;\n\n return [\n {\n ...node,\n position: dragItems.get(nodeId)?.position || node.position,\n },\n nodesFromDragItems,\n ];\n}\n","import { drag } from 'd3-drag';\nimport { select, type Selection } from 'd3-selection';\n\nimport { getDragItems, getEventHandlerParams, hasSelector } from './utils';\nimport {\n NodeDragItem,\n NodeBase,\n InternalNodeBase,\n EdgeBase,\n CoordinateExtent,\n SnapGrid,\n NodeOrigin,\n Transform,\n PanBy,\n OnError,\n OnSelectionDrag,\n UpdateNodePositions,\n XYPosition,\n Box,\n UseDragEvent,\n} from '../../types/system';\nimport { getPointerPosition, getEventPosition } from '../dom';\nimport { calcAutoPan, rectToBox, snapPosition } from '../general';\nimport { getInternalNodesBounds, calculateNodePosition } from '../graph';\n\nexport type OnDrag = (\n event: MouseEvent,\n dragItems: Map<string, NodeDragItem>,\n node: NodeBase,\n nodes: NodeBase[],\n) => void;\n\ntype StoreItems<OnNodeDrag> = {\n nodes: NodeBase[];\n nodeLookup: Map<string, InternalNodeBase>;\n edges: EdgeBase[];\n nodeExtent: CoordinateExtent;\n snapGrid: SnapGrid;\n snapToGrid: boolean;\n nodeOrigin: NodeOrigin;\n multiSelectionActive: boolean;\n domNode?: Element | null;\n transform: Transform;\n autoPanOnNodeDrag: boolean;\n nodesDraggable: boolean;\n selectNodesOnDrag: boolean;\n nodeDragThreshold: number;\n panBy: PanBy;\n unselectNodesAndEdges: (params?: {\n nodes?: NodeBase[];\n edges?: EdgeBase[];\n }) => void;\n onError?: OnError;\n onNodeDragStart?: OnNodeDrag;\n onNodeDrag?: OnNodeDrag;\n onNodeDragStop?: OnNodeDrag;\n onSelectionDragStart?: OnSelectionDrag;\n onSelectionDrag?: OnSelectionDrag;\n onSelectionDragStop?: OnSelectionDrag;\n updateNodePositions: UpdateNodePositions;\n};\n\nexport type XYDragParams<OnNodeDrag> = {\n getStoreItems: () => StoreItems<OnNodeDrag>;\n onDragStart?: OnDrag;\n onDrag?: OnDrag;\n onDragStop?: OnDrag;\n onNodeMouseDown?: (id: string) => void;\n};\n\nexport type XYDragInstance = {\n update: (params: DragUpdateParams) => void;\n destroy: () => void;\n};\n\nexport type DragUpdateParams = {\n noDragClassName?: string;\n handleSelector?: string;\n isSelectable?: boolean;\n nodeId?: string;\n domNode: Element;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function XYDrag<\n OnNodeDrag extends (e: any, nodes: any, node: any) => void | undefined,\n>({\n onNodeMouseDown,\n getStoreItems,\n onDragStart,\n onDrag,\n onDragStop,\n}: XYDragParams<OnNodeDrag>): XYDragInstance {\n let lastPos: { x: number | null; y: number | null } = { x: null, y: null };\n let autoPanId = 0;\n let dragItems = new Map<string, NodeDragItem>();\n let autoPanStarted = false;\n let mousePosition: XYPosition = { x: 0, y: 0 };\n let containerBounds: DOMRect | null = null;\n let dragStarted = false;\n let d3Selection: Selection<Element, unknown, null, undefined> | null = null;\n\n // public functions\n function update({\n noDragClassName,\n handleSelector,\n domNode,\n isSelectable,\n nodeId,\n }: DragUpdateParams) {\n d3Selection = select(domNode);\n function updateNodes({ x, y }: XYPosition, dragEvent: MouseEvent | null) {\n const {\n nodeLookup,\n nodeExtent,\n snapGrid,\n snapToGrid,\n nodeOrigin,\n onNodeDrag,\n onSelectionDrag,\n onError,\n updateNodePositions,\n } = getStoreItems();\n\n lastPos = { x, y };\n\n let hasChange = false;\n let nodesBox: Box = { x: 0, y: 0, x2: 0, y2: 0 };\n\n if (dragItems.size > 1 && nodeExtent) {\n const rect = getInternalNodesBounds(dragItems, { nodeOrigin });\n nodesBox = rectToBox(rect);\n }\n\n for (const [id, dragItem] of dragItems) {\n let nextPosition = {\n x: x - dragItem.distance.x,\n y: y - dragItem.distance.y,\n };\n\n if (snapToGrid) {\n nextPosition = snapPosition(nextPosition, snapGrid);\n }\n\n // if there is selection with multiple nodes and a node extent is set, we need to adjust the node extent for each node\n // based on its position so that the node stays at it's position relative to the selection.\n let adjustedNodeExtent: CoordinateExtent = [\n [nodeExtent[0][0], nodeExtent[0][1]],\n [nodeExtent[1][0], nodeExtent[1][1]],\n ];\n\n if (dragItems.size > 1 && nodeExtent && !dragItem.extent) {\n const { positionAbsolute } = dragItem.internals;\n const x1 = positionAbsolute.x - nodesBox.x + nodeExtent[0][0];\n const x2 =\n positionAbsolute.x +\n dragItem.measured.width -\n nodesBox.x2 +\n nodeExtent[1][0];\n\n const y1 = positionAbsolute.y - nodesBox.y + nodeExtent[0][1];\n const y2 =\n positionAbsolute.y +\n dragItem.measured.height -\n nodesBox.y2 +\n nodeExtent[1][1];\n\n adjustedNodeExtent = [\n [x1, y1],\n [x2, y2],\n ];\n }\n\n const { position, positionAbsolute } = calculateNodePosition({\n nodeId: id,\n nextPosition,\n nodeLookup,\n nodeExtent: adjustedNodeExtent,\n nodeOrigin,\n onError,\n });\n\n // we want to make sure that we only fire a change event when there is a change\n hasChange =\n hasChange ||\n dragItem.position.x !== position.x ||\n dragItem.position.y !== position.y;\n\n dragItem.position = position;\n dragItem.internals.positionAbsolute = positionAbsolute;\n }\n\n if (!hasChange) {\n return;\n }\n\n updateNodePositions(dragItems, true);\n\n if (dragEvent && (onDrag || onNodeDrag || (!nodeId && onSelectionDrag))) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDrag?.(dragEvent, dragItems, currentNode, currentNodes);\n onNodeDrag?.(dragEvent, currentNode, currentNodes);\n\n if (!nodeId) {\n onSelectionDrag?.(dragEvent, currentNodes);\n }\n }\n }\n\n function autoPan() {\n if (!containerBounds) {\n return;\n }\n\n const [xMovement, yMovement] = calcAutoPan(\n mousePosition,\n containerBounds,\n );\n\n if (xMovement !== 0 || yMovement !== 0) {\n const { transform, panBy } = getStoreItems();\n\n lastPos.x = (lastPos.x ?? 0) - xMovement / transform[2];\n lastPos.y = (lastPos.y ?? 0) - yMovement / transform[2];\n\n if (panBy({ x: xMovement, y: yMovement })) {\n updateNodes(lastPos as XYPosition, null);\n }\n }\n autoPanId = requestAnimationFrame(autoPan);\n }\n\n function startDrag(event: UseDragEvent) {\n const {\n nodeLookup,\n multiSelectionActive,\n nodesDraggable,\n transform,\n snapGrid,\n snapToGrid,\n selectNodesOnDrag,\n onNodeDragStart,\n onSelectionDragStart,\n unselectNodesAndEdges,\n } = getStoreItems();\n\n dragStarted = true;\n\n if (\n (!selectNodesOnDrag || !isSelectable) &&\n !multiSelectionActive &&\n nodeId\n ) {\n if (!nodeLookup.get(nodeId)?.selected) {\n // we need to reset selected nodes when selectNodesOnDrag=false\n unselectNodesAndEdges();\n }\n }\n\n if (isSelectable && selectNodesOnDrag && nodeId) {\n onNodeMouseDown?.(nodeId);\n }\n\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n lastPos = pointerPos;\n dragItems = getDragItems(nodeLookup, nodesDraggable, pointerPos, nodeId);\n\n if (\n dragItems.size > 0 &&\n (onDragStart || onNodeDragStart || (!nodeId && onSelectionDragStart))\n ) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDragStart?.(\n event.sourceEvent as MouseEvent,\n dragItems,\n currentNode,\n currentNodes,\n );\n onNodeDragStart?.(\n event.sourceEvent as MouseEvent,\n currentNode,\n currentNodes,\n );\n\n if (!nodeId) {\n onSelectionDragStart?.(event.sourceEvent as MouseEvent, currentNodes);\n }\n }\n }\n\n const d3DragInstance = drag()\n .on('start', (event: UseDragEvent) => {\n const { domNode, nodeDragThreshold, transform, snapGrid, snapToGrid } =\n getStoreItems();\n\n if (nodeDragThreshold === 0) {\n startDrag(event);\n }\n\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n lastPos = pointerPos;\n containerBounds = domNode?.getBoundingClientRect() || null;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds!);\n })\n .on('drag', (event: UseDragEvent) => {\n const {\n autoPanOnNodeDrag,\n transform,\n snapGrid,\n snapToGrid,\n nodeDragThreshold,\n } = getStoreItems();\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n\n if (!autoPanStarted && autoPanOnNodeDrag && dragStarted) {\n autoPanStarted = true;\n autoPan();\n }\n\n if (!dragStarted) {\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance = Math.sqrt(x * x + y * y);\n\n if (distance > nodeDragThreshold) {\n startDrag(event);\n }\n }\n\n // skip events without movement\n if (\n (lastPos.x !== pointerPos.xSnapped ||\n lastPos.y !== pointerPos.ySnapped) &&\n dragItems &&\n dragStarted\n ) {\n // dragEvent = event.sourceEvent as MouseEvent;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds!);\n\n updateNodes(pointerPos, event.sourceEvent as MouseEvent);\n }\n })\n .on('end', (event: UseDragEvent) => {\n if (!dragStarted) {\n return;\n }\n\n autoPanStarted = false;\n dragStarted = false;\n cancelAnimationFrame(autoPanId);\n\n if (dragItems.size > 0) {\n const {\n nodeLookup,\n updateNodePositions,\n onNodeDragStop,\n onSelectionDragStop,\n } = getStoreItems();\n\n updateNodePositions(dragItems, false);\n\n if (\n onDragStop ||\n onNodeDragStop ||\n (!nodeId && onSelectionDragStop)\n ) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDragStop?.(\n event.sourceEvent as MouseEvent,\n dragItems,\n currentNode,\n currentNodes,\n );\n onNodeDragStop?.(\n event.sourceEvent as MouseEvent,\n currentNode,\n currentNodes,\n );\n\n if (!nodeId) {\n onSelectionDragStop?.(\n event.sourceEvent as MouseEvent,\n currentNodes,\n );\n }\n }\n }\n })\n .filter((event: MouseEvent) => {\n const target = event.target as HTMLDivElement;\n const isDraggable =\n !event.button &&\n (!noDragClassName ||\n !hasSelector(target, `.${noDragClassName}`, domNode)) &&\n (!handleSelector || hasSelector(target, handleSelector, domNode));\n\n return isDraggable;\n });\n\n d3Selection.call(d3DragInstance);\n }\n\n function destroy() {\n d3Selection?.on('.drag', null);\n }\n\n return {\n update,\n destroy,\n };\n}\n","import { useCallback } from 'react';\n\nimport { type Node } from '../types';\nimport { useStoreApi } from './useStore';\nimport { XYPosition } from '../types/system';\nimport { snapPosition } from '../utils/general';\nimport { calculateNodePosition } from '../utils/graph';\n\nconst selectedAndDraggable = (nodesDraggable: boolean) => (n: Node) =>\n n.selected &&\n (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined'));\n\n/**\n * Hook for updating node positions by passing a direction and factor\n *\n * @internal\n * @returns function for updating node positions\n */\nexport function useMoveSelectedNodes() {\n const store = useStoreApi();\n\n const moveSelectedNodes = useCallback(\n (params: { direction: XYPosition; factor: number }) => {\n const {\n nodeExtent,\n snapToGrid,\n snapGrid,\n nodesDraggable,\n onError,\n updateNodePositions,\n nodeLookup,\n nodeOrigin,\n } = store.getState();\n const nodeUpdates = new Map();\n const isSelected = selectedAndDraggable(nodesDraggable);\n\n // by default a node moves 5px on each key press\n // if snap grid is enabled, we use that for the velocity\n const xVelo = snapToGrid ? snapGrid[0] : 5;\n const yVelo = snapToGrid ? snapGrid[1] : 5;\n\n const xDiff = params.direction.x * xVelo * params.factor;\n const yDiff = params.direction.y * yVelo * params.factor;\n\n for (const [, node] of nodeLookup) {\n if (!isSelected(node)) {\n continue;\n }\n\n let nextPosition = {\n x: node.internals.positionAbsolute.x + xDiff,\n y: node.internals.positionAbsolute.y + yDiff,\n };\n\n if (snapToGrid) {\n nextPosition = snapPosition(nextPosition, snapGrid);\n }\n\n const { position, positionAbsolute } = calculateNodePosition({\n nodeId: node.id,\n nextPosition,\n nodeLookup,\n nodeExtent,\n nodeOrigin,\n onError,\n });\n\n node.position = position;\n node.internals.positionAbsolute = positionAbsolute;\n\n nodeUpdates.set(node.id, node);\n }\n\n updateNodePositions(nodeUpdates);\n },\n [],\n );\n\n return moveSelectedNodes;\n}\n","import { type MouseEvent, type KeyboardEvent } from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { Provider } from '../../contexts/NodeIdContext';\nimport { ARIA_NODE_DESC_KEY } from '../A11yDescriptions';\nimport {\n arrowKeyDiffs,\n builtinNodeTypes,\n getNodeInlineStyleDimensions,\n} from './utils';\nimport { useNodeObserver } from './useNodeObserver';\nimport type { InternalNode, Node, NodeWrapperProps } from '../../types';\nimport { errorMessages, elementSelectionKeys } from '../../constants';\nimport { isInputDOMNode } from '../../utils/dom';\nimport {\n getNodeDimensions,\n clampPosition,\n nodeHasDimensions,\n getPositionWithOrigin,\n} from '../../utils/general';\nimport { useDrag } from '../../hooks/useDrag';\nimport { useMoveSelectedNodes } from '../../hooks/useMoveSelectedNodes';\nimport { handleNodeClick } from '../Nodes/utils';\n\nexport function NodeWrapper<NodeType extends Node>({\n id,\n onClick,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n onContextMenu,\n onDoubleClick,\n nodesDraggable,\n elementsSelectable,\n nodesConnectable,\n nodesFocusable,\n resizeObserver,\n noDragClassName,\n noPanClassName,\n disableKeyboardA11y,\n rfId,\n nodeTypes,\n nodeExtent,\n nodeOrigin,\n onError,\n}: NodeWrapperProps<NodeType>) {\n const { node, internals, isParent } = useStore((s) => {\n const node = s.nodeLookup.get(id)! as InternalNode<NodeType>;\n const isParent = s.parentLookup.has(id);\n\n return {\n node,\n internals: node.internals,\n isParent,\n };\n }, shallow);\n\n let nodeType = node.type || 'default';\n let NodeComponent = nodeTypes?.[nodeType] || builtinNodeTypes[nodeType];\n\n if (NodeComponent === undefined) {\n onError?.('003', errorMessages['error003'](nodeType));\n nodeType = 'default';\n NodeComponent = builtinNodeTypes.default;\n }\n\n const isDraggable = !!(\n node.draggable ||\n (nodesDraggable && typeof node.draggable === 'undefined')\n );\n const isSelectable = !!(\n node.selectable ||\n (elementsSelectable && typeof node.selectable === 'undefined')\n );\n const isConnectable = !!(\n node.connectable ||\n (nodesConnectable && typeof node.connectable === 'undefined')\n );\n const isFocusable = !!(\n node.focusable ||\n (nodesFocusable && typeof node.focusable === 'undefined')\n );\n\n const store = useStoreApi();\n const hasDimensions = nodeHasDimensions(node);\n const nodeRef = useNodeObserver({\n node,\n nodeType,\n hasDimensions,\n resizeObserver,\n });\n const dragging = useDrag({\n nodeRef,\n disabled: node.hidden || !isDraggable,\n noDragClassName,\n handleSelector: node.dragHandle,\n nodeId: id,\n isSelectable,\n });\n const moveSelectedNodes = useMoveSelectedNodes();\n\n if (node.hidden) {\n return null;\n }\n\n const nodeDimensions = getNodeDimensions(node);\n const inlineDimensions = getNodeInlineStyleDimensions(node);\n const clampedPosition = nodeExtent\n ? clampPosition(internals.positionAbsolute, nodeExtent)\n : internals.positionAbsolute;\n\n const positionWithOrigin = getPositionWithOrigin({\n ...clampedPosition,\n ...nodeDimensions,\n origin: node.origin || nodeOrigin,\n });\n const hasPointerEvents =\n isSelectable ||\n isDraggable ||\n onClick ||\n onMouseEnter ||\n onMouseMove ||\n onMouseLeave;\n\n const onMouseEnterHandler = onMouseEnter\n ? (event: MouseEvent) => onMouseEnter(event, { ...internals.userNode })\n : undefined;\n const onMouseMoveHandler = onMouseMove\n ? (event: MouseEvent) => onMouseMove(event, { ...internals.userNode })\n : undefined;\n const onMouseLeaveHandler = onMouseLeave\n ? (event: MouseEvent) => onMouseLeave(event, { ...internals.userNode })\n : undefined;\n const onContextMenuHandler = onContextMenu\n ? (event: MouseEvent) => onContextMenu(event, { ...internals.userNode })\n : undefined;\n const onDoubleClickHandler = onDoubleClick\n ? (event: MouseEvent) => onDoubleClick(event, { ...internals.userNode })\n : undefined;\n\n const onSelectNodeHandler = (event: MouseEvent) => {\n const { selectNodesOnDrag, nodeDragThreshold } = store.getState();\n\n if (\n isSelectable &&\n (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0)\n ) {\n // this handler gets called by XYDrag on drag start when selectNodesOnDrag=true\n // here we only need to call it when selectNodesOnDrag=false\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n }\n\n if (onClick) {\n onClick(event, { ...internals.userNode });\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) {\n return;\n }\n\n if (elementSelectionKeys.includes(event.key) && isSelectable) {\n const unselect = event.key === 'Escape';\n\n handleNodeClick({\n id,\n store,\n unselect,\n nodeRef,\n });\n } else if (\n isDraggable &&\n node.selected &&\n Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)\n ) {\n store.setState({\n ariaLiveMessage: `Moved selected node ${event.key\n .replace('Arrow', '')\n .toLowerCase()}. New position, x: ${~~clampedPosition.x}, y: ${~~clampedPosition.y}`,\n });\n\n moveSelectedNodes({\n direction: arrowKeyDiffs[event.key],\n factor: event.shiftKey ? 4 : 1,\n });\n }\n };\n\n return (\n <div\n className={cc([\n 'ink-flow__node',\n `ink-flow__node-${nodeType}`,\n {\n // this is overwritable by passing `nopan` as a class name\n [noPanClassName]: isDraggable,\n },\n node.className,\n {\n selected: node.selected,\n selectable: isSelectable,\n parent: isParent,\n draggable: isDraggable,\n dragging,\n },\n ])}\n ref={nodeRef}\n style={{\n zIndex: internals.z,\n transform: `translate(${positionWithOrigin.x}px,${positionWithOrigin.y}px)`,\n pointerEvents: hasPointerEvents ? 'all' : 'none',\n visibility: hasDimensions ? 'visible' : 'hidden',\n ...node.style,\n ...inlineDimensions,\n }}\n data-id={id}\n data-testid={`rf__node-${id}`}\n onMouseEnter={onMouseEnterHandler}\n onMouseMove={onMouseMoveHandler}\n onMouseLeave={onMouseLeaveHandler}\n onContextMenu={onContextMenuHandler}\n onClick={onSelectNodeHandler}\n onDoubleClick={onDoubleClickHandler}\n onKeyDown={isFocusable ? onKeyDown : undefined}\n tabIndex={isFocusable ? 0 : undefined}\n role={isFocusable ? 'button' : undefined}\n aria-describedby={\n disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`\n }\n aria-label={node.ariaLabel}\n >\n <Provider value={id}>\n <NodeComponent\n id={id}\n data={node.data}\n type={nodeType}\n positionAbsoluteX={clampedPosition.x}\n positionAbsoluteY={clampedPosition.y}\n selected={node.selected}\n isConnectable={isConnectable}\n sourcePosition={node.sourcePosition}\n targetPosition={node.targetPosition}\n dragging={dragging}\n dragHandle={node.dragHandle}\n zIndex={internals.z}\n {...nodeDimensions}\n />\n </Provider>\n </div>\n );\n}\n","import { useEffect, useRef } from 'react';\n\nimport type { InternalNode } from '../../types';\nimport { useStoreApi } from '../../hooks/useStore';\n\n/**\n * Hook to handle the resize observation + internal updates for the passed node.\n *\n * @internal\n * @returns nodeRef - reference to the node element\n */\nexport function useNodeObserver({\n node,\n nodeType,\n hasDimensions,\n resizeObserver,\n}: {\n node: InternalNode;\n nodeType: string;\n hasDimensions: boolean;\n resizeObserver: ResizeObserver | null;\n}) {\n const store = useStoreApi();\n const nodeRef = useRef<HTMLDivElement | null>(null);\n const observedNode = useRef<HTMLDivElement | null>(null);\n const prevSourcePosition = useRef(node.sourcePosition);\n const prevTargetPosition = useRef(node.targetPosition);\n const prevType = useRef(nodeType);\n const isInitialized = hasDimensions && !!node.internals.handleBounds && !node.hidden;\n\n useEffect(() => {\n if (nodeRef.current && (!isInitialized || observedNode.current !== nodeRef.current)) {\n if (observedNode.current) {\n resizeObserver?.unobserve(observedNode.current);\n }\n resizeObserver?.observe(nodeRef.current);\n observedNode.current = nodeRef.current;\n }\n }, [isInitialized]);\n\n useEffect(() => {\n return () => {\n if (observedNode.current) {\n resizeObserver?.unobserve(observedNode.current);\n observedNode.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (nodeRef.current) {\n // when the user programmatically changes the source or handle position, we need to update the internals\n // to make sure the edges are updated correctly\n const typeChanged = prevType.current !== nodeType;\n const sourcePosChanged = prevSourcePosition.current !== node.sourcePosition;\n const targetPosChanged = prevTargetPosition.current !== node.targetPosition;\n\n if (typeChanged || sourcePosChanged || targetPosChanged) {\n prevType.current = nodeType;\n prevSourcePosition.current = node.sourcePosition;\n prevTargetPosition.current = node.targetPosition;\n\n store\n .getState()\n .updateNodeInternals(new Map([[node.id, { id: node.id, nodeElement: nodeRef.current, force: true }]]));\n }\n }\n }, [node.id, nodeType, node.sourcePosition, node.targetPosition]);\n\n return nodeRef;\n}\n","import { useEffect, useRef, useState, type RefObject } from 'react';\nimport { useStoreApi } from './useStore';\nimport { handleNodeClick } from '../components/Nodes/utils';\nimport { XYDrag, XYDragInstance } from '../utils/xydrag';\n\ntype UseDragParams = {\n nodeRef: RefObject<HTMLDivElement>;\n disabled?: boolean;\n noDragClassName?: string;\n handleSelector?: string;\n nodeId?: string;\n isSelectable?: boolean;\n};\n\nexport function useDrag({\n nodeRef,\n disabled = false,\n noDragClassName,\n handleSelector,\n nodeId,\n isSelectable,\n}: UseDragParams) {\n const store = useStoreApi();\n const [dragging, setDragging] = useState<boolean>(false);\n const xyDrag = useRef<XYDragInstance>();\n\n useEffect(() => {\n xyDrag.current = XYDrag({\n getStoreItems: () => store.getState(),\n onNodeMouseDown: (id: string) => {\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n },\n onDragStart: () => {\n setDragging(true);\n },\n onDragStop: () => {\n setDragging(false);\n },\n });\n }, []);\n\n useEffect(() => {\n if (disabled) {\n xyDrag.current?.destroy();\n } else if (nodeRef.current) {\n xyDrag.current?.update({\n noDragClassName,\n handleSelector,\n domNode: nodeRef.current,\n isSelectable,\n nodeId,\n });\n return () => {\n xyDrag.current?.destroy();\n };\n }\n }, [\n noDragClassName,\n handleSelector,\n disabled,\n isSelectable,\n nodeRef,\n nodeId,\n ]);\n\n return dragging;\n}\n","import { memo } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { GraphViewProps } from '../GraphView';\nimport { useResizeObserver } from './useResizeObserver';\nimport type { Node, InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\nimport { useVisibleNodeIds } from '../../hooks/useVisibleNodeIds';\nimport { containerStyle } from '../../styles/utils';\nimport { NodeWrapper } from '../../components/NodeWrapper';\n\nexport type NodeRendererProps<NodeType extends Node> = Pick<\n GraphViewProps<NodeType>,\n // | 'onNodeClick'\n // | 'onNodeDoubleClick'\n // | 'onNodeMouseEnter'\n // | 'onNodeMouseMove'\n // | 'onNodeMouseLeave'\n // | 'onNodeContextMenu'\n // | 'onlyRenderVisibleElements'\n | 'noPanClassName'\n | 'noDragClassName'\n | 'rfId'\n | 'disableKeyboardA11y'\n | 'nodeOrigin'\n // | 'nodeExtent'\n | 'nodeTypes'\n>;\n\nconst selector = (s: InkFlowState) => ({\n nodesDraggable: s.nodesDraggable,\n nodesConnectable: s.nodesConnectable,\n nodesFocusable: s.nodesFocusable,\n elementsSelectable: s.elementsSelectable,\n onError: s.onError,\n});\n\nfunction NodeRendererComponent<NodeType extends Node>(\n props: NodeRendererProps<NodeType>,\n) {\n const {\n nodesDraggable,\n nodesConnectable,\n nodesFocusable,\n elementsSelectable,\n onError,\n } = useStore(selector, shallow);\n // const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);\n const nodeIds = useVisibleNodeIds(false); // FIXME\n const resizeObserver = useResizeObserver();\n\n return (\n <div className=\"ink-flow__nodes\" style={containerStyle}>\n {nodeIds.map((nodeId) => {\n return (\n <NodeWrapper<NodeType>\n key={nodeId}\n id={nodeId}\n nodeTypes={props.nodeTypes}\n // nodeExtent={props.nodeExtent}\n nodeOrigin={props.nodeOrigin}\n // onClick={props.onNodeClick}\n // onMouseEnter={props.onNodeMouseEnter}\n // onMouseMove={props.onNodeMouseMove}\n // onMouseLeave={props.onNodeMouseLeave}\n // onContextMenu={props.onNodeContextMenu}\n // onDoubleClick={props.onNodeDoubleClick}\n noDragClassName={props.noDragClassName}\n noPanClassName={props.noPanClassName}\n rfId={props.rfId}\n disableKeyboardA11y={props.disableKeyboardA11y}\n resizeObserver={resizeObserver}\n nodesDraggable={nodesDraggable}\n nodesConnectable={nodesConnectable}\n nodesFocusable={nodesFocusable}\n elementsSelectable={elementsSelectable}\n onError={onError}\n />\n );\n })}\n </div>\n );\n}\n\nNodeRendererComponent.displayName = 'NodeRenderer';\n\nexport const NodeRenderer = memo(\n NodeRendererComponent,\n) as typeof NodeRendererComponent;\n","import { useMemo } from 'react';\nimport { errorMessages } from '../../constants';\nimport { useStoreApi } from '../../hooks';\nimport { EdgeMarker, MarkerType } from '../../types/system';\n\ntype SymbolProps = Omit<EdgeMarker, 'type'>;\n\nconst ArrowSymbol = ({ color = 'none', strokeWidth = 1 }: SymbolProps) => {\n return (\n <polyline\n style={{\n stroke: color,\n strokeWidth,\n }}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n points=\"-5,-4 0,0 -5,4\"\n />\n );\n};\n\nconst ArrowClosedSymbol = ({\n color = 'none',\n strokeWidth = 1,\n}: SymbolProps) => {\n return (\n <polyline\n style={{\n stroke: color,\n fill: color,\n strokeWidth,\n }}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n points=\"-5,-4 0,0 -5,4 -5,-4\"\n />\n );\n};\n\nexport const MarkerSymbols = {\n [MarkerType.Arrow]: ArrowSymbol,\n [MarkerType.ArrowClosed]: ArrowClosedSymbol,\n};\n\nexport function useMarkerSymbol(type: MarkerType) {\n const store = useStoreApi();\n\n const symbol = useMemo(() => {\n const symbolExists = Object.prototype.hasOwnProperty.call(\n MarkerSymbols,\n type,\n );\n\n if (!symbolExists) {\n store.getState().onError?.('009', errorMessages['error009'](type));\n\n return null;\n }\n\n return MarkerSymbols[type];\n }, [type]);\n\n return symbol;\n}\n","import {\n EdgeMarkerType,\n EdgeMarker,\n EdgeBase,\n MarkerProps,\n} from '../types/system';\n\nexport function getMarkerId(\n marker: EdgeMarkerType | undefined,\n id?: string | null,\n): string {\n if (!marker) {\n return '';\n }\n\n if (typeof marker === 'string') {\n return marker;\n }\n\n const idPrefix = id ? `${id}__` : '';\n\n return `${idPrefix}${Object.keys(marker)\n .sort()\n .map((key) => `${key}=${marker[key as keyof EdgeMarker]}`)\n .join('&')}`;\n}\n\nexport function createMarkerIds(\n edges: EdgeBase[],\n {\n id,\n defaultColor,\n defaultMarkerStart,\n defaultMarkerEnd,\n }: {\n id?: string | null;\n defaultColor?: string;\n defaultMarkerStart?: EdgeMarkerType;\n defaultMarkerEnd?: EdgeMarkerType;\n },\n) {\n const ids = new Set<string>();\n\n return edges\n .reduce<MarkerProps[]>((markers, edge) => {\n [\n edge.markerStart || defaultMarkerStart,\n edge.markerEnd || defaultMarkerEnd,\n ].forEach((marker) => {\n if (marker && typeof marker === 'object') {\n const markerId = getMarkerId(marker, id);\n if (!ids.has(markerId)) {\n markers.push({\n id: markerId,\n color: marker.color || defaultColor,\n ...marker,\n });\n ids.add(markerId);\n }\n }\n });\n\n return markers;\n }, [])\n .sort((a, b) => a.id.localeCompare(b.id));\n}\n","import { memo, useMemo } from 'react';\n\nimport { useMarkerSymbol } from './MarkerSymbols';\nimport { useStore } from '../../hooks';\nimport { MarkerProps } from '../../types/system';\nimport { createMarkerIds } from '../../utils/marker';\n\ntype MarkerDefinitionsProps = {\n defaultColor: string;\n rfId?: string;\n};\n\nconst Marker = ({\n id,\n type,\n color,\n width = 12.5,\n height = 12.5,\n markerUnits = 'strokeWidth',\n strokeWidth,\n orient = 'auto-start-reverse',\n}: MarkerProps) => {\n const Symbol = useMarkerSymbol(type);\n\n if (!Symbol) {\n return null;\n }\n\n return (\n <marker\n className=\"ink-flow__arrowhead\"\n id={id}\n markerWidth={`${width}`}\n markerHeight={`${height}`}\n viewBox=\"-10 -10 20 20\"\n markerUnits={markerUnits}\n orient={orient}\n refX=\"0\"\n refY=\"0\"\n >\n <Symbol color={color} strokeWidth={strokeWidth} />\n </marker>\n );\n};\n\n// when you have multiple flows on a page and you hide the first one, the other ones have no markers anymore\n// when they do have markers with the same ids. To prevent this the user can pass a unique id to the Ink Flow wrapper\n// that we can then use for creating our unique marker ids\nconst MarkerDefinitions = ({ defaultColor, rfId }: MarkerDefinitionsProps) => {\n const edges = useStore((s) => s.edges);\n const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions); // FIXME\n\n const markers = useMemo(() => {\n const markers = createMarkerIds(edges, {\n id: rfId,\n defaultColor,\n defaultMarkerStart: defaultEdgeOptions?.markerStart,\n defaultMarkerEnd: defaultEdgeOptions?.markerEnd,\n });\n\n return markers;\n }, [edges, defaultEdgeOptions, rfId, defaultColor]);\n\n if (!markers.length) {\n return null;\n }\n\n return (\n <svg className=\"ink-flow__marker\">\n <defs>\n {markers.map((marker: MarkerProps) => (\n <Marker\n id={marker.id}\n key={marker.id}\n type={marker.type}\n color={marker.color}\n width={marker.width}\n height={marker.height}\n markerUnits={marker.markerUnits}\n strokeWidth={marker.strokeWidth}\n orient={marker.orient}\n />\n ))}\n </defs>\n </svg>\n );\n};\n\nMarkerDefinitions.displayName = 'MarkerDefinitions';\n\nexport default memo(MarkerDefinitions);\n","import { memo, useState, useCallback } from 'react';\nimport cc from 'classnames';\nimport { EdgeTextProps } from '../../types';\nimport { Rect } from '../../types/system';\n\nfunction EdgeTextComponent({\n x,\n y,\n label,\n labelStyle = {},\n labelShowBg = true,\n labelBgStyle = {},\n labelBgPadding = [2, 4],\n labelBgBorderRadius = 2,\n children,\n className,\n ...rest\n}: EdgeTextProps) {\n const [edgeTextBbox, setEdgeTextBbox] = useState<Rect>({\n x: 1,\n y: 0,\n width: 0,\n height: 0,\n });\n const edgeTextClasses = cc(['ink-flow__edge-textwrapper', className]);\n\n const onEdgeTextRefChange = useCallback((edgeRef: SVGTextElement) => {\n if (edgeRef === null) return;\n\n const textBbox = edgeRef.getBBox();\n\n setEdgeTextBbox({\n x: textBbox.x,\n y: textBbox.y,\n width: textBbox.width,\n height: textBbox.height,\n });\n }, []);\n\n if (typeof label === 'undefined' || !label) {\n return null;\n }\n\n return (\n <g\n transform={`translate(${x - edgeTextBbox.width / 2} ${\n y - edgeTextBbox.height / 2\n })`}\n className={edgeTextClasses}\n visibility={edgeTextBbox.width ? 'visible' : 'hidden'}\n {...rest}\n >\n {labelShowBg && (\n <rect\n width={edgeTextBbox.width + 2 * labelBgPadding[0]}\n x={-labelBgPadding[0]}\n y={-labelBgPadding[1]}\n height={edgeTextBbox.height + 2 * labelBgPadding[1]}\n className=\"ink-flow__edge-textbg\"\n style={labelBgStyle}\n rx={labelBgBorderRadius}\n ry={labelBgBorderRadius}\n />\n )}\n <text\n className=\"ink-flow__edge-text\"\n y={edgeTextBbox.height / 2}\n dy=\"0.3em\"\n ref={onEdgeTextRefChange}\n style={labelStyle}\n >\n {label}\n </text>\n {children}\n </g>\n );\n}\n\nEdgeTextComponent.displayName = 'EdgeText';\n\nexport const EdgeText = memo(EdgeTextComponent);\n","import cc from 'classnames';\n\nimport { EdgeText } from './EdgeText';\nimport { BaseEdgeProps } from '../../types';\nimport { isNumeric } from '../../utils/general';\n\nexport function BaseEdge({\n id,\n path,\n labelX,\n labelY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n className,\n interactionWidth = 20,\n}: BaseEdgeProps) {\n return (\n <>\n <path\n id={id}\n style={style}\n d={path}\n fill=\"none\"\n className={cc(['ink-flow__edge-path', className])}\n markerEnd={markerEnd}\n markerStart={markerStart}\n />\n {interactionWidth && (\n <path\n d={path}\n fill=\"none\"\n strokeOpacity={0}\n strokeWidth={interactionWidth}\n className=\"ink-flow__edge-interaction\"\n />\n )}\n {label && isNumeric(labelX) && isNumeric(labelY) ? (\n <EdgeText\n x={labelX}\n y={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n />\n ) : null}\n </>\n );\n}\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { SimpleBezierEdgeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { getBezierEdgeCenter } from '../../utils/edges';\n\nexport interface GetSimpleBezierPathParams {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n}\n\ninterface GetControlParams {\n pos: Position;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nfunction getControl({\n pos,\n x1,\n y1,\n x2,\n y2,\n}: GetControlParams): [number, number] {\n if (pos === Position.Left || pos === Position.Right) {\n return [0.5 * (x1 + x2), y1];\n }\n\n return [x1, 0.5 * (y1 + y2)];\n}\n\nexport function getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n}: GetSimpleBezierPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\n\nfunction createSimpleBezierEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n interactionWidth,\n }: SimpleBezierEdgeProps) => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst SimpleBezierEdge = createSimpleBezierEdge({ isInternal: false });\nconst SimpleBezierEdgeInternal = createSimpleBezierEdge({ isInternal: true });\n\nSimpleBezierEdge.displayName = 'SimpleBezierEdge';\nSimpleBezierEdgeInternal.displayName = 'SimpleBezierEdgeInternal';\n\nexport { SimpleBezierEdge, SimpleBezierEdgeInternal };\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { SmoothStepEdgeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { getSmoothStepPath } from '../../utils/edges';\n\nfunction createSmoothStepEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n markerEnd,\n markerStart,\n pathOptions,\n interactionWidth,\n }: SmoothStepEdgeProps) => {\n const [path, labelX, labelY] = getSmoothStepPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n borderRadius: pathOptions?.borderRadius,\n offset: pathOptions?.offset,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst SmoothStepEdge = createSmoothStepEdge({ isInternal: false });\nconst SmoothStepEdgeInternal = createSmoothStepEdge({ isInternal: true });\n\nSmoothStepEdge.displayName = 'SmoothStepEdge';\nSmoothStepEdgeInternal.displayName = 'SmoothStepEdgeInternal';\n\nexport { SmoothStepEdge, SmoothStepEdgeInternal };\n","import { memo, useMemo } from 'react';\n\nimport { SmoothStepEdge } from './SmoothStepEdge';\nimport type { StepEdgeProps } from '../../types';\n\nfunction createStepEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(({ id, ...props }: StepEdgeProps) => {\n const _id = params.isInternal ? undefined : id;\n\n return (\n <SmoothStepEdge\n {...props}\n id={_id}\n pathOptions={useMemo(\n () => ({ borderRadius: 0, offset: props.pathOptions?.offset }),\n [props.pathOptions?.offset]\n )}\n />\n );\n });\n}\n\nconst StepEdge = createStepEdge({ isInternal: false });\nconst StepEdgeInternal = createStepEdge({ isInternal: true });\n\nStepEdge.displayName = 'StepEdge';\nStepEdgeInternal.displayName = 'StepEdgeInternal';\n\nexport { StepEdge, StepEdgeInternal };\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { StraightEdgeProps } from '../../types';\nimport { getStraightPath } from '../../utils/edges';\n\nfunction createStraightEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n interactionWidth,\n }: StraightEdgeProps) => {\n const [path, labelX, labelY] = getStraightPath({\n sourceX,\n sourceY,\n targetX,\n targetY,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst StraightEdge = createStraightEdge({ isInternal: false });\nconst StraightEdgeInternal = createStraightEdge({ isInternal: true });\n\nStraightEdge.displayName = 'StraightEdge';\nStraightEdgeInternal.displayName = 'StraightEdgeInternal';\n\nexport { StraightEdge, StraightEdgeInternal };\n","import { getEdgeCenter } from './general';\n\nexport type GetStraightPathParams = {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n};\n\n/**\n * Get a straight path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n });\n */\nexport function getStraightPath({\n sourceX,\n sourceY,\n targetX,\n targetY,\n}: GetStraightPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number] {\n const [labelX, labelY, offsetX, offsetY] = getEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n });\n\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, labelX, labelY, offsetX, offsetY];\n}\n","import { memo } from 'react';\r\n\r\nimport { BaseEdge } from './BaseEdge';\r\nimport { Position } from '../../types/system';\r\nimport { BezierEdgeProps } from '../../types';\r\nimport { getBezierPath } from '../../utils/edges';\r\n\r\nfunction createBezierEdge(params: { isInternal: boolean }) {\r\n // eslint-disable-next-line react/display-name\r\n return memo(\r\n ({\r\n id,\r\n sourceX,\r\n sourceY,\r\n targetX,\r\n targetY,\r\n sourcePosition = Position.Bottom,\r\n targetPosition = Position.Top,\r\n label,\r\n labelStyle,\r\n labelShowBg,\r\n labelBgStyle,\r\n labelBgPadding,\r\n labelBgBorderRadius,\r\n style,\r\n markerEnd,\r\n markerStart,\r\n pathOptions,\r\n interactionWidth,\r\n }: BezierEdgeProps) => {\r\n const [path, labelX, labelY] = getBezierPath({\r\n sourceX,\r\n sourceY,\r\n sourcePosition,\r\n targetX,\r\n targetY,\r\n targetPosition,\r\n curvature: pathOptions?.curvature,\r\n });\r\n\r\n const _id = params.isInternal ? undefined : id;\r\n\r\n return (\r\n <BaseEdge\r\n id={_id}\r\n path={path}\r\n labelX={labelX}\r\n labelY={labelY}\r\n label={label}\r\n labelStyle={labelStyle}\r\n labelShowBg={labelShowBg}\r\n labelBgStyle={labelBgStyle}\r\n labelBgPadding={labelBgPadding}\r\n labelBgBorderRadius={labelBgBorderRadius}\r\n style={style}\r\n markerEnd={markerEnd}\r\n markerStart={markerStart}\r\n interactionWidth={interactionWidth}\r\n />\r\n );\r\n },\r\n );\r\n}\r\n\r\nconst BezierEdge = createBezierEdge({ isInternal: false });\r\nconst BezierEdgeInternal = createBezierEdge({ isInternal: true });\r\n\r\nBezierEdge.displayName = 'BezierEdge';\r\nBezierEdgeInternal.displayName = 'BezierEdgeInternal';\r\n\r\nexport { BezierEdge, BezierEdgeInternal };\r\n","import type { EdgeTypes } from '../../types';\nimport {\n BezierEdgeInternal,\n StraightEdgeInternal,\n StepEdgeInternal,\n SmoothStepEdgeInternal,\n SimpleBezierEdgeInternal,\n} from '../Edges';\n\nexport const builtinEdgeTypes: EdgeTypes = {\n default: BezierEdgeInternal,\n straight: StraightEdgeInternal,\n step: StepEdgeInternal,\n smoothstep: SmoothStepEdgeInternal,\n simplebezier: SimpleBezierEdgeInternal,\n};\n\nexport const nullPosition = {\n sourceX: null,\n sourceY: null,\n targetX: null,\n targetY: null,\n sourcePosition: null,\n targetPosition: null,\n};\n","import type { MouseEvent as ReactMouseEvent, SVGAttributes } from 'react';\nimport cc from 'classnames';\nimport { Position } from '../../types/system';\n\nconst shiftX = (x: number, shift: number, position: Position): number => {\n if (position === Position.Left) return x - shift;\n if (position === Position.Right) return x + shift;\n return x;\n};\n\nconst shiftY = (y: number, shift: number, position: Position): number => {\n if (position === Position.Top) return y - shift;\n if (position === Position.Bottom) return y + shift;\n return y;\n};\n\nexport interface EdgeAnchorProps extends SVGAttributes<SVGGElement> {\n position: Position;\n centerX: number;\n centerY: number;\n radius?: number;\n onMouseDown: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n onMouseEnter: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n onMouseOut: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n type: string;\n}\n\nconst EdgeUpdaterClassName = 'ink-flow__edgeupdater';\n\nexport function EdgeAnchor({\n position,\n centerX,\n centerY,\n radius = 10,\n onMouseDown,\n onMouseEnter,\n onMouseOut,\n type,\n}: EdgeAnchorProps) {\n return (\n <circle\n onMouseDown={onMouseDown}\n onMouseEnter={onMouseEnter}\n onMouseOut={onMouseOut}\n className={cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`])}\n cx={shiftX(centerX, radius, position)}\n cy={shiftY(centerY, radius, position)}\n r={radius}\n stroke=\"transparent\"\n fill=\"transparent\"\n />\n );\n}\n","// Updatable edges have a anchors around their handles to update the edge.\nimport type { EdgeWrapperProps, Edge } from '../../types/edges';\nimport { useStoreApi } from '../../hooks/useStore';\nimport { EdgePosition, Connection } from '../../types/system';\nimport { XYHandle } from '../../utils/xyhandle';\nimport { EdgeAnchor } from '../Edges/EdgeAnchor';\n\ntype EdgeUpdateAnchorsProps<EdgeType extends Edge = Edge> = {\n edge: EdgeType;\n isUpdatable: boolean | 'source' | 'target';\n edgeUpdaterRadius: EdgeWrapperProps['edgeUpdaterRadius'];\n sourceHandleId: Edge['sourceHandle'];\n targetHandleId: Edge['targetHandle'];\n onEdgeUpdate: EdgeWrapperProps<EdgeType>['onEdgeUpdate'];\n onEdgeUpdateStart: EdgeWrapperProps<EdgeType>['onEdgeUpdateStart'];\n onEdgeUpdateEnd: EdgeWrapperProps<EdgeType>['onEdgeUpdateEnd'];\n setUpdateHover: (hover: boolean) => void;\n setUpdating: (updating: boolean) => void;\n} & EdgePosition;\n\nexport function EdgeUpdateAnchors<EdgeType extends Edge = Edge>({\n isUpdatable,\n edgeUpdaterRadius,\n edge,\n targetHandleId,\n sourceHandleId,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n onEdgeUpdate,\n onEdgeUpdateStart,\n onEdgeUpdateEnd,\n setUpdating,\n setUpdateHover,\n}: EdgeUpdateAnchorsProps<EdgeType>) {\n const store = useStoreApi();\n\n const handleEdgeUpdater = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n isSourceHandle: boolean,\n ) => {\n // avoid triggering edge updater if mouse btn is not left\n if (event.button !== 0) {\n return;\n }\n\n const {\n autoPanOnConnect,\n domNode,\n isValidConnection,\n connectionMode,\n connectionRadius,\n lib,\n onConnectStart,\n onConnectEnd,\n cancelConnection,\n nodeLookup,\n rfId: flowId,\n panBy,\n updateConnection,\n } = store.getState();\n const nodeId = isSourceHandle ? edge.target : edge.source;\n const handleId = (isSourceHandle ? targetHandleId : sourceHandleId) || null;\n const handleType = isSourceHandle ? 'target' : 'source';\n\n const isTarget = isSourceHandle;\n\n setUpdating(true);\n onEdgeUpdateStart?.(event, edge, handleType);\n\n const _onEdgeUpdateEnd = (evt: MouseEvent | TouchEvent) => {\n setUpdating(false);\n onEdgeUpdateEnd?.(evt, edge, handleType);\n };\n\n const onConnectEdge = (connection: Connection) =>\n onEdgeUpdate?.(edge, connection);\n\n XYHandle.onPointerDown(event.nativeEvent, {\n autoPanOnConnect,\n connectionMode,\n connectionRadius,\n domNode,\n handleId,\n nodeId,\n nodeLookup,\n isTarget,\n edgeUpdaterType: handleType,\n lib,\n flowId,\n cancelConnection,\n panBy,\n isValidConnection,\n onConnect: onConnectEdge,\n onConnectStart,\n onConnectEnd,\n onEdgeUpdateEnd: _onEdgeUpdateEnd,\n updateConnection,\n getTransform: () => store.getState().transform,\n getConnectionStartHandle: () => store.getState().connectionStartHandle,\n });\n };\n\n const onEdgeUpdaterSourceMouseDown = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => handleEdgeUpdater(event, true);\n const onEdgeUpdaterTargetMouseDown = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => handleEdgeUpdater(event, false);\n const onEdgeUpdaterMouseEnter = () => setUpdateHover(true);\n const onEdgeUpdaterMouseOut = () => setUpdateHover(false);\n\n return (\n <>\n {(isUpdatable === 'source' || isUpdatable === true) && (\n <EdgeAnchor\n position={sourcePosition}\n centerX={sourceX}\n centerY={sourceY}\n radius={edgeUpdaterRadius}\n onMouseDown={onEdgeUpdaterSourceMouseDown}\n onMouseEnter={onEdgeUpdaterMouseEnter}\n onMouseOut={onEdgeUpdaterMouseOut}\n type=\"source\"\n />\n )}\n {(isUpdatable === 'target' || isUpdatable === true) && (\n <EdgeAnchor\n position={targetPosition}\n centerX={targetX}\n centerY={targetY}\n radius={edgeUpdaterRadius}\n onMouseDown={onEdgeUpdaterTargetMouseDown}\n onMouseEnter={onEdgeUpdaterMouseEnter}\n onMouseOut={onEdgeUpdaterMouseOut}\n type=\"target\"\n />\n )}\n </>\n );\n}\n","import { errorMessages } from '../constants';\nimport {\n InternalNodeBase,\n ConnectionMode,\n OnError,\n EdgePosition,\n Position,\n NodeHandle,\n HandleElement,\n} from '../types/system';\nimport { getNodeDimensions } from './general';\n\nexport type GetEdgePositionParams = {\n id: string;\n sourceNode: InternalNodeBase;\n sourceHandle: string | null;\n targetNode: InternalNodeBase;\n targetHandle: string | null;\n connectionMode: ConnectionMode;\n onError?: OnError;\n};\n\nfunction isNodeInitialized(node: InternalNodeBase): boolean {\n return (\n node &&\n !!(node.internals.handleBounds || node.handles?.length) &&\n !!(node.measured.width || node.width || node.initialWidth)\n );\n}\n\nexport function getEdgePosition(\n params: GetEdgePositionParams,\n): EdgePosition | null {\n const { sourceNode, targetNode } = params;\n\n if (!isNodeInitialized(sourceNode) || !isNodeInitialized(targetNode)) {\n return null;\n }\n\n const sourceHandleBounds =\n sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles);\n const targetHandleBounds =\n targetNode.internals.handleBounds || toHandleBounds(targetNode.handles);\n\n const sourceHandle = getHandle(\n sourceHandleBounds?.source ?? [],\n params.sourceHandle,\n );\n const targetHandle = getHandle(\n // when connection type is loose we can define all handles as sources and connect source -> source\n params.connectionMode === ConnectionMode.Strict\n ? targetHandleBounds?.target ?? []\n : (targetHandleBounds?.target ?? []).concat(\n targetHandleBounds?.source ?? [],\n ),\n params.targetHandle,\n );\n const sourcePosition = sourceHandle?.position || Position.Bottom;\n const targetPosition = targetHandle?.position || Position.Top;\n\n if (!sourceHandle || !targetHandle) {\n params.onError?.(\n '008',\n errorMessages['error008'](!sourceHandle ? 'source' : 'target', {\n id: params.id,\n sourceHandle: params.sourceHandle,\n targetHandle: params.targetHandle,\n }),\n );\n\n return null;\n }\n\n const [sourceX, sourceY] = getHandlePosition(\n sourcePosition,\n sourceNode,\n sourceHandle,\n );\n const [targetX, targetY] = getHandlePosition(\n targetPosition,\n targetNode,\n targetHandle,\n );\n\n return {\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n };\n}\n\nfunction toHandleBounds(handles?: NodeHandle[]) {\n if (!handles) {\n return null;\n }\n\n const source = [];\n const target = [];\n\n for (const handle of handles) {\n handle.width = handle.width ?? 1;\n handle.height = handle.height ?? 1;\n\n if (handle.type === 'source') {\n source.push(handle as HandleElement);\n } else if (handle.type === 'target') {\n target.push(handle as HandleElement);\n }\n }\n\n return {\n source,\n target,\n };\n}\n\nfunction getHandlePosition(\n position: Position,\n node: InternalNodeBase,\n handle: HandleElement | null = null,\n): number[] {\n const x = (handle?.x ?? 0) + node.internals.positionAbsolute.x;\n const y = (handle?.y ?? 0) + node.internals.positionAbsolute.y;\n const { width, height } = handle ?? getNodeDimensions(node);\n\n switch (position) {\n case Position.Top:\n return [x + width / 2, y];\n case Position.Right:\n return [x + width, y + height / 2];\n case Position.Bottom:\n return [x + width / 2, y + height];\n case Position.Left:\n return [x, y + height / 2];\n }\n}\n\nfunction getHandle(\n bounds: HandleElement[],\n handleId?: string | null,\n): HandleElement | null {\n if (!bounds) {\n return null;\n }\n\n // if no handleId is given, we use the first handle, otherwise we check for the id\n return (\n (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null\n );\n}\n","import {\n useState,\n useMemo,\n useRef,\n type KeyboardEvent,\n useCallback,\n} from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStoreApi, useStore } from '../../hooks/useStore';\nimport { builtinEdgeTypes, nullPosition } from './utils';\nimport { EdgeUpdateAnchors } from './EdgeUpdateAnchors';\nimport type { Edge, EdgeWrapperProps } from '../../types';\nimport { errorMessages, elementSelectionKeys } from '../../constants';\nimport { getMarkerId } from '../../utils/marker';\nimport { getEdgePosition } from '../../utils/positions';\nimport { getElevatedEdgeZIndex } from '../../utils/edges';\nimport { ARIA_EDGE_DESC_KEY } from '../A11yDescriptions';\n\nexport function EdgeWrapper<EdgeType extends Edge = Edge>({\n id,\n edgesFocusable,\n edgesUpdatable,\n elementsSelectable,\n onClick,\n onDoubleClick,\n onContextMenu,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n edgeUpdaterRadius,\n onEdgeUpdate,\n onEdgeUpdateStart,\n onEdgeUpdateEnd,\n rfId,\n edgeTypes,\n noPanClassName,\n onError,\n disableKeyboardA11y,\n}: EdgeWrapperProps<EdgeType>): JSX.Element | null {\n let edge = useStore((s) => s.edgeLookup.get(id)!) as EdgeType;\n const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);\n edge = defaultEdgeOptions ? { ...defaultEdgeOptions, ...edge } : edge;\n\n let edgeType = edge.type || 'default';\n let EdgeComponent = edgeTypes?.[edgeType] || builtinEdgeTypes[edgeType];\n\n if (EdgeComponent === undefined) {\n onError?.('011', errorMessages['error011'](edgeType));\n edgeType = 'default';\n EdgeComponent = builtinEdgeTypes.default;\n }\n\n const isFocusable = !!(\n edge.focusable ||\n (edgesFocusable && typeof edge.focusable === 'undefined')\n );\n const isUpdatable =\n typeof onEdgeUpdate !== 'undefined' &&\n (edge.updatable ||\n (edgesUpdatable && typeof edge.updatable === 'undefined'));\n const isSelectable = !!(\n edge.selectable ||\n (elementsSelectable && typeof edge.selectable === 'undefined')\n );\n\n const edgeRef = useRef<SVGGElement>(null);\n const [updateHover, setUpdateHover] = useState<boolean>(false);\n const [updating, setUpdating] = useState<boolean>(false);\n const store = useStoreApi();\n\n const {\n zIndex,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n } = useStore(\n useCallback(\n (store) => {\n const sourceNode = store.nodeLookup.get(edge.source);\n const targetNode = store.nodeLookup.get(edge.target);\n\n if (!sourceNode || !targetNode) {\n return {\n zIndex: edge.zIndex,\n ...nullPosition,\n };\n }\n\n const edgePosition = getEdgePosition({\n id,\n sourceNode,\n targetNode,\n sourceHandle: edge.sourceHandle || null,\n targetHandle: edge.targetHandle || null,\n connectionMode: store.connectionMode,\n onError,\n });\n\n const zIndex = getElevatedEdgeZIndex({\n selected: edge.selected,\n zIndex: edge.zIndex,\n sourceNode,\n targetNode,\n elevateOnSelect: store.elevateEdgesOnSelect,\n });\n\n return {\n zIndex,\n ...(edgePosition || nullPosition),\n };\n },\n [\n edge.source,\n edge.target,\n edge.sourceHandle,\n edge.targetHandle,\n edge.selected,\n edge.zIndex,\n ],\n ),\n shallow,\n );\n\n const markerStartUrl = useMemo(\n () =>\n edge.markerStart\n ? `url('#${getMarkerId(edge.markerStart, rfId)}')`\n : undefined,\n [edge.markerStart, rfId],\n );\n\n const markerEndUrl = useMemo(\n () =>\n edge.markerEnd\n ? `url('#${getMarkerId(edge.markerEnd, rfId)}')`\n : undefined,\n [edge.markerEnd, rfId],\n );\n\n if (\n edge.hidden ||\n sourceX === null ||\n sourceY === null ||\n targetX === null ||\n targetY === null\n ) {\n return null;\n }\n\n const onEdgeClick = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => {\n const { addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } =\n store.getState();\n\n if (isSelectable) {\n store.setState({ nodesSelectionActive: false });\n\n if (edge.selected && multiSelectionActive) {\n unselectNodesAndEdges({ nodes: [], edges: [edge] });\n edgeRef.current?.blur();\n } else {\n addSelectedEdges([id]);\n }\n }\n\n if (onClick) {\n onClick(event, edge);\n }\n };\n\n const onEdgeDoubleClick = onDoubleClick\n ? (event: React.MouseEvent) => {\n onDoubleClick(event, { ...edge });\n }\n : undefined;\n const onEdgeContextMenu = onContextMenu\n ? (event: React.MouseEvent) => {\n onContextMenu(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseEnter = onMouseEnter\n ? (event: React.MouseEvent) => {\n onMouseEnter(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseMove = onMouseMove\n ? (event: React.MouseEvent) => {\n onMouseMove(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseLeave = onMouseLeave\n ? (event: React.MouseEvent) => {\n onMouseLeave(event, { ...edge });\n }\n : undefined;\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n !disableKeyboardA11y &&\n elementSelectionKeys.includes(event.key) &&\n isSelectable\n ) {\n const { unselectNodesAndEdges, addSelectedEdges } = store.getState();\n const unselect = event.key === 'Escape';\n\n if (unselect) {\n edgeRef.current?.blur();\n unselectNodesAndEdges({ edges: [edge] });\n } else {\n addSelectedEdges([id]);\n }\n }\n };\n\n return (\n <svg style={{ zIndex }}>\n <g\n className={cc([\n 'ink-flow__edge',\n `ink-flow__edge-${edgeType}`,\n edge.className,\n noPanClassName,\n {\n selected: edge.selected,\n animated: edge.animated,\n inactive: !isSelectable && !onClick,\n updating: updateHover,\n selectable: isSelectable,\n },\n ])}\n onClick={onEdgeClick}\n onDoubleClick={onEdgeDoubleClick}\n onContextMenu={onEdgeContextMenu}\n onMouseEnter={onEdgeMouseEnter}\n onMouseMove={onEdgeMouseMove}\n onMouseLeave={onEdgeMouseLeave}\n onKeyDown={isFocusable ? onKeyDown : undefined}\n tabIndex={isFocusable ? 0 : undefined}\n role={isFocusable ? 'button' : 'img'}\n data-id={id}\n data-testid={`rf__edge-${id}`}\n aria-label={\n edge.ariaLabel === null\n ? undefined\n : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`\n }\n aria-describedby={\n isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined\n }\n ref={edgeRef}\n >\n {!updating && (\n <EdgeComponent\n id={id}\n source={edge.source}\n target={edge.target}\n type={edge.type}\n selected={edge.selected}\n animated={edge.animated}\n label={edge.label}\n labelStyle={edge.labelStyle}\n labelShowBg={edge.labelShowBg}\n labelBgStyle={edge.labelBgStyle}\n labelBgPadding={edge.labelBgPadding}\n labelBgBorderRadius={edge.labelBgBorderRadius}\n sourceX={sourceX}\n sourceY={sourceY}\n targetX={targetX}\n targetY={targetY}\n sourcePosition={sourcePosition}\n targetPosition={targetPosition}\n data={edge.data}\n style={edge.style}\n sourceHandleId={edge.sourceHandle}\n targetHandleId={edge.targetHandle}\n markerStart={markerStartUrl}\n markerEnd={markerEndUrl}\n pathOptions={'pathOptions' in edge ? edge.pathOptions : undefined}\n interactionWidth={edge.interactionWidth}\n />\n )}\n {isUpdatable && (\n <EdgeUpdateAnchors<EdgeType>\n edge={edge}\n isUpdatable={isUpdatable}\n edgeUpdaterRadius={edgeUpdaterRadius}\n onEdgeUpdate={onEdgeUpdate}\n onEdgeUpdateStart={onEdgeUpdateStart}\n onEdgeUpdateEnd={onEdgeUpdateEnd}\n sourceX={sourceX}\n sourceY={sourceY}\n targetX={targetX}\n targetY={targetY}\n sourcePosition={sourcePosition}\n targetPosition={targetPosition}\n setUpdateHover={setUpdateHover}\n setUpdating={setUpdating}\n sourceHandleId={edge.sourceHandle}\n targetHandleId={edge.targetHandle}\n />\n )}\n </g>\n </svg>\n );\n}\n","import { memo, ReactNode } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport MarkerDefinitions from './MarkerDefinitions';\nimport { GraphViewProps } from '../GraphView';\nimport type { Edge, InkFlowState, Node } from '../../types';\nimport { useStore } from '../../hooks';\nimport { useVisibleEdgeIds } from '../../hooks/useVisibleEdgeIds';\nimport { EdgeWrapper } from '../../components/EdgeWrapper';\n\ntype EdgeRendererProps<EdgeType extends Edge = Edge> = Pick<\n GraphViewProps<Node, EdgeType>,\n // | 'onEdgeClick'\n // | 'onEdgeDoubleClick'\n | 'rfId'\n // | 'onlyRenderVisibleElements'\n | 'onEdgeUpdate'\n // | 'onEdgeContextMenu'\n // | 'onEdgeMouseEnter'\n // | 'onEdgeMouseMove'\n // | 'onEdgeMouseLeave'\n // | 'onEdgeUpdateStart'\n // | 'onEdgeUpdateEnd'\n // | 'edgeUpdaterRadius'\n | 'noPanClassName'\n> & {\n children?: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => ({\n width: s.width,\n height: s.height,\n edgesFocusable: s.edgesFocusable,\n edgesUpdatable: s.edgesUpdatable,\n elementsSelectable: s.elementsSelectable,\n connectionMode: s.connectionMode,\n onError: s.onError,\n});\n\nfunction EdgeRendererComponent<EdgeType extends Edge = Edge>({\n // defaultMarkerColor,\n // onlyRenderVisibleElements,\n rfId,\n noPanClassName,\n onEdgeUpdate,\n}: // edgeTypes,\n\n// onEdgeContextMenu,\n// onEdgeMouseEnter,\n// onEdgeMouseMove,\n// onEdgeMouseLeave,\n// onEdgeClick,\n// edgeUpdaterRadius,\n// onEdgeDoubleClick,\n// onEdgeUpdateStart,\n// onEdgeUpdateEnd,\n// disableKeyboardA11y,\nEdgeRendererProps<EdgeType>) {\n const { edgesFocusable, edgesUpdatable, elementsSelectable, onError } =\n useStore(selector, shallow);\n const edgeIds = useVisibleEdgeIds(false); // TODO onlyRenderVisibleElements\n\n return (\n <div className=\"ink-flow__edges\">\n <MarkerDefinitions defaultColor={''} rfId={rfId} />\n\n {edgeIds.map((id) => {\n return (\n <EdgeWrapper<EdgeType>\n key={id}\n id={id}\n edgesFocusable={edgesFocusable}\n edgesUpdatable={edgesUpdatable}\n elementsSelectable={elementsSelectable}\n noPanClassName={noPanClassName}\n onEdgeUpdate={onEdgeUpdate}\n // onContextMenu={onEdgeContextMenu}\n // onMouseEnter={onEdgeMouseEnter}\n // onMouseMove={onEdgeMouseMove}\n // onMouseLeave={onEdgeMouseLeave}\n // onClick={onEdgeClick}\n // edgeUpdaterRadius={edgeUpdaterRadius}\n // onDoubleClick={onEdgeDoubleClick}\n // onEdgeUpdateStart={onEdgeUpdateStart}\n // onEdgeUpdateEnd={onEdgeUpdateEnd}\n rfId={rfId}\n onError={onError}\n // edgeTypes={edgeTypes}\n // disableKeyboardA11y={disableKeyboardA11y}\n />\n );\n })}\n </div>\n );\n}\n\nEdgeRendererComponent.displayName = 'EdgeRenderer';\n\nexport const EdgeRenderer = memo(\n EdgeRendererComponent,\n) as typeof EdgeRendererComponent;\n","import { useCallback } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore } from './useStore';\nimport { InkFlowState } from '../types';\nimport { isEdgeVisible } from '../utils/edges';\n\n/**\n * Hook for getting the visible edge ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible edge ids\n */\nexport function useVisibleEdgeIds(onlyRenderVisible: boolean): string[] {\n const edgeIds = useStore(\n useCallback(\n (s: InkFlowState) => {\n if (!onlyRenderVisible) {\n return s.edges.map((edge) => edge.id);\n }\n\n const visibleEdgeIds = [];\n\n if (s.width && s.height) {\n for (const edge of s.edges) {\n const sourceNode = s.nodeLookup.get(edge.source);\n const targetNode = s.nodeLookup.get(edge.target);\n\n if (\n sourceNode &&\n targetNode &&\n isEdgeVisible({\n sourceNode,\n targetNode,\n width: s.width,\n height: s.height,\n transform: s.transform,\n })\n ) {\n visibleEdgeIds.push(edge.id);\n }\n }\n }\n\n return visibleEdgeIds;\n },\n [onlyRenderVisible],\n ),\n shallow,\n );\n\n return edgeIds;\n}\n","import type { ReactNode } from 'react';\n\nimport type { InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\n\nconst selector = (s: InkFlowState) => {\n // console.log('yk InkFlowState', s);\n\n return `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;\n};\n\ntype ViewportProps = {\n children: ReactNode;\n};\n\nexport function Viewport({ children }: ViewportProps) {\n const transform = useStore(selector);\n\n return (\n <div\n className=\"ink-flow__viewport xyflow__viewport ink-flow__container\"\n style={{ transform }}\n >\n {children}\n </div>\n );\n}\n","import { memo } from 'react';\n\nimport { FlowRenderer } from '../FlowRenderer';\nimport { NodeRenderer } from '../NodeRenderer';\nimport { EdgeRenderer } from '../EdgeRenderer';\nimport { Viewport } from '../Viewport';\nimport type { Edge, Node, InkFlowProps } from '../../types';\n\nexport type GraphViewProps<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n> = Omit<\n InkFlowProps<NodeType, EdgeType>,\n | 'onSelectionChange'\n | 'nodes'\n | 'edges'\n | 'onMove'\n | 'onMoveStart'\n | 'onMoveEnd'\n | 'elevateEdgesOnSelect'\n> &\n Required<\n Pick<\n InkFlowProps<NodeType, EdgeType>,\n | 'minZoom'\n | 'maxZoom'\n | 'noPanClassName'\n | 'noDragClassName'\n | 'nodeOrigin'\n | 'disableKeyboardA11y'\n >\n > & {\n rfId: string;\n };\n\nfunction GraphViewComponent<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>({\n rfId,\n minZoom,\n maxZoom,\n noPanClassName,\n noDragClassName,\n nodeOrigin,\n viewport,\n disableKeyboardA11y,\n translateExtent,\n defaultViewport,\n nodeTypes,\n elementsSelectable,\n onPaneClick,\n onPaneContextMenu,\n}: GraphViewProps<NodeType, EdgeType>) {\n return (\n <FlowRenderer<NodeType>\n minZoom={minZoom}\n maxZoom={maxZoom}\n noPanClassName={noPanClassName}\n noDragClassName={noDragClassName}\n isControlledViewport={!!viewport}\n disableKeyboardA11y={disableKeyboardA11y}\n translateExtent={translateExtent}\n defaultViewport={defaultViewport}\n elementsSelectable={elementsSelectable}\n onPaneClick={onPaneClick}\n onPaneContextMenu={onPaneContextMenu}\n >\n <Viewport>\n <EdgeRenderer<EdgeType> rfId={rfId} noPanClassName={noPanClassName} />\n {/* <ConnectionLineWrapper /> */}\n <div className=\"ink-flow__edgelabel-renderer\" />\n <NodeRenderer<NodeType>\n rfId={rfId}\n nodeTypes={nodeTypes}\n nodeOrigin={nodeOrigin}\n noDragClassName={noDragClassName}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={false}\n />\n <div className=\"ink-flow__viewport-portal\" />\n </Viewport>\n </FlowRenderer>\n );\n}\n\nGraphViewComponent.displayName = 'GraphView';\n\nexport const GraphView = memo(GraphViewComponent) as typeof GraphViewComponent;\n","import { infiniteExtent } from '../constants';\n\nimport type { Edge, InternalNode, Node, InkFlowStore } from '../types';\nimport { ConnectionMode, Transform } from '../types/system';\nimport { adoptUserNodes, updateConnectionLookup } from '../utils/store';\n\nconst getInitialState = ({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n} = {}): InkFlowStore => {\n const nodeLookup = new Map<string, InternalNode>();\n const parentLookup = new Map();\n const connectionLookup = new Map();\n const edgeLookup = new Map();\n const storeEdges = defaultEdges ?? edges ?? [];\n const storeNodes = defaultNodes ?? nodes ?? [];\n\n updateConnectionLookup(connectionLookup, edgeLookup, storeEdges);\n adoptUserNodes(storeNodes, nodeLookup, parentLookup, {\n nodeOrigin: [0, 0],\n elevateNodesOnSelect: false,\n });\n\n let transform: Transform = [0, 0, 1];\n\n // if (fitView && width && height) {\n // // @todo users nodeOrigin should be used here\n // const bounds = getInternalNodesBounds(nodeLookup, {\n // nodeOrigin: [0, 0],\n // filter: (node) =>\n // !!(\n // (node.width || node.initialWidth) &&\n // (node.height || node.initialHeight)\n // ),\n // });\n // const { x, y, zoom } = getViewportForBounds(\n // bounds,\n // width,\n // height,\n // 0.5,\n // 2,\n // 0.1,\n // );\n // transform = [x, y, zoom];\n // }\n\n return {\n rfId: '1',\n width: 0,\n height: 0,\n transform,\n nodes: storeNodes,\n nodeLookup,\n parentLookup,\n edges: storeEdges,\n edgeLookup,\n connectionLookup,\n onNodesChange: null,\n onEdgesChange: null,\n hasDefaultNodes: defaultNodes !== undefined,\n hasDefaultEdges: defaultEdges !== undefined,\n panZoom: null,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: infiniteExtent,\n nodeExtent: infiniteExtent,\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n connectionPosition: { x: 0, y: 0 },\n connectionStatus: null,\n connectionMode: ConnectionMode.Strict,\n domNode: null,\n paneDragging: false,\n noPanClassName: 'nopan',\n nodeOrigin: [0, 0],\n nodeDragThreshold: 1,\n\n snapGrid: [15, 15],\n snapToGrid: false,\n\n nodesDraggable: true,\n nodesConnectable: true,\n nodesFocusable: true,\n edgesFocusable: true,\n edgesUpdatable: true,\n elementsSelectable: true,\n elevateNodesOnSelect: true,\n elevateEdgesOnSelect: false,\n fitViewOnInit: false,\n fitViewDone: false,\n fitViewOnInitOptions: undefined,\n selectNodesOnDrag: true,\n\n multiSelectionActive: false,\n\n connectionStartHandle: null,\n connectionEndHandle: null,\n connectionClickStartHandle: null,\n connectOnClick: true,\n\n ariaLiveMessage: '',\n autoPanOnConnect: true,\n autoPanOnNodeDrag: true,\n connectionRadius: 20,\n onError: undefined,\n isValidConnection: undefined,\n onSelectionChangeHandlers: [],\n\n lib: 'react',\n debug: false,\n };\n};\n\nexport default getInitialState;\n","import { createWithEqualityFn } from 'zustand/traditional';\n\nimport {\n applyEdgeChanges,\n applyNodeChanges,\n createSelectionChange,\n getSelectionChanges,\n} from '../utils/changes';\nimport getInitialState from './initialState';\nimport type {\n Node,\n Edge,\n InkFlowState,\n FitViewOptions,\n UnselectNodesAndEdgesParams,\n} from '../types';\nimport {\n adoptUserNodes,\n handleExpandParent,\n updateAbsolutePositions,\n updateConnectionLookup,\n updateNodeInternals as updateNodeInternalsSystem,\n} from '../utils/store';\nimport {\n EdgeSelectionChange,\n NodeChange,\n NodeSelectionChange,\n} from '../types/system';\nimport { ParentExpandChild } from '../types/utils/types';\nimport { clampPosition } from '../utils/general';\nimport { fitView as fitViewSystem } from '../utils/graph';\nimport { panBy as panBySystem } from '../utils/store';\n\nconst createStore = ({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n}) =>\n createWithEqualityFn<InkFlowState>(\n (set, get) => ({\n ...getInitialState({\n nodes,\n edges,\n width,\n height,\n fitView,\n defaultNodes,\n defaultEdges,\n }),\n setNodes: (nodes: Node[]) => {\n const { nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect } =\n get();\n // setNodes() is called exclusively in response to user actions:\n // - either when the `<InkFlow nodes>` prop is updated in the controlled InkFlow setup,\n // - or when the user calls something like `InkFlowInstance.setNodes()` in an uncontrolled InkFlow setup.\n //\n // When this happens, we take the note objects passed by the user and extend them with fields\n // relevant for internal Ink Flow operations.\n adoptUserNodes(nodes, nodeLookup, parentLookup, {\n nodeOrigin,\n elevateNodesOnSelect,\n checkEquality: true,\n });\n\n set({ nodes });\n },\n setEdges: (edges: Edge[]) => {\n const { connectionLookup, edgeLookup } = get();\n\n updateConnectionLookup(connectionLookup, edgeLookup, edges);\n\n set({ edges });\n },\n setDefaultNodesAndEdges: (nodes?: Node[], edges?: Edge[]) => {\n if (nodes) {\n const { setNodes } = get();\n setNodes(nodes);\n set({ hasDefaultNodes: true });\n }\n if (edges) {\n const { setEdges } = get();\n setEdges(edges);\n set({ hasDefaultEdges: true });\n }\n },\n // Every node gets registerd at a ResizeObserver. Whenever a node\n // changes its dimensions, this function is called to measure the\n // new dimensions and update the nodes.\n updateNodeInternals: (updates) => {\n const {\n triggerNodeChanges,\n fitView,\n nodeLookup,\n parentLookup,\n fitViewOnInit,\n fitViewDone,\n fitViewOnInitOptions,\n domNode,\n nodeOrigin,\n debug,\n } = get();\n\n const { changes, updatedInternals } = updateNodeInternalsSystem(\n updates,\n nodeLookup,\n parentLookup,\n domNode,\n nodeOrigin,\n );\n\n if (!updatedInternals) {\n return;\n }\n\n updateAbsolutePositions(nodeLookup, { nodeOrigin });\n\n // we call fitView once initially after all dimensions are set\n let nextFitViewDone = fitViewDone;\n if (!fitViewDone && fitViewOnInit) {\n nextFitViewDone = fitView({\n ...fitViewOnInitOptions,\n nodes: fitViewOnInitOptions?.nodes,\n });\n }\n\n // here we are cirmumventing the onNodesChange handler\n // in order to be able to display nodes even if the user\n // has not provided an onNodesChange handler.\n // Nodes are only rendered if they have a width and height\n // attribute which they get from this handler.\n set({ fitViewDone: nextFitViewDone });\n\n if (changes?.length > 0) {\n if (debug) {\n console.log('Ink Flow: trigger node changes', changes);\n }\n triggerNodeChanges?.(changes);\n }\n },\n updateNodePositions: (nodeDragItems, dragging = false) => {\n const parentExpandChildren: ParentExpandChild[] = [];\n const changes = [];\n\n for (const [id, dragItem] of nodeDragItems) {\n // @todo add expandParent to drag item so that we can get rid of the look up here\n const change: NodeChange = {\n id,\n type: 'position',\n position: dragItem.position,\n dragging,\n };\n\n if (dragItem?.expandParent && dragItem?.parentId && change.position) {\n parentExpandChildren.push({\n id,\n parentId: dragItem.parentId,\n rect: {\n ...dragItem.internals.positionAbsolute,\n width: dragItem.measured.width!,\n height: dragItem.measured.height!,\n },\n });\n\n change.position.x = Math.max(0, change.position.x);\n change.position.y = Math.max(0, change.position.y);\n }\n\n changes.push(change);\n }\n\n if (parentExpandChildren.length > 0) {\n const { nodeLookup, parentLookup } = get();\n const parentExpandChanges = handleExpandParent(\n parentExpandChildren,\n nodeLookup,\n parentLookup,\n );\n changes.push(...parentExpandChanges);\n }\n\n get().triggerNodeChanges(changes);\n },\n triggerNodeChanges: (changes) => {\n const { onNodesChange, setNodes, nodes, hasDefaultNodes, debug } =\n get();\n\n if (changes?.length) {\n if (hasDefaultNodes) {\n const updatedNodes = applyNodeChanges(changes, nodes);\n setNodes(updatedNodes);\n }\n\n if (debug) {\n console.log('Ink Flow: trigger node changes', changes);\n }\n\n onNodesChange?.(changes);\n }\n },\n triggerEdgeChanges: (changes) => {\n const { onEdgesChange, setEdges, edges, hasDefaultEdges, debug } =\n get();\n\n if (changes?.length) {\n if (hasDefaultEdges) {\n const updatedEdges = applyEdgeChanges(changes, edges);\n setEdges(updatedEdges);\n }\n\n if (debug) {\n console.log('Ink Flow: trigger edge changes', changes);\n }\n\n onEdgesChange?.(changes);\n }\n },\n addSelectedNodes: (selectedNodeIds) => {\n const {\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n\n if (multiSelectionActive) {\n const nodeChanges = selectedNodeIds.map((nodeId) =>\n createSelectionChange(nodeId, true),\n );\n triggerNodeChanges(nodeChanges as NodeSelectionChange[]);\n return;\n }\n\n triggerNodeChanges(\n getSelectionChanges(nodeLookup, new Set([...selectedNodeIds]), true),\n );\n triggerEdgeChanges(getSelectionChanges(edgeLookup));\n },\n addSelectedEdges: (selectedEdgeIds) => {\n const {\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n\n if (multiSelectionActive) {\n const changedEdges = selectedEdgeIds.map((edgeId) =>\n createSelectionChange(edgeId, true),\n );\n triggerEdgeChanges(changedEdges as EdgeSelectionChange[]);\n return;\n }\n\n triggerEdgeChanges(\n getSelectionChanges(edgeLookup, new Set([...selectedEdgeIds])),\n );\n triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true));\n },\n unselectNodesAndEdges: ({\n nodes,\n edges,\n }: UnselectNodesAndEdgesParams = {}) => {\n const {\n edges: storeEdges,\n nodes: storeNodes,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n const nodesToUnselect = nodes ? nodes : storeNodes;\n const edgesToUnselect = edges ? edges : storeEdges;\n\n const nodeChanges = nodesToUnselect.map((n) => {\n n.selected = false;\n return createSelectionChange(n.id, false);\n });\n const edgeChanges = edgesToUnselect.map((edge) =>\n createSelectionChange(edge.id, false),\n );\n\n triggerNodeChanges(nodeChanges as NodeSelectionChange[]);\n triggerEdgeChanges(edgeChanges as EdgeSelectionChange[]);\n },\n setMinZoom: (minZoom) => {\n const { panZoom, maxZoom } = get();\n panZoom?.setScaleExtent([minZoom, maxZoom]);\n\n set({ minZoom });\n },\n setMaxZoom: (maxZoom) => {\n const { panZoom, minZoom } = get();\n panZoom?.setScaleExtent([minZoom, maxZoom]);\n\n set({ maxZoom });\n },\n setTranslateExtent: (translateExtent) => {\n get().panZoom?.setTranslateExtent(translateExtent);\n\n set({ translateExtent });\n },\n resetSelectedElements: () => {\n const { edges, nodes, triggerNodeChanges, triggerEdgeChanges } = get();\n\n const nodeChanges = nodes.reduce<NodeSelectionChange[]>(\n (res, node) =>\n node.selected\n ? [\n ...res,\n createSelectionChange(node.id, false) as NodeSelectionChange,\n ]\n : res,\n [],\n );\n const edgeChanges = edges.reduce<EdgeSelectionChange[]>(\n (res, edge) =>\n edge.selected\n ? [\n ...res,\n createSelectionChange(edge.id, false) as EdgeSelectionChange,\n ]\n : res,\n [],\n );\n\n triggerNodeChanges(nodeChanges);\n triggerEdgeChanges(edgeChanges);\n },\n setNodeExtent: (nodeExtent) => {\n const { nodeLookup } = get();\n\n for (const [, node] of nodeLookup) {\n const positionAbsolute = clampPosition(node.position, nodeExtent);\n\n nodeLookup.set(node.id, {\n ...node,\n internals: {\n ...node.internals,\n positionAbsolute,\n },\n });\n }\n\n set({\n nodeExtent,\n });\n },\n panBy: (delta): boolean => {\n const { transform, width, height, panZoom, translateExtent } = get();\n return panBySystem({\n delta,\n panZoom,\n transform,\n translateExtent,\n width,\n height,\n });\n },\n fitView: (options?: FitViewOptions): boolean => {\n const {\n panZoom,\n width,\n height,\n minZoom,\n maxZoom,\n nodeOrigin,\n nodeLookup,\n } = get();\n\n if (!panZoom) {\n return false;\n }\n\n return fitViewSystem(\n {\n nodeLookup,\n width,\n height,\n panZoom,\n minZoom,\n maxZoom,\n nodeOrigin,\n },\n options,\n );\n },\n cancelConnection: () =>\n set({\n connectionStatus: null,\n connectionStartHandle: null,\n connectionEndHandle: null,\n }),\n updateConnection: (params) => {\n const { connectionPosition } = get();\n\n const currentConnection = {\n ...params,\n connectionPosition: params.connectionPosition ?? connectionPosition,\n };\n\n set(currentConnection);\n },\n\n reset: () => set({ ...getInitialState() }),\n }),\n Object.is,\n );\n\nexport { createStore };\n","import { useState, type ReactNode } from 'react';\n\nimport { Provider } from '../../contexts/StoreContext';\nimport { createStore } from '../../store';\nimport type { Node, Edge } from '../../types';\nimport { BatchProvider } from '../BatchProvider';\n\nexport type InkFlowProviderProps = {\n initialNodes?: Node[];\n initialEdges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n initialWidth?: number;\n initialHeight?: number;\n fitView?: boolean;\n children: ReactNode;\n};\n\nexport function InkFlowProvider({\n initialNodes: nodes,\n initialEdges: edges,\n defaultNodes,\n defaultEdges,\n initialWidth: width,\n initialHeight: height,\n fitView,\n children,\n}: InkFlowProviderProps) {\n const [store] = useState(() =>\n createStore({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n }),\n );\n\n return (\n <Provider value={store}>\n <BatchProvider>{children}</BatchProvider>\n </Provider>\n );\n}\n","import { useContext, type ReactNode } from 'react';\n\nimport StoreContext from '../../contexts/StoreContext';\nimport type { Node, Edge } from '../../types';\nimport { InkFlowProvider } from '../../components/InkFlowProvider';\n\nexport function Wrapper({\n children,\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n children: ReactNode;\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n}) {\n const isWrapped = useContext(StoreContext);\n\n if (isWrapped) {\n return <>{children}</>;\n }\n\n return (\n <InkFlowProvider\n initialNodes={nodes}\n initialEdges={edges}\n defaultNodes={defaultNodes}\n defaultEdges={defaultEdges}\n initialWidth={width}\n initialHeight={height}\n fitView={fitView}\n >\n {children}\n </InkFlowProvider>\n );\n}\n","import { NodeOrigin, Viewport } from '../../types/system';\n\nexport const defaultNodeOrigin: NodeOrigin = [0, 0];\nexport const defaultViewport: Viewport = { x: 0, y: 0, zoom: 1 };\n","/*\n * This component helps us to update the store with the vlues coming from the user.\n * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`)\n * and values that have a dedicated setter function in the store (like `setNodes`).\n */\nimport { useEffect, useRef } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport type {\n Node,\n Edge,\n InkFlowState,\n InkFlowProps,\n FitViewOptions,\n} from '../../types';\nimport { infiniteExtent } from '../../constants';\nimport { CoordinateExtent } from '../../types/system';\nimport { defaultNodeOrigin } from '../../container/InkFlow/init-values';\n\n// these fields exist in the global store and we need to keep them up to date\nconst InkFlowFieldsToTrack = [\n 'nodes',\n 'edges',\n 'defaultNodes',\n 'defaultEdges',\n // 'onConnect',\n // 'onConnectStart',\n // 'onConnectEnd',\n // 'onClickConnectStart',\n // 'onClickConnectEnd',\n 'nodesDraggable',\n // 'nodesConnectable',\n // 'nodesFocusable',\n // 'edgesFocusable',\n // 'edgesUpdatable',\n // 'elevateNodesOnSelect',\n // 'elevateEdgesOnSelect',\n 'minZoom',\n 'maxZoom',\n 'nodeExtent',\n 'onNodesChange',\n 'onEdgesChange',\n 'elementsSelectable',\n // 'connectionMode',\n // 'snapGrid',\n // 'snapToGrid',\n 'translateExtent',\n // 'connectOnClick',\n 'defaultEdgeOptions',\n 'fitView',\n 'fitViewOptions',\n // 'onNodesDelete',\n // 'onEdgesDelete',\n // 'onDelete',\n // 'onNodeDrag',\n // 'onNodeDragStart',\n // 'onNodeDragStop',\n // 'onSelectionDrag',\n // 'onSelectionDragStart',\n // 'onSelectionDragStop',\n // 'onMoveStart',\n // 'onMove',\n // 'onMoveEnd',\n // 'noPanClassName',\n // 'nodeOrigin',\n // 'autoPanOnConnect',\n // 'autoPanOnNodeDrag',\n // 'onError',\n // 'connectionRadius',\n // 'isValidConnection',\n // 'selectNodesOnDrag',\n // 'nodeDragThreshold',\n // 'onBeforeDelete',\n // 'debug',\n] as const;\n\ntype InkFlowFieldsToTrack = typeof InkFlowFieldsToTrack[number];\ntype StoreUpdaterProps<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n> = Pick<InkFlowProps<NodeType, EdgeType>, InkFlowFieldsToTrack> & {\n rfId: string;\n};\n\n// rfId doesn't exist in InkFlowProps, but it's one of the fields we want to update\nconst fieldsToTrack = [...InkFlowFieldsToTrack, 'rfId'] as const;\n\nconst selector = (s: InkFlowState) => ({\n setNodes: s.setNodes,\n setEdges: s.setEdges,\n setMinZoom: s.setMinZoom,\n setMaxZoom: s.setMaxZoom,\n setTranslateExtent: s.setTranslateExtent,\n setNodeExtent: s.setNodeExtent,\n reset: s.reset,\n setDefaultNodesAndEdges: s.setDefaultNodesAndEdges,\n});\n\nconst initPrevValues = {\n // these are values that are also passed directly to other components\n // than the StoreUpdater. We can reduce the number of setStore calls\n // by setting the same values here as prev fields.\n translateExtent: infiniteExtent,\n nodeOrigin: defaultNodeOrigin,\n minZoom: 0.5,\n maxZoom: 2,\n elementsSelectable: true,\n noPanClassName: 'nopan',\n rfId: '1',\n};\n\nexport function StoreUpdater<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>(props: StoreUpdaterProps<NodeType, EdgeType>) {\n const {\n setNodes,\n setEdges,\n setMinZoom,\n setMaxZoom,\n setTranslateExtent,\n setNodeExtent,\n reset,\n setDefaultNodesAndEdges,\n } = useStore(selector, shallow);\n const store = useStoreApi<NodeType, EdgeType>();\n\n useEffect(() => {\n setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges);\n\n return () => {\n // when we reset the store we also need to reset the previous fields\n previousFields.current = initPrevValues;\n reset();\n };\n }, []);\n\n const previousFields =\n useRef<Partial<StoreUpdaterProps<NodeType, EdgeType>>>(initPrevValues);\n\n useEffect(\n () => {\n for (const fieldName of fieldsToTrack) {\n const fieldValue = props[fieldName];\n const previousFieldValue = previousFields.current[fieldName];\n\n if (fieldValue === previousFieldValue) continue;\n if (typeof props[fieldName] === 'undefined') continue;\n // Custom handling with dedicated setters for some fields\n if (fieldName === 'nodes') setNodes(fieldValue as Node[]);\n else if (fieldName === 'edges') setEdges(fieldValue as Edge[]);\n else if (fieldName === 'minZoom') setMinZoom(fieldValue as number);\n else if (fieldName === 'maxZoom') setMaxZoom(fieldValue as number);\n else if (fieldName === 'translateExtent')\n setTranslateExtent(fieldValue as CoordinateExtent);\n else if (fieldName === 'nodeExtent')\n setNodeExtent(fieldValue as CoordinateExtent);\n // Renamed fields\n else if (fieldName === 'fitView')\n store.setState({ fitViewOnInit: fieldValue as boolean });\n else if (fieldName === 'fitViewOptions')\n store.setState({\n fitViewOnInitOptions: fieldValue as FitViewOptions,\n });\n // General case\n else store.setState({ [fieldName]: fieldValue });\n }\n\n previousFields.current = props;\n },\n // Only re-run the effect if one of the fields we track changes\n fieldsToTrack.map((fieldName) => props[fieldName]),\n );\n\n return null;\n}\n","import { ForwardedRef, type CSSProperties } from 'react';\nimport cls from 'classnames';\nimport type { Edge, Node, InkFlowProps } from '../../types';\nimport { GraphView } from '../GraphView';\nimport { Wrapper } from './Wrapper';\nimport { StoreUpdater } from '../../components/StoreUpdater';\nimport { fixedForwardRef } from '../../utils/general';\nimport { infiniteExtent } from '../../constants';\nimport {\n defaultViewport as initViewport,\n defaultNodeOrigin,\n} from './init-values';\n\nconst wrapperStyle: CSSProperties = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n zIndex: 0,\n};\n\nfunction InkFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(\n {\n nodes,\n edges,\n translateExtent = infiniteExtent,\n defaultViewport = initViewport,\n minZoom = 0.5,\n maxZoom = 2,\n nodeOrigin,\n noDragClassName,\n noPanClassName,\n disableKeyboardA11y,\n nodeTypes,\n onNodesChange,\n onEdgesChange,\n fitView,\n fitViewOptions,\n nodeExtent,\n nodesDraggable,\n children,\n id,\n width,\n height,\n onPaneClick,\n onPaneContextMenu,\n ...rest\n }: InkFlowProps<NodeType, EdgeType>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const rfId = id || '1';\n console.log('yk 22', onPaneClick, onPaneContextMenu);\n\n return (\n <div\n {...rest}\n ref={ref}\n style={{ ...wrapperStyle }}\n className={cls(['ink-flow'])}\n data-testid=\"rf__wrapper\"\n id={id}\n >\n <Wrapper\n nodes={nodes}\n edges={edges}\n width={width}\n height={height}\n fitView={fitView}\n >\n <GraphView<NodeType, EdgeType>\n rfId={rfId}\n nodeTypes={nodeTypes}\n minZoom={minZoom}\n maxZoom={maxZoom}\n nodeOrigin={nodeOrigin}\n noDragClassName={noDragClassName}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={disableKeyboardA11y}\n translateExtent={translateExtent}\n defaultViewport={defaultViewport}\n onPaneClick={onPaneClick}\n onPaneContextMenu={onPaneContextMenu}\n />\n <StoreUpdater<NodeType, EdgeType>\n nodes={nodes}\n edges={edges}\n rfId={rfId}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n fitView={fitView}\n fitViewOptions={fitViewOptions}\n nodeExtent={nodeExtent}\n nodesDraggable={nodesDraggable}\n />\n {children}\n </Wrapper>\n </div>\n );\n}\n\nexport default fixedForwardRef(InkFlow);\n","export function PlusIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10 4.375C10.3452 4.375 10.625 4.65482 10.625 5V9.375H15C15.3452 9.375 15.625 9.65482 15.625 10C15.625 10.3452 15.3452 10.625 15 10.625H10.625V15C10.625 15.3452 10.3452 15.625 10 15.625C9.65482 15.625 9.375 15.3452 9.375 15V10.625H5C4.65482 10.625 4.375 10.3452 4.375 10C4.375 9.65482 4.65482 9.375 5 9.375H9.375V5C9.375 4.65482 9.65482 4.375 10 4.375Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function MinusIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.375 10C4.375 9.65482 4.65482 9.375 5 9.375H15C15.3452 9.375 15.625 9.65482 15.625 10C15.625 10.3452 15.3452 10.625 15 10.625H5C4.65482 10.625 4.375 10.3452 4.375 10Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function FitViewIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10 1.875C10.3452 1.875 10.625 2.15482 10.625 2.5V3.57152C13.6929 3.86613 16.1339 6.30708 16.4285 9.375H17.5C17.8452 9.375 18.125 9.65482 18.125 10C18.125 10.3452 17.8452 10.625 17.5 10.625H16.4285C16.1339 13.6929 13.6929 16.1339 10.625 16.4285V17.5C10.625 17.8452 10.3452 18.125 10 18.125C9.65482 18.125 9.375 17.8452 9.375 17.5V16.4285C6.30708 16.1339 3.86613 13.6929 3.57152 10.625H2.5C2.15482 10.625 1.875 10.3452 1.875 10C1.875 9.65482 2.15482 9.375 2.5 9.375H3.57152C3.86613 6.30708 6.30708 3.86613 9.375 3.57152V2.5C9.375 2.15482 9.65482 1.875 10 1.875ZM4.82878 10.625H5.83333C6.17851 10.625 6.45833 10.3452 6.45833 10C6.45833 9.65482 6.17851 9.375 5.83333 9.375H4.82878C5.11304 6.99811 6.99811 5.11304 9.375 4.82878V5.83333C9.375 6.17851 9.65482 6.45833 10 6.45833C10.3452 6.45833 10.625 6.17851 10.625 5.83333V4.82878C13.0019 5.11304 14.887 6.99811 15.1712 9.375H14.1667C13.8215 9.375 13.5417 9.65482 13.5417 10C13.5417 10.3452 13.8215 10.625 14.1667 10.625H15.1712C14.887 13.0019 13.0019 14.887 10.625 15.1712V14.1667C10.625 13.8215 10.3452 13.5417 10 13.5417C9.65482 13.5417 9.375 13.8215 9.375 14.1667V15.1712C6.99811 14.887 5.11304 13.0019 4.82878 10.625Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function LockIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 32\">\n <path d=\"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z\" />\n </svg>\n );\n}\n","export function UnlockIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 32\">\n <path d=\"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z\" />\n </svg>\n );\n}\n","import cc from 'classnames';\n\nimport type { ControlButtonProps } from './types';\n\nexport function ControlButton({\n children,\n className,\n ...rest\n}: ControlButtonProps) {\n return (\n <button\n type=\"button\"\n className={cc(['ink-flow__controls-button', className])}\n {...rest}\n >\n {children}\n </button>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport cc from 'classnames';\n\nimport { useStore } from '../../hooks/useStore';\nimport type { InkFlowState } from '../../types';\nimport { PanelPosition } from '../../types/system';\n\nexport type PanelProps = HTMLAttributes<HTMLDivElement> & {\n /** Set position of the panel\n * @example 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'\n */\n position?: PanelPosition;\n children: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => (s.userSelectionActive ? 'none' : 'all');\n\nexport function Panel({\n position = 'top-left',\n children,\n className,\n style,\n ...rest\n}: PanelProps) {\n const pointerEvents = useStore(selector);\n const positionClasses = `${position}`.split('-');\n\n return (\n <div\n className={cc(['ink-flow__panel', className, ...positionClasses])}\n style={{ ...style, pointerEvents }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","import { memo } from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\n\nimport { PlusIcon } from './Icons/Plus';\nimport { MinusIcon } from './Icons/Minus';\nimport { FitViewIcon } from './Icons/FitView';\nimport { LockIcon } from './Icons/Lock';\nimport { UnlockIcon } from './Icons/Unlock';\nimport { ControlButton } from './ControlButton';\nimport type { ControlProps } from './types';\nimport { InkFlowState } from '../../types';\nimport { useInkFlow } from '../../hooks/useInkFlow';\nimport { Panel } from '../../components/Panel';\n\nconst selector = (s: InkFlowState) => ({\n isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,\n minZoomReached: s.transform[2] <= s.minZoom,\n maxZoomReached: s.transform[2] >= s.maxZoom,\n});\n\nfunction ControlsComponent({\n style,\n showZoom = true,\n showFitView = true,\n showInteractive = true,\n fitViewOptions,\n onZoomIn,\n onZoomOut,\n onFitView,\n onInteractiveChange,\n className,\n children,\n position = 'bottom-left',\n orientation = 'vertical',\n 'aria-label': ariaLabel = 'Ink Flow controls',\n}: ControlProps) {\n const store = useStoreApi();\n const { isInteractive, minZoomReached, maxZoomReached } = useStore(\n selector,\n shallow,\n );\n const { zoomIn, zoomOut, fitView } = useInkFlow();\n\n const onZoomInHandler = () => {\n zoomIn();\n onZoomIn?.();\n };\n\n const onZoomOutHandler = () => {\n zoomOut();\n onZoomOut?.();\n };\n\n const onFitViewHandler = () => {\n fitView(fitViewOptions);\n onFitView?.();\n };\n\n const onToggleInteractivity = () => {\n store.setState({\n nodesDraggable: !isInteractive,\n nodesConnectable: !isInteractive,\n elementsSelectable: !isInteractive,\n });\n\n onInteractiveChange?.(!isInteractive);\n };\n\n const orientationClass =\n orientation === 'horizontal' ? 'horizontal' : 'vertical';\n\n return (\n <Panel\n className={cc(['ink-flow__controls', orientationClass, className])}\n position={position}\n style={style}\n data-testid=\"rf__controls\"\n aria-label={ariaLabel}\n >\n {showFitView && (\n <ControlButton\n className=\"ink-flow__controls-fitview\"\n onClick={onFitViewHandler}\n title=\"fit view\"\n aria-label=\"fit view\"\n >\n <FitViewIcon />\n </ControlButton>\n )}\n\n {showZoom && (\n <div className=\"ink-flow__controls-zoom\">\n <ControlButton\n onClick={onZoomInHandler}\n className=\"ink-flow__controls-zoomin\"\n title=\"zoom in\"\n aria-label=\"zoom in\"\n disabled={maxZoomReached}\n >\n <PlusIcon />\n </ControlButton>\n <ControlButton\n onClick={onZoomOutHandler}\n className=\"ink-flow__controls-zoomout\"\n title=\"zoom out\"\n aria-label=\"zoom out\"\n disabled={minZoomReached}\n >\n <MinusIcon />\n </ControlButton>\n </div>\n )}\n\n {showInteractive && (\n <ControlButton\n className=\"ink-flow__controls-interactive\"\n onClick={onToggleInteractivity}\n title=\"toggle interactivity\"\n aria-label=\"toggle interactivity\"\n >\n {isInteractive ? <UnlockIcon /> : <LockIcon />}\n </ControlButton>\n )}\n {children}\n </Panel>\n );\n}\n\nControlsComponent.displayName = 'Controls';\n\nexport const Controls = memo(ControlsComponent);\n","console.log('types');\nexport * from './nodes';\nexport * from './edges';\nexport * from './props';\nexport * from './general';\nexport * from './store';\nexport * from './system/utils';\n// export * from './instance';\n","var n,r,t,e,o,i,u,a,f,c,s,d,h,v,l,p,g,y,b,m,_,w,E,j,k,x,N,O,I,C,A,M,L,P,S,T,R,z,F,D,B,U,G,V,q,$,Y,W,J,K,Q,H,X,Z,nn,rn,tn,en,on,un,an,fn,cn,sn,dn,hn,vn,ln,pn,gn,yn,bn,mn,_n,wn,En,jn,kn,xn,Nn,On,In,Cn,An,Mn,Ln,Pn,Sn,Tn,Rn,zn,Fn,Dn,Bn,Un,Gn,Vn,qn,$n,Yn,Wn,Jn,Kn,Qn,Hn,Xn,Zn,nr,rr=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function tr(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,\"default\")?n.default:n}function er(){if(e)return t;return e=1,t=function(n,r){return n===r||n!=n&&r!=r}}function or(){if(i)return o;i=1;var n=er();return o=function(r,t){for(var e=r.length;e--;)if(n(r[e][0],t))return e;return-1}}function ir(){if(p)return l;p=1;var t=r?n:(r=1,n=function(){this.__data__=[],this.size=0}),e=function(){if(a)return u;a=1;var n=or(),r=Array.prototype.splice;return u=function(t){var e=this.__data__,o=n(e,t);return!(o<0||(o==e.length-1?e.pop():r.call(e,o,1),--this.size,0))}}(),o=function(){if(c)return f;c=1;var n=or();return f=function(r){var t=this.__data__,e=n(t,r);return e<0?void 0:t[e][1]}}(),i=function(){if(d)return s;d=1;var n=or();return s=function(r){return n(this.__data__,r)>-1}}(),g=function(){if(v)return h;v=1;var n=or();return h=function(r,t){var e=this.__data__,o=n(e,r);return o<0?(++this.size,e.push([r,t])):e[o][1]=t,this}}();function y(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return y.prototype.clear=t,y.prototype.delete=e,y.prototype.get=o,y.prototype.has=i,y.prototype.set=g,l=y}function ur(){if(x)return k;x=1;var n=\"object\"==typeof rr&&rr&&rr.Object===Object&&rr;return k=n}function ar(){if(O)return N;O=1;var n=ur(),r=\"object\"==typeof self&&self&&self.Object===Object&&self,t=n||r||Function(\"return this\")();return N=t}function fr(){if(C)return I;C=1;var n=ar().Symbol;return I=n}function cr(){if(T)return S;T=1;var n=fr(),r=function(){if(M)return A;M=1;var n=fr(),r=Object.prototype,t=r.hasOwnProperty,e=r.toString,o=n?n.toStringTag:void 0;return A=function(n){var r=t.call(n,o),i=n[o];try{n[o]=void 0;var u=!0}catch(n){}var a=e.call(n);return u&&(r?n[o]=i:delete n[o]),a}}(),t=function(){if(P)return L;P=1;var n=Object.prototype.toString;return L=function(r){return n.call(r)}}(),e=n?n.toStringTag:void 0;return S=function(n){return null==n?void 0===n?\"[object Undefined]\":\"[object Null]\":e&&e in Object(n)?r(n):t(n)}}function sr(){if(z)return R;return z=1,R=function(n){var r=typeof n;return null!=n&&(\"object\"==r||\"function\"==r)}}function dr(){if(D)return F;D=1;var n=cr(),r=sr();return F=function(t){if(!r(t))return!1;var e=n(t);return\"[object Function]\"==e||\"[object GeneratorFunction]\"==e||\"[object AsyncFunction]\"==e||\"[object Proxy]\"==e}}function hr(){if(V)return G;V=1;var n,r=function(){if(U)return B;U=1;var n=ar()[\"__core-js_shared__\"];return B=n}(),t=(n=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+n:\"\";return G=function(n){return!!t&&t in n}}function vr(){if($)return q;$=1;var n=Function.prototype.toString;return q=function(r){if(null!=r){try{return n.call(r)}catch(n){}try{return r+\"\"}catch(n){}}return\"\"}}function lr(){if(H)return Q;H=1;var n=function(){if(W)return Y;W=1;var n=dr(),r=hr(),t=sr(),e=vr(),o=/^\\[object .+?Constructor\\]$/,i=Function.prototype,u=Object.prototype,a=i.toString,f=u.hasOwnProperty,c=RegExp(\"^\"+a.call(f).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");return Y=function(i){return!(!t(i)||r(i))&&(n(i)?c:o).test(e(i))}}(),r=K?J:(K=1,J=function(n,r){return null==n?void 0:n[r]});return Q=function(t,e){var o=r(t,e);return n(o)?o:void 0}}function pr(){if(Z)return X;Z=1;var n=lr()(ar(),\"Map\");return X=n}function gr(){if(rn)return nn;rn=1;var n=lr()(Object,\"create\");return nn=n}function yr(){if(ln)return vn;ln=1;var n=function(){if(en)return tn;en=1;var n=gr();return tn=function(){this.__data__=n?n(null):{},this.size=0}}(),r=un?on:(un=1,on=function(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}),t=function(){if(fn)return an;fn=1;var n=gr(),r=Object.prototype.hasOwnProperty;return an=function(t){var e=this.__data__;if(n){var o=e[t];return\"__lodash_hash_undefined__\"===o?void 0:o}return r.call(e,t)?e[t]:void 0}}(),e=function(){if(sn)return cn;sn=1;var n=gr(),r=Object.prototype.hasOwnProperty;return cn=function(t){var e=this.__data__;return n?void 0!==e[t]:r.call(e,t)}}(),o=function(){if(hn)return dn;hn=1;var n=gr();return dn=function(r,t){var e=this.__data__;return this.size+=this.has(r)?0:1,e[r]=n&&void 0===t?\"__lodash_hash_undefined__\":t,this}}();function i(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return i.prototype.clear=n,i.prototype.delete=r,i.prototype.get=t,i.prototype.has=e,i.prototype.set=o,vn=i}function br(){if(_n)return mn;_n=1;var n=bn?yn:(bn=1,yn=function(n){var r=typeof n;return\"string\"==r||\"number\"==r||\"symbol\"==r||\"boolean\"==r?\"__proto__\"!==n:null===n});return mn=function(r,t){var e=r.__data__;return n(t)?e[\"string\"==typeof t?\"string\":\"hash\"]:e.map}}function mr(){if(An)return Cn;An=1;var n=function(){if(gn)return pn;gn=1;var n=yr(),r=ir(),t=pr();return pn=function(){this.size=0,this.__data__={hash:new n,map:new(t||r),string:new n}}}(),r=function(){if(En)return wn;En=1;var n=br();return wn=function(r){var t=n(this,r).delete(r);return this.size-=t?1:0,t}}(),t=function(){if(kn)return jn;kn=1;var n=br();return jn=function(r){return n(this,r).get(r)}}(),e=function(){if(Nn)return xn;Nn=1;var n=br();return xn=function(r){return n(this,r).has(r)}}(),o=function(){if(In)return On;In=1;var n=br();return On=function(r,t){var e=n(this,r),o=e.size;return e.set(r,t),this.size+=e.size==o?0:1,this}}();function i(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return i.prototype.clear=n,i.prototype.delete=r,i.prototype.get=t,i.prototype.has=e,i.prototype.set=o,Cn=i}function _r(){if(Sn)return Pn;Sn=1;var n=ir(),r=function(){if(y)return g;y=1;var n=ir();return g=function(){this.__data__=new n,this.size=0}}(),t=m?b:(m=1,b=function(n){var r=this.__data__,t=r.delete(n);return this.size=r.size,t}),e=w?_:(w=1,_=function(n){return this.__data__.get(n)}),o=j?E:(j=1,E=function(n){return this.__data__.has(n)}),i=function(){if(Ln)return Mn;Ln=1;var n=ir(),r=pr(),t=mr();return Mn=function(e,o){var i=this.__data__;if(i instanceof n){var u=i.__data__;if(!r||u.length<199)return u.push([e,o]),this.size=++i.size,this;i=this.__data__=new t(u)}return i.set(e,o),this.size=i.size,this}}();function u(r){var t=this.__data__=new n(r);this.size=t.size}return u.prototype.clear=r,u.prototype.delete=t,u.prototype.get=e,u.prototype.has=o,u.prototype.set=i,Pn=u}function wr(){if(Rn)return Tn;return Rn=1,Tn=function(n,r){for(var t=-1,e=null==n?0:n.length;++t<e&&!1!==r(n[t],t,n););return n}}function Er(){if(Fn)return zn;Fn=1;var n=lr(),r=function(){try{var r=n(Object,\"defineProperty\");return r({},\"\",{}),r}catch(n){}}();return zn=r}function jr(){if(Bn)return Dn;Bn=1;var n=Er();return Dn=function(r,t,e){\"__proto__\"==t&&n?n(r,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):r[t]=e}}function kr(){if(Gn)return Un;Gn=1;var n=jr(),r=er(),t=Object.prototype.hasOwnProperty;return Un=function(e,o,i){var u=e[o];t.call(e,o)&&r(u,i)&&(void 0!==i||o in e)||n(e,o,i)}}function xr(){if(qn)return Vn;qn=1;var n=kr(),r=jr();return Vn=function(t,e,o,i){var u=!o;o||(o={});for(var a=-1,f=e.length;++a<f;){var c=e[a],s=i?i(o[c],t[c],c,o,t):void 0;void 0===s&&(s=t[c]),u?r(o,c,s):n(o,c,s)}return o}}function Nr(){if(Jn)return Wn;return Jn=1,Wn=function(n){return null!=n&&\"object\"==typeof n}}function Or(){if(Xn)return Hn;Xn=1;var n=function(){if(Qn)return Kn;Qn=1;var n=cr(),r=Nr();return Kn=function(t){return r(t)&&\"[object Arguments]\"==n(t)}}(),r=Nr(),t=Object.prototype,e=t.hasOwnProperty,o=t.propertyIsEnumerable,i=n(function(){return arguments}())?n:function(n){return r(n)&&e.call(n,\"callee\")&&!o.call(n,\"callee\")};return Hn=i}function Ir(){if(nr)return Zn;nr=1;var n=Array.isArray;return Zn=n}var Cr,Ar,Mr,Lr,Pr,Sr,Tr,Rr,zr,Fr,Dr,Br={exports:{}};function Ur(){return Mr||(Mr=1,function(n,r){var t=ar(),e=Ar?Cr:(Ar=1,Cr=function(){return!1}),o=r&&!r.nodeType&&r,i=o&&n&&!n.nodeType&&n,u=i&&i.exports===o?t.Buffer:void 0,a=(u?u.isBuffer:void 0)||e;n.exports=a}(Br,Br.exports)),Br.exports}function Gr(){if(Pr)return Lr;Pr=1;var n=/^(?:0|[1-9]\\d*)$/;return Lr=function(r,t){var e=typeof r;return!!(t=null==t?9007199254740991:t)&&(\"number\"==e||\"symbol\"!=e&&n.test(r))&&r>-1&&r%1==0&&r<t}}function Vr(){if(Tr)return Sr;Tr=1;return Sr=function(n){return\"number\"==typeof n&&n>-1&&n%1==0&&n<=9007199254740991}}function qr(){if(Dr)return Fr;return Dr=1,Fr=function(n){return function(r){return n(r)}}}Br.exports;var $r,Yr,Wr,Jr,Kr,Qr,Hr,Xr,Zr,nt,rt,tt,et,ot,it,ut,at,ft,ct,st,dt,ht,vt,lt,pt,gt,yt,bt={exports:{}};function mt(){return $r||($r=1,n=bt,r=bt.exports,t=ur(),e=r&&!r.nodeType&&r,o=e&&n&&!n.nodeType&&n,i=o&&o.exports===e&&t.process,u=function(){try{var n=o&&o.require&&o.require(\"util\").types;return n||i&&i.binding&&i.binding(\"util\")}catch(n){}}(),n.exports=u),bt.exports;var n,r,t,e,o,i,u}function _t(){if(Wr)return Yr;Wr=1;var n=function(){if(zr)return Rr;zr=1;var n=cr(),r=Vr(),t=Nr(),e={};return e[\"[object Float32Array]\"]=e[\"[object Float64Array]\"]=e[\"[object Int8Array]\"]=e[\"[object Int16Array]\"]=e[\"[object Int32Array]\"]=e[\"[object Uint8Array]\"]=e[\"[object Uint8ClampedArray]\"]=e[\"[object Uint16Array]\"]=e[\"[object Uint32Array]\"]=!0,e[\"[object Arguments]\"]=e[\"[object Array]\"]=e[\"[object ArrayBuffer]\"]=e[\"[object Boolean]\"]=e[\"[object DataView]\"]=e[\"[object Date]\"]=e[\"[object Error]\"]=e[\"[object Function]\"]=e[\"[object Map]\"]=e[\"[object Number]\"]=e[\"[object Object]\"]=e[\"[object RegExp]\"]=e[\"[object Set]\"]=e[\"[object String]\"]=e[\"[object WeakMap]\"]=!1,Rr=function(o){return t(o)&&r(o.length)&&!!e[n(o)]}}(),r=qr(),t=mt(),e=t&&t.isTypedArray,o=e?r(e):n;return Yr=o}function wt(){if(Kr)return Jr;Kr=1;var n=Yn?$n:(Yn=1,$n=function(n,r){for(var t=-1,e=Array(n);++t<n;)e[t]=r(t);return e}),r=Or(),t=Ir(),e=Ur(),o=Gr(),i=_t(),u=Object.prototype.hasOwnProperty;return Jr=function(a,f){var c=t(a),s=!c&&r(a),d=!c&&!s&&e(a),h=!c&&!s&&!d&&i(a),v=c||s||d||h,l=v?n(a.length,String):[],p=l.length;for(var g in a)!f&&!u.call(a,g)||v&&(\"length\"==g||d&&(\"offset\"==g||\"parent\"==g)||h&&(\"buffer\"==g||\"byteLength\"==g||\"byteOffset\"==g)||o(g,p))||l.push(g);return l}}function Et(){if(Hr)return Qr;Hr=1;var n=Object.prototype;return Qr=function(r){var t=r&&r.constructor;return r===(\"function\"==typeof t&&t.prototype||n)}}function jt(){if(Zr)return Xr;return Zr=1,Xr=function(n,r){return function(t){return n(r(t))}}}function kt(){if(et)return tt;et=1;var n=Et(),r=function(){if(rt)return nt;rt=1;var n=jt()(Object.keys,Object);return nt=n}(),t=Object.prototype.hasOwnProperty;return tt=function(e){if(!n(e))return r(e);var o=[];for(var i in Object(e))t.call(e,i)&&\"constructor\"!=i&&o.push(i);return o}}function xt(){if(it)return ot;it=1;var n=dr(),r=Vr();return ot=function(t){return null!=t&&r(t.length)&&!n(t)}}function Nt(){if(at)return ut;at=1;var n=wt(),r=kt(),t=xt();return ut=function(e){return t(e)?n(e):r(e)}}function Ot(){if(vt)return ht;vt=1;var n=sr(),r=Et(),t=dt?st:(dt=1,st=function(n){var r=[];if(null!=n)for(var t in Object(n))r.push(t);return r}),e=Object.prototype.hasOwnProperty;return ht=function(o){if(!n(o))return t(o);var i=r(o),u=[];for(var a in o)(\"constructor\"!=a||!i&&e.call(o,a))&&u.push(a);return u}}function It(){if(pt)return lt;pt=1;var n=wt(),r=Ot(),t=xt();return lt=function(e){return t(e)?n(e,!0):r(e)}}bt.exports;var Ct,At,Mt,Lt,Pt,St,Tt,Rt,zt,Ft,Dt,Bt,Ut,Gt,Vt,qt,$t,Yt,Wt,Jt,Kt,Qt,Ht,Xt,Zt,ne,re,te,ee,oe,ie,ue,ae,fe,ce,se,de,he,ve,le,pe,ge,ye,be,me,_e,we,Ee,je,ke,xe,Ne,Oe,Ie,Ce,Ae,Me,Le,Pe,Se,Te,Re,ze,Fe,De,Be,Ue,Ge,Ve,qe,$e,Ye,We,Je,Ke,Qe,He,Xe,Ze,no,ro,to,eo,oo,io,uo,ao,fo,co,so,ho,vo,lo,po,go,yo,bo,mo,_o,wo,Eo,jo,ko,xo,No,Oo,Io,Co,Ao,Mo,Lo,Po,So,To,Ro,zo,Fo,Do,Bo,Uo,Go,Vo,qo,$o,Yo,Wo,Jo,Ko,Qo,Ho,Xo,Zo,ni,ri,ti,ei,oi,ii,ui,ai,fi,ci,si,di,hi,vi,li,pi,gi,yi,bi,mi,_i,wi,Ei,ji,ki,xi,Ni,Oi,Ii,Ci,Ai,Mi,Li,Pi,Si,Ti,Ri,zi,Fi,Di,Bi,Ui,Gi,Vi,qi,$i,Yi,Wi,Ji,Ki,Qi,Hi,Xi,Zi,nu,ru,tu,eu,ou,iu,uu,au,fu,cu,su,du,hu,vu,lu,pu,gu,yu,bu,mu,_u,wu,Eu,ju,ku,xu,Nu,Ou,Iu,Cu,Au,Mu,Lu,Pu,Su,Tu,Ru,zu,Fu,Du,Bu,Uu,Gu,Vu,qu,$u,Yu,Wu,Ju,Ku,Qu,Hu,Xu,Zu,na,ra,ta,ea,oa,ia,ua,aa,fa,ca,sa,da,ha,va,la,pa,ga,ya,ba,ma,_a,wa,Ea,ja,ka,xa,Na,Oa,Ia,Ca,Aa,Ma,La,Pa,Sa,Ta,Ra,za,Fa,Da,Ba={exports:{}};function Ua(){return Ct||(Ct=1,n=Ba,r=Ba.exports,t=ar(),e=r&&!r.nodeType&&r,o=e&&n&&!n.nodeType&&n,i=o&&o.exports===e?t.Buffer:void 0,u=i?i.allocUnsafe:void 0,n.exports=function(n,r){if(r)return n.slice();var t=n.length,e=u?u(t):new n.constructor(t);return n.copy(e),e}),Ba.exports;var n,r,t,e,o,i,u}function Ga(){if(Mt)return At;return Mt=1,At=function(n,r){var t=-1,e=n.length;for(r||(r=Array(e));++t<e;)r[t]=n[t];return r}}function Va(){if(Pt)return Lt;return Pt=1,Lt=function(n,r){for(var t=-1,e=null==n?0:n.length,o=0,i=[];++t<e;){var u=n[t];r(u,t,n)&&(i[o++]=u)}return i}}function qa(){if(Tt)return St;return Tt=1,St=function(){return[]}}function $a(){if(zt)return Rt;zt=1;var n=Va(),r=qa(),t=Object.prototype.propertyIsEnumerable,e=Object.getOwnPropertySymbols;return Rt=e?function(r){return null==r?[]:(r=Object(r),n(e(r),(function(n){return t.call(r,n)})))}:r}function Ya(){if(Ut)return Bt;return Ut=1,Bt=function(n,r){for(var t=-1,e=r.length,o=n.length;++t<e;)n[o+t]=r[t];return n}}function Wa(){if(Vt)return Gt;Vt=1;var n=jt()(Object.getPrototypeOf,Object);return Gt=n}function Ja(){if($t)return qt;$t=1;var n=Ya(),r=Wa(),t=$a(),e=qa(),o=Object.getOwnPropertySymbols;return qt=o?function(e){for(var o=[];e;)n(o,t(e)),e=r(e);return o}:e}function Ka(){if(Kt)return Jt;Kt=1;var n=Ya(),r=Ir();return Jt=function(t,e,o){var i=e(t);return r(t)?i:n(i,o(t))}}function Qa(){if(Ht)return Qt;Ht=1;var n=Ka(),r=$a(),t=Nt();return Qt=function(e){return n(e,t,r)}}function Ha(){if(ie)return oe;ie=1;var n=lr()(ar(),\"Set\");return oe=n}function Xa(){if(ce)return fe;ce=1;var n=function(){if(re)return ne;re=1;var n=lr()(ar(),\"DataView\");return ne=n}(),r=pr(),t=function(){if(ee)return te;ee=1;var n=lr()(ar(),\"Promise\");return te=n}(),e=Ha(),o=function(){if(ae)return ue;ae=1;var n=lr()(ar(),\"WeakMap\");return ue=n}(),i=cr(),u=vr(),a=\"[object Map]\",f=\"[object Promise]\",c=\"[object Set]\",s=\"[object WeakMap]\",d=\"[object DataView]\",h=u(n),v=u(r),l=u(t),p=u(e),g=u(o),y=i;return(n&&y(new n(new ArrayBuffer(1)))!=d||r&&y(new r)!=a||t&&y(t.resolve())!=f||e&&y(new e)!=c||o&&y(new o)!=s)&&(y=function(n){var r=i(n),t=\"[object Object]\"==r?n.constructor:void 0,e=t?u(t):\"\";if(e)switch(e){case h:return d;case v:return a;case l:return f;case p:return c;case g:return s}return r}),fe=y}function Za(){if(ve)return he;ve=1;var n=ar().Uint8Array;return he=n}function nf(){if(pe)return le;pe=1;var n=Za();return le=function(r){var t=new r.constructor(r.byteLength);return new n(t).set(new n(r)),t}}function rf(){if(je)return Ee;je=1;var n=nf();return Ee=function(r,t){var e=t?n(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.length)}}function tf(){if(xe)return ke;xe=1;var n=nf(),r=function(){if(ye)return ge;ye=1;var n=nf();return ge=function(r,t){var e=t?n(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.byteLength)}}(),t=function(){if(me)return be;me=1;var n=/\\w*$/;return be=function(r){var t=new r.constructor(r.source,n.exec(r));return t.lastIndex=r.lastIndex,t}}(),e=function(){if(we)return _e;we=1;var n=fr(),r=n?n.prototype:void 0,t=r?r.valueOf:void 0;return _e=function(n){return t?Object(t.call(n)):{}}}(),o=rf();return ke=function(i,u,a){var f=i.constructor;switch(u){case\"[object ArrayBuffer]\":return n(i);case\"[object Boolean]\":case\"[object Date]\":return new f(+i);case\"[object DataView]\":return r(i,a);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":case\"[object Uint16Array]\":case\"[object Uint32Array]\":return o(i,a);case\"[object Map]\":case\"[object Set]\":return new f;case\"[object Number]\":case\"[object String]\":return new f(i);case\"[object RegExp]\":return t(i);case\"[object Symbol]\":return e(i)}}}function ef(){if(Oe)return Ne;Oe=1;var n=sr(),r=Object.create,t=function(){function t(){}return function(e){if(!n(e))return{};if(r)return r(e);t.prototype=e;var o=new t;return t.prototype=void 0,o}}();return Ne=t}function of(){if(Ce)return Ie;Ce=1;var n=ef(),r=Wa(),t=Et();return Ie=function(e){return\"function\"!=typeof e.constructor||t(e)?{}:n(r(e))}}function uf(){if(Pe)return Le;Pe=1;var n=function(){if(Me)return Ae;Me=1;var n=Xa(),r=Nr();return Ae=function(t){return r(t)&&\"[object Map]\"==n(t)}}(),r=qr(),t=mt(),e=t&&t.isMap,o=e?r(e):n;return Le=o}function af(){if(ze)return Re;ze=1;var n=function(){if(Te)return Se;Te=1;var n=Xa(),r=Nr();return Se=function(t){return r(t)&&\"[object Set]\"==n(t)}}(),r=qr(),t=mt(),e=t&&t.isSet,o=e?r(e):n;return Re=o}function ff(){if(De)return Fe;De=1;var n=_r(),r=wr(),t=kr(),e=function(){if(ct)return ft;ct=1;var n=xr(),r=Nt();return ft=function(t,e){return t&&n(e,r(e),t)}}(),o=function(){if(yt)return gt;yt=1;var n=xr(),r=It();return gt=function(t,e){return t&&n(e,r(e),t)}}(),i=Ua(),u=Ga(),a=function(){if(Dt)return Ft;Dt=1;var n=xr(),r=$a();return Ft=function(t,e){return n(t,r(t),e)}}(),f=function(){if(Wt)return Yt;Wt=1;var n=xr(),r=Ja();return Yt=function(t,e){return n(t,r(t),e)}}(),c=Qa(),s=function(){if(Zt)return Xt;Zt=1;var n=Ka(),r=Ja(),t=It();return Xt=function(e){return n(e,t,r)}}(),d=Xa(),h=function(){if(de)return se;de=1;var n=Object.prototype.hasOwnProperty;return se=function(r){var t=r.length,e=new r.constructor(t);return t&&\"string\"==typeof r[0]&&n.call(r,\"index\")&&(e.index=r.index,e.input=r.input),e}}(),v=tf(),l=of(),p=Ir(),g=Ur(),y=uf(),b=sr(),m=af(),_=Nt(),w=It(),E=\"[object Arguments]\",j=\"[object Function]\",k=\"[object Object]\",x={};return x[E]=x[\"[object Array]\"]=x[\"[object ArrayBuffer]\"]=x[\"[object DataView]\"]=x[\"[object Boolean]\"]=x[\"[object Date]\"]=x[\"[object Float32Array]\"]=x[\"[object Float64Array]\"]=x[\"[object Int8Array]\"]=x[\"[object Int16Array]\"]=x[\"[object Int32Array]\"]=x[\"[object Map]\"]=x[\"[object Number]\"]=x[k]=x[\"[object RegExp]\"]=x[\"[object Set]\"]=x[\"[object String]\"]=x[\"[object Symbol]\"]=x[\"[object Uint8Array]\"]=x[\"[object Uint8ClampedArray]\"]=x[\"[object Uint16Array]\"]=x[\"[object Uint32Array]\"]=!0,x[\"[object Error]\"]=x[j]=x[\"[object WeakMap]\"]=!1,Fe=function N(O,I,C,A,M,L){var P,S=1&I,T=2&I,R=4&I;if(C&&(P=M?C(O,A,M,L):C(O)),void 0!==P)return P;if(!b(O))return O;var z=p(O);if(z){if(P=h(O),!S)return u(O,P)}else{var F=d(O),D=F==j||\"[object GeneratorFunction]\"==F;if(g(O))return i(O,S);if(F==k||F==E||D&&!M){if(P=T||D?{}:l(O),!S)return T?f(O,o(P,O)):a(O,e(P,O))}else{if(!x[F])return M?O:{};P=v(O,F,S)}}L||(L=new n);var B=L.get(O);if(B)return B;L.set(O,P),m(O)?O.forEach((function(n){P.add(N(n,I,C,n,O,L))})):y(O)&&O.forEach((function(n,r){P.set(r,N(n,I,C,r,O,L))}));var U=z?void 0:(R?T?s:c:T?w:_)(O);return r(U||O,(function(n,r){U&&(n=O[r=n]),t(P,r,N(n,I,C,r,O,L))})),P},Fe}function cf(){if(Ue)return Be;Ue=1;var n=ff();return Be=function(r){return n(r,4)}}function sf(){if(Ve)return Ge;return Ve=1,Ge=function(n){return function(){return n}}}function df(){if(We)return Ye;We=1;var n=($e?qe:($e=1,qe=function(n){return function(r,t,e){for(var o=-1,i=Object(r),u=e(r),a=u.length;a--;){var f=u[n?a:++o];if(!1===t(i[f],f,i))break}return r}}))();return Ye=n}function hf(){if(Ke)return Je;Ke=1;var n=df(),r=Nt();return Je=function(t,e){return t&&n(t,e,r)}}function vf(){if(Ze)return Xe;Ze=1;var n=hf(),r=function(){if(He)return Qe;He=1;var n=xt();return Qe=function(r,t){return function(e,o){if(null==e)return e;if(!n(e))return r(e,o);for(var i=e.length,u=t?i:-1,a=Object(e);(t?u--:++u<i)&&!1!==o(a[u],u,a););return e}}}()(n);return Xe=r}function lf(){if(ro)return no;return ro=1,no=function(n){return n}}function pf(){if(eo)return to;eo=1;var n=lf();return to=function(r){return\"function\"==typeof r?r:n}}function gf(){if(io)return oo;io=1;var n=wr(),r=vf(),t=pf(),e=Ir();return oo=function(o,i){return(e(o)?n:r)(o,t(i))}}function yf(){return ao?uo:(ao=1,uo=gf())}function bf(){if(go)return po;go=1;var n=mr(),r=ho?so:(ho=1,so=function(n){return this.__data__.set(n,\"__lodash_hash_undefined__\"),this}),t=lo?vo:(lo=1,vo=function(n){return this.__data__.has(n)});function e(r){var t=-1,e=null==r?0:r.length;for(this.__data__=new n;++t<e;)this.add(r[t])}return e.prototype.add=e.prototype.push=r,e.prototype.has=t,po=e}function mf(){if(_o)return mo;return _o=1,mo=function(n,r){return n.has(r)}}function _f(){if(Eo)return wo;Eo=1;var n=bf(),r=bo?yo:(bo=1,yo=function(n,r){for(var t=-1,e=null==n?0:n.length;++t<e;)if(r(n[t],t,n))return!0;return!1}),t=mf();return wo=function(e,o,i,u,a,f){var c=1&i,s=e.length,d=o.length;if(s!=d&&!(c&&d>s))return!1;var h=f.get(e),v=f.get(o);if(h&&v)return h==o&&v==e;var l=-1,p=!0,g=2&i?new n:void 0;for(f.set(e,o),f.set(o,e);++l<s;){var y=e[l],b=o[l];if(u)var m=c?u(b,y,l,o,e,f):u(y,b,l,e,o,f);if(void 0!==m){if(m)continue;p=!1;break}if(g){if(!r(o,(function(n,r){if(!t(g,r)&&(y===n||a(y,n,i,u,f)))return g.push(r)}))){p=!1;break}}else if(y!==b&&!a(y,b,i,u,f)){p=!1;break}}return f.delete(e),f.delete(o),p}}function wf(){if(No)return xo;return No=1,xo=function(n){var r=-1,t=Array(n.size);return n.forEach((function(n){t[++r]=n})),t}}function Ef(){if(Io)return Oo;Io=1;var n=fr(),r=Za(),t=er(),e=_f(),o=ko?jo:(ko=1,jo=function(n){var r=-1,t=Array(n.size);return n.forEach((function(n,e){t[++r]=[e,n]})),t}),i=wf(),u=n?n.prototype:void 0,a=u?u.valueOf:void 0;return Oo=function(n,u,f,c,s,d,h){switch(f){case\"[object DataView]\":if(n.byteLength!=u.byteLength||n.byteOffset!=u.byteOffset)return!1;n=n.buffer,u=u.buffer;case\"[object ArrayBuffer]\":return!(n.byteLength!=u.byteLength||!d(new r(n),new r(u)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return t(+n,+u);case\"[object Error]\":return n.name==u.name&&n.message==u.message;case\"[object RegExp]\":case\"[object String]\":return n==u+\"\";case\"[object Map]\":var v=o;case\"[object Set]\":var l=1&c;if(v||(v=i),n.size!=u.size&&!l)return!1;var p=h.get(n);if(p)return p==u;c|=2,h.set(n,u);var g=e(v(n),v(u),c,s,d,h);return h.delete(n),g;case\"[object Symbol]\":if(a)return a.call(n)==a.call(u)}return!1}}function jf(){if(Lo)return Mo;Lo=1;var n=_r(),r=_f(),t=Ef(),e=function(){if(Ao)return Co;Ao=1;var n=Qa(),r=Object.prototype.hasOwnProperty;return Co=function(t,e,o,i,u,a){var f=1&o,c=n(t),s=c.length;if(s!=n(e).length&&!f)return!1;for(var d=s;d--;){var h=c[d];if(!(f?h in e:r.call(e,h)))return!1}var v=a.get(t),l=a.get(e);if(v&&l)return v==e&&l==t;var p=!0;a.set(t,e),a.set(e,t);for(var g=f;++d<s;){var y=t[h=c[d]],b=e[h];if(i)var m=f?i(b,y,h,e,t,a):i(y,b,h,t,e,a);if(!(void 0===m?y===b||u(y,b,o,i,a):m)){p=!1;break}g||(g=\"constructor\"==h)}if(p&&!g){var _=t.constructor,w=e.constructor;_==w||!(\"constructor\"in t)||!(\"constructor\"in e)||\"function\"==typeof _&&_ instanceof _&&\"function\"==typeof w&&w instanceof w||(p=!1)}return a.delete(t),a.delete(e),p}}(),o=Xa(),i=Ir(),u=Ur(),a=_t(),f=\"[object Arguments]\",c=\"[object Array]\",s=\"[object Object]\",d=Object.prototype.hasOwnProperty;return Mo=function(h,v,l,p,g,y){var b=i(h),m=i(v),_=b?c:o(h),w=m?c:o(v),E=(_=_==f?s:_)==s,j=(w=w==f?s:w)==s,k=_==w;if(k&&u(h)){if(!u(v))return!1;b=!0,E=!1}if(k&&!E)return y||(y=new n),b||a(h)?r(h,v,l,p,g,y):t(h,v,_,l,p,g,y);if(!(1&l)){var x=E&&d.call(h,\"__wrapped__\"),N=j&&d.call(v,\"__wrapped__\");if(x||N){var O=x?h.value():h,I=N?v.value():v;return y||(y=new n),g(O,I,l,p,y)}}return!!k&&(y||(y=new n),e(h,v,l,p,g,y))}}function kf(){if(So)return Po;So=1;var n=jf(),r=Nr();return Po=function t(e,o,i,u,a){return e===o||(null==e||null==o||!r(e)&&!r(o)?e!=e&&o!=o:n(e,o,i,u,t,a))},Po}function xf(){if(Fo)return zo;Fo=1;var n=sr();return zo=function(r){return r==r&&!n(r)}}function Nf(){if(Go)return Uo;return Go=1,Uo=function(n,r){return function(t){return null!=t&&(t[n]===r&&(void 0!==r||n in Object(t)))}}}function Of(){if(qo)return Vo;qo=1;var n=function(){if(Ro)return To;Ro=1;var n=_r(),r=kf();return To=function(t,e,o,i){var u=o.length,a=u,f=!i;if(null==t)return!a;for(t=Object(t);u--;){var c=o[u];if(f&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++u<a;){var s=(c=o[u])[0],d=t[s],h=c[1];if(f&&c[2]){if(void 0===d&&!(s in t))return!1}else{var v=new n;if(i)var l=i(d,h,s,t,e,v);if(!(void 0===l?r(h,d,3,i,v):l))return!1}}return!0}}(),r=function(){if(Bo)return Do;Bo=1;var n=xf(),r=Nt();return Do=function(t){for(var e=r(t),o=e.length;o--;){var i=e[o],u=t[i];e[o]=[i,u,n(u)]}return e}}(),t=Nf();return Vo=function(e){var o=r(e);return 1==o.length&&o[0][2]?t(o[0][0],o[0][1]):function(r){return r===e||n(r,e,o)}}}function If(){if(Yo)return $o;Yo=1;var n=cr(),r=Nr();return $o=function(t){return\"symbol\"==typeof t||r(t)&&\"[object Symbol]\"==n(t)}}function Cf(){if(Jo)return Wo;Jo=1;var n=Ir(),r=If(),t=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,e=/^\\w*$/;return Wo=function(o,i){if(n(o))return!1;var u=typeof o;return!(\"number\"!=u&&\"symbol\"!=u&&\"boolean\"!=u&&null!=o&&!r(o))||(e.test(o)||!t.test(o)||null!=i&&o in Object(i))}}function Af(){if(Xo)return Ho;Xo=1;var n=function(){if(Qo)return Ko;Qo=1;var n=mr();function r(t,e){if(\"function\"!=typeof t||null!=e&&\"function\"!=typeof e)throw new TypeError(\"Expected a function\");var o=function(){var n=arguments,r=e?e.apply(this,n):n[0],i=o.cache;if(i.has(r))return i.get(r);var u=t.apply(this,n);return o.cache=i.set(r,u)||i,u};return o.cache=new(r.Cache||n),o}return r.Cache=n,Ko=r}();return Ho=function(r){var t=n(r,(function(n){return 500===e.size&&e.clear(),n})),e=t.cache;return t}}function Mf(){if(ti)return ri;return ti=1,ri=function(n,r){for(var t=-1,e=null==n?0:n.length,o=Array(e);++t<e;)o[t]=r(n[t],t,n);return o}}function Lf(){if(ui)return ii;ui=1;var n=function(){if(oi)return ei;oi=1;var n=fr(),r=Mf(),t=Ir(),e=If(),o=n?n.prototype:void 0,i=o?o.toString:void 0;return ei=function n(o){if(\"string\"==typeof o)return o;if(t(o))return r(o,n)+\"\";if(e(o))return i?i.call(o):\"\";var u=o+\"\";return\"0\"==u&&1/o==-1/0?\"-0\":u},ei}();return ii=function(r){return null==r?\"\":n(r)}}function Pf(){if(fi)return ai;fi=1;var n=Ir(),r=Cf(),t=function(){if(ni)return Zo;ni=1;var n=Af(),r=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,t=/\\\\(\\\\)?/g,e=n((function(n){var e=[];return 46===n.charCodeAt(0)&&e.push(\"\"),n.replace(r,(function(n,r,o,i){e.push(o?i.replace(t,\"$1\"):r||n)})),e}));return Zo=e}(),e=Lf();return ai=function(o,i){return n(o)?o:r(o,i)?[o]:t(e(o))}}function Sf(){if(si)return ci;si=1;var n=If();return ci=function(r){if(\"string\"==typeof r||n(r))return r;var t=r+\"\";return\"0\"==t&&1/r==-1/0?\"-0\":t}}function Tf(){if(hi)return di;hi=1;var n=Pf(),r=Sf();return di=function(t,e){for(var o=0,i=(e=n(e,t)).length;null!=t&&o<i;)t=t[r(e[o++])];return o&&o==i?t:void 0}}function Rf(){if(bi)return yi;bi=1;var n=Pf(),r=Or(),t=Ir(),e=Gr(),o=Vr(),i=Sf();return yi=function(u,a,f){for(var c=-1,s=(a=n(a,u)).length,d=!1;++c<s;){var h=i(a[c]);if(!(d=null!=u&&f(u,h)))break;u=u[h]}return d||++c!=s?d:!!(s=null==u?0:u.length)&&o(s)&&e(h,s)&&(t(u)||r(u))}}function zf(){if(_i)return mi;_i=1;var n=gi?pi:(gi=1,pi=function(n,r){return null!=n&&r in Object(n)}),r=Rf();return mi=function(t,e){return null!=t&&r(t,e,n)}}function Ff(){if(Ei)return wi;Ei=1;var n=kf(),r=function(){if(li)return vi;li=1;var n=Tf();return vi=function(r,t,e){var o=null==r?void 0:n(r,t);return void 0===o?e:o}}(),t=zf(),e=Cf(),o=xf(),i=Nf(),u=Sf();return wi=function(a,f){return e(a)&&o(f)?i(u(a),f):function(e){var o=r(e,a);return void 0===o&&o===f?t(e,a):n(f,o,3)}}}function Df(){if(ki)return ji;return ki=1,ji=function(n){return function(r){return null==r?void 0:r[n]}}}function Bf(){if(Ii)return Oi;Ii=1;var n=Df(),r=function(){if(Ni)return xi;Ni=1;var n=Tf();return xi=function(r){return function(t){return n(t,r)}}}(),t=Cf(),e=Sf();return Oi=function(o){return t(o)?n(e(o)):r(o)}}function Uf(){if(Ai)return Ci;Ai=1;var n=Of(),r=Ff(),t=lf(),e=Ir(),o=Bf();return Ci=function(i){return\"function\"==typeof i?i:null==i?t:\"object\"==typeof i?e(i)?r(i[0],i[1]):n(i):o(i)}}function Gf(){if(Li)return Mi;Li=1;var n=Va(),r=function(){if(co)return fo;co=1;var n=vf();return fo=function(r,t){var e=[];return n(r,(function(n,r,o){t(n,r,o)&&e.push(n)})),e}}(),t=Uf(),e=Ir();return Mi=function(o,i){return(e(o)?n:r)(o,t(i,3))}}function Vf(){if(Ri)return Ti;Ri=1;var n=function(){if(Si)return Pi;Si=1;var n=Object.prototype.hasOwnProperty;return Pi=function(r,t){return null!=r&&n.call(r,t)}}(),r=Rf();return Ti=function(t,e){return null!=t&&r(t,e,n)}}function qf(){if(Fi)return zi;Fi=1;var n=kt(),r=Xa(),t=Or(),e=Ir(),o=xt(),i=Ur(),u=Et(),a=_t(),f=Object.prototype.hasOwnProperty;return zi=function(c){if(null==c)return!0;if(o(c)&&(e(c)||\"string\"==typeof c||\"function\"==typeof c.splice||i(c)||a(c)||t(c)))return!c.length;var s=r(c);if(\"[object Map]\"==s||\"[object Set]\"==s)return!c.size;if(u(c))return!n(c).length;for(var d in c)if(f.call(c,d))return!1;return!0}}function $f(){if(Bi)return Di;return Bi=1,Di=function(n){return void 0===n}}function Yf(){if(Gi)return Ui;Gi=1;var n=vf(),r=xt();return Ui=function(t,e){var o=-1,i=r(t)?Array(t.length):[];return n(t,(function(n,r,t){i[++o]=e(n,r,t)})),i}}function Wf(){if(qi)return Vi;qi=1;var n=Mf(),r=Uf(),t=Yf(),e=Ir();return Vi=function(o,i){return(e(o)?n:t)(o,r(i,3))}}function Jf(){if(Qi)return Ki;Qi=1;var n=Yi?$i:(Yi=1,$i=function(n,r,t,e){var o=-1,i=null==n?0:n.length;for(e&&i&&(t=n[++o]);++o<i;)t=r(t,n[o],o,n);return t}),r=vf(),t=Uf(),e=Ji?Wi:(Ji=1,Wi=function(n,r,t,e,o){return o(n,(function(n,o,i){t=e?(e=!1,n):r(t,n,o,i)})),t}),o=Ir();return Ki=function(i,u,a){var f=o(i)?n:e,c=arguments.length<3;return f(i,t(u,4),a,c,r)},Ki}function Kf(){if(uu)return iu;uu=1;var n=function(){if(nu)return Zi;nu=1;var n=Df()(\"length\");return Zi=n}(),r=function(){if(tu)return ru;tu=1;var n=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\");return ru=function(r){return n.test(r)}}(),t=function(){if(ou)return eu;ou=1;var n=\"\\\\ud800-\\\\udfff\",r=\"[\"+n+\"]\",t=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",e=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",o=\"[^\"+n+\"]\",i=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",u=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",a=\"(?:\"+t+\"|\"+e+\")?\",f=\"[\\\\ufe0e\\\\ufe0f]?\",c=f+a+\"(?:\\\\u200d(?:\"+[o,i,u].join(\"|\")+\")\"+f+a+\")*\",s=\"(?:\"+[o+t+\"?\",t,i,u,r].join(\"|\")+\")\",d=RegExp(e+\"(?=\"+e+\")|\"+s+c,\"g\");return eu=function(n){for(var r=d.lastIndex=0;d.test(n);)++r;return r}}();return iu=function(e){return r(e)?t(e):n(e)}}function Qf(){if(fu)return au;fu=1;var n=kt(),r=Xa(),t=xt(),e=function(){if(Xi)return Hi;Xi=1;var n=cr(),r=Ir(),t=Nr();return Hi=function(e){return\"string\"==typeof e||!r(e)&&t(e)&&\"[object String]\"==n(e)}}(),o=Kf();return au=function(i){if(null==i)return 0;if(t(i))return e(i)?o(i):i.length;var u=r(i);return\"[object Map]\"==u||\"[object Set]\"==u?i.size:n(i).length}}function Hf(){if(su)return cu;su=1;var n=wr(),r=ef(),t=hf(),e=Uf(),o=Wa(),i=Ir(),u=Ur(),a=dr(),f=sr(),c=_t();return cu=function(s,d,h){var v=i(s),l=v||u(s)||c(s);if(d=e(d,4),null==h){var p=s&&s.constructor;h=l?v?new p:[]:f(s)&&a(p)?r(o(s)):{}}return(l?n:t)(s,(function(n,r,t){return d(h,n,r,t)})),h}}function Xf(){if(lu)return vu;lu=1;var n=Ya(),r=function(){if(hu)return du;hu=1;var n=fr(),r=Or(),t=Ir(),e=n?n.isConcatSpreadable:void 0;return du=function(n){return t(n)||r(n)||!!(e&&n&&n[e])}}();return vu=function t(e,o,i,u,a){var f=-1,c=e.length;for(i||(i=r),a||(a=[]);++f<c;){var s=e[f];o>0&&i(s)?o>1?t(s,o-1,i,u,a):n(a,s):u||(a[a.length]=s)}return a},vu}function Zf(){if(bu)return yu;bu=1;var n=gu?pu:(gu=1,pu=function(n,r,t){switch(t.length){case 0:return n.call(r);case 1:return n.call(r,t[0]);case 2:return n.call(r,t[0],t[1]);case 3:return n.call(r,t[0],t[1],t[2])}return n.apply(r,t)}),r=Math.max;return yu=function(t,e,o){return e=r(void 0===e?t.length-1:e,0),function(){for(var i=arguments,u=-1,a=r(i.length-e,0),f=Array(a);++u<a;)f[u]=i[e+u];u=-1;for(var c=Array(e+1);++u<e;)c[u]=i[u];return c[e]=o(f),n(t,this,c)}},yu}function nc(){if(ku)return ju;ku=1;var n=function(){if(_u)return mu;_u=1;var n=sf(),r=Er(),t=lf();return mu=r?function(t,e){return r(t,\"toString\",{configurable:!0,enumerable:!1,value:n(e),writable:!0})}:t}(),r=function(){if(Eu)return wu;Eu=1;var n=Date.now;return wu=function(r){var t=0,e=0;return function(){var o=n(),i=16-(o-e);if(e=o,i>0){if(++t>=800)return arguments[0]}else t=0;return r.apply(void 0,arguments)}},wu}(),t=r(n);return ju=t}function rc(){if(Nu)return xu;Nu=1;var n=lf(),r=Zf(),t=nc();return xu=function(e,o){return t(r(e,o,n),e+\"\")}}function tc(){if(Iu)return Ou;return Iu=1,Ou=function(n,r,t,e){for(var o=n.length,i=t+(e?1:-1);e?i--:++i<o;)if(r(n[i],i,n))return i;return-1}}function ec(){if(Su)return Pu;Su=1;var n=tc(),r=Au?Cu:(Au=1,Cu=function(n){return n!=n}),t=Lu?Mu:(Lu=1,Mu=function(n,r,t){for(var e=t-1,o=n.length;++e<o;)if(n[e]===r)return e;return-1});return Pu=function(e,o,i){return o==o?t(e,o,i):n(e,r,i)}}function oc(){if(Gu)return Uu;Gu=1;var n=Ha(),r=Bu?Du:(Bu=1,Du=function(){}),t=wf(),e=n&&1/t(new n([,-0]))[1]==1/0?function(r){return new n(r)}:r;return Uu=e}function ic(){if(qu)return Vu;qu=1;var n=bf(),r=function(){if(Ru)return Tu;Ru=1;var n=ec();return Tu=function(r,t){return!(null==r||!r.length)&&n(r,t,0)>-1}}(),t=Fu?zu:(Fu=1,zu=function(n,r,t){for(var e=-1,o=null==n?0:n.length;++e<o;)if(t(r,n[e]))return!0;return!1}),e=mf(),o=oc(),i=wf();return Vu=function(u,a,f){var c=-1,s=r,d=u.length,h=!0,v=[],l=v;if(f)h=!1,s=t;else if(d>=200){var p=a?null:o(u);if(p)return i(p);h=!1,s=e,l=new n}else l=a?[]:v;n:for(;++c<d;){var g=u[c],y=a?a(g):g;if(g=f||0!==g?g:0,h&&y==y){for(var b=l.length;b--;)if(l[b]===y)continue n;a&&l.push(y),v.push(g)}else s(l,y,f)||(l!==v&&l.push(y),v.push(g))}return v}}function uc(){if(Yu)return $u;Yu=1;var n=xt(),r=Nr();return $u=function(t){return r(t)&&n(t)}}function ac(){if(Ju)return Wu;Ju=1;var n=Xf(),r=rc(),t=ic(),e=uc(),o=r((function(r){return t(n(r,1,e,!0))}));return Wu=o}function fc(){if(Xu)return Hu;Xu=1;var n=function(){if(Qu)return Ku;Qu=1;var n=Mf();return Ku=function(r,t){return n(t,(function(n){return r[n]}))}}(),r=Nt();return Hu=function(t){return null==t?[]:n(t,r(t))}}function cc(){if(na)return Zu;var n;na=1;try{n={clone:cf(),constant:sf(),each:yf(),filter:Gf(),has:Vf(),isArray:Ir(),isEmpty:qf(),isFunction:dr(),isUndefined:$f(),keys:Nt(),map:Wf(),reduce:Jf(),size:Qf(),transform:Hf(),union:ac(),values:fc()}}catch(n){}return n||(n=window._),Zu=n}function sc(){if(ta)return ra;ta=1;var n=cc();ra=o;var r=\"\\0\",t=\"\\0\",e=\"\u0001\";function o(r){this._isDirected=!n.has(r,\"directed\")||r.directed,this._isMultigraph=!!n.has(r,\"multigraph\")&&r.multigraph,this._isCompound=!!n.has(r,\"compound\")&&r.compound,this._label=void 0,this._defaultNodeLabelFn=n.constant(void 0),this._defaultEdgeLabelFn=n.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[t]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function i(n,r){n[r]?n[r]++:n[r]=1}function u(n,r){--n[r]||delete n[r]}function a(t,o,i,u){var a=\"\"+o,f=\"\"+i;if(!t&&a>f){var c=a;a=f,f=c}return a+e+f+e+(n.isUndefined(u)?r:u)}function f(n,r){return a(n,r.v,r.w,r.name)}return o.prototype._nodeCount=0,o.prototype._edgeCount=0,o.prototype.isDirected=function(){return this._isDirected},o.prototype.isMultigraph=function(){return this._isMultigraph},o.prototype.isCompound=function(){return this._isCompound},o.prototype.setGraph=function(n){return this._label=n,this},o.prototype.graph=function(){return this._label},o.prototype.setDefaultNodeLabel=function(r){return n.isFunction(r)||(r=n.constant(r)),this._defaultNodeLabelFn=r,this},o.prototype.nodeCount=function(){return this._nodeCount},o.prototype.nodes=function(){return n.keys(this._nodes)},o.prototype.sources=function(){var r=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(r._in[t])}))},o.prototype.sinks=function(){var r=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(r._out[t])}))},o.prototype.setNodes=function(r,t){var e=arguments,o=this;return n.each(r,(function(n){e.length>1?o.setNode(n,t):o.setNode(n)})),this},o.prototype.setNode=function(r,e){return n.has(this._nodes,r)?(arguments.length>1&&(this._nodes[r]=e),this):(this._nodes[r]=arguments.length>1?e:this._defaultNodeLabelFn(r),this._isCompound&&(this._parent[r]=t,this._children[r]={},this._children[t][r]=!0),this._in[r]={},this._preds[r]={},this._out[r]={},this._sucs[r]={},++this._nodeCount,this)},o.prototype.node=function(n){return this._nodes[n]},o.prototype.hasNode=function(r){return n.has(this._nodes,r)},o.prototype.removeNode=function(r){var t=this;if(n.has(this._nodes,r)){var e=function(n){t.removeEdge(t._edgeObjs[n])};delete this._nodes[r],this._isCompound&&(this._removeFromParentsChildList(r),delete this._parent[r],n.each(this.children(r),(function(n){t.setParent(n)})),delete this._children[r]),n.each(n.keys(this._in[r]),e),delete this._in[r],delete this._preds[r],n.each(n.keys(this._out[r]),e),delete this._out[r],delete this._sucs[r],--this._nodeCount}return this},o.prototype.setParent=function(r,e){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(n.isUndefined(e))e=t;else{for(var o=e+=\"\";!n.isUndefined(o);o=this.parent(o))if(o===r)throw new Error(\"Setting \"+e+\" as parent of \"+r+\" would create a cycle\");this.setNode(e)}return this.setNode(r),this._removeFromParentsChildList(r),this._parent[r]=e,this._children[e][r]=!0,this},o.prototype._removeFromParentsChildList=function(n){delete this._children[this._parent[n]][n]},o.prototype.parent=function(n){if(this._isCompound){var r=this._parent[n];if(r!==t)return r}},o.prototype.children=function(r){if(n.isUndefined(r)&&(r=t),this._isCompound){var e=this._children[r];if(e)return n.keys(e)}else{if(r===t)return this.nodes();if(this.hasNode(r))return[]}},o.prototype.predecessors=function(r){var t=this._preds[r];if(t)return n.keys(t)},o.prototype.successors=function(r){var t=this._sucs[r];if(t)return n.keys(t)},o.prototype.neighbors=function(r){var t=this.predecessors(r);if(t)return n.union(t,this.successors(r))},o.prototype.isLeaf=function(n){return 0===(this.isDirected()?this.successors(n):this.neighbors(n)).length},o.prototype.filterNodes=function(r){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var e=this;n.each(this._nodes,(function(n,e){r(e)&&t.setNode(e,n)})),n.each(this._edgeObjs,(function(n){t.hasNode(n.v)&&t.hasNode(n.w)&&t.setEdge(n,e.edge(n))}));var o={};function i(n){var r=e.parent(n);return void 0===r||t.hasNode(r)?(o[n]=r,r):r in o?o[r]:i(r)}return this._isCompound&&n.each(t.nodes(),(function(n){t.setParent(n,i(n))})),t},o.prototype.setDefaultEdgeLabel=function(r){return n.isFunction(r)||(r=n.constant(r)),this._defaultEdgeLabelFn=r,this},o.prototype.edgeCount=function(){return this._edgeCount},o.prototype.edges=function(){return n.values(this._edgeObjs)},o.prototype.setPath=function(r,t){var e=this,o=arguments;return n.reduce(r,(function(n,r){return o.length>1?e.setEdge(n,r,t):e.setEdge(n,r),r})),this},o.prototype.setEdge=function(){var r,t,e,o,u=!1,f=arguments[0];\"object\"==typeof f&&null!==f&&\"v\"in f?(r=f.v,t=f.w,e=f.name,2===arguments.length&&(o=arguments[1],u=!0)):(r=f,t=arguments[1],e=arguments[3],arguments.length>2&&(o=arguments[2],u=!0)),r=\"\"+r,t=\"\"+t,n.isUndefined(e)||(e=\"\"+e);var c=a(this._isDirected,r,t,e);if(n.has(this._edgeLabels,c))return u&&(this._edgeLabels[c]=o),this;if(!n.isUndefined(e)&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(r),this.setNode(t),this._edgeLabels[c]=u?o:this._defaultEdgeLabelFn(r,t,e);var s=function(n,r,t,e){var o=\"\"+r,i=\"\"+t;if(!n&&o>i){var u=o;o=i,i=u}var a={v:o,w:i};e&&(a.name=e);return a}(this._isDirected,r,t,e);return r=s.v,t=s.w,Object.freeze(s),this._edgeObjs[c]=s,i(this._preds[t],r),i(this._sucs[r],t),this._in[t][c]=s,this._out[r][c]=s,this._edgeCount++,this},o.prototype.edge=function(n,r,t){var e=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,n,r,t);return this._edgeLabels[e]},o.prototype.hasEdge=function(r,t,e){var o=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,r,t,e);return n.has(this._edgeLabels,o)},o.prototype.removeEdge=function(n,r,t){var e=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,n,r,t),o=this._edgeObjs[e];return o&&(n=o.v,r=o.w,delete this._edgeLabels[e],delete this._edgeObjs[e],u(this._preds[r],n),u(this._sucs[n],r),delete this._in[r][e],delete this._out[n][e],this._edgeCount--),this},o.prototype.inEdges=function(r,t){var e=this._in[r];if(e){var o=n.values(e);return t?n.filter(o,(function(n){return n.v===t})):o}},o.prototype.outEdges=function(r,t){var e=this._out[r];if(e){var o=n.values(e);return t?n.filter(o,(function(n){return n.w===t})):o}},o.prototype.nodeEdges=function(n,r){var t=this.inEdges(n,r);if(t)return t.concat(this.outEdges(n,r))},ra}function dc(){return ua?ia:(ua=1,ia={Graph:sc(),version:oa?ea:(oa=1,ea=\"2.1.8\")})}function hc(){if(fa)return aa;fa=1;var n=cc(),r=sc();function t(r){return n.map(r.nodes(),(function(t){var e=r.node(t),o=r.parent(t),i={v:t};return n.isUndefined(e)||(i.value=e),n.isUndefined(o)||(i.parent=o),i}))}function e(r){return n.map(r.edges(),(function(t){var e=r.edge(t),o={v:t.v,w:t.w};return n.isUndefined(t.name)||(o.name=t.name),n.isUndefined(e)||(o.value=e),o}))}return aa={write:function(r){var o={options:{directed:r.isDirected(),multigraph:r.isMultigraph(),compound:r.isCompound()},nodes:t(r),edges:e(r)};n.isUndefined(r.graph())||(o.value=n.clone(r.graph()));return o},read:function(t){var e=new r(t.options).setGraph(t.value);return n.each(t.nodes,(function(n){e.setNode(n.v,n.value),n.parent&&e.setParent(n.v,n.parent)})),n.each(t.edges,(function(n){e.setEdge({v:n.v,w:n.w,name:n.name},n.value)})),e}}}function vc(){if(sa)return ca;sa=1;var n=cc();return ca=function(r){var t,e={},o=[];function i(o){n.has(e,o)||(e[o]=!0,t.push(o),n.each(r.successors(o),i),n.each(r.predecessors(o),i))}return n.each(r.nodes(),(function(n){t=[],i(n),t.length&&o.push(t)})),o},ca}function lc(){if(ha)return da;ha=1;var n=cc();function r(){this._arr=[],this._keyIndices={}}return da=r,r.prototype.size=function(){return this._arr.length},r.prototype.keys=function(){return this._arr.map((function(n){return n.key}))},r.prototype.has=function(r){return n.has(this._keyIndices,r)},r.prototype.priority=function(n){var r=this._keyIndices[n];if(void 0!==r)return this._arr[r].priority},r.prototype.min=function(){if(0===this.size())throw new Error(\"Queue underflow\");return this._arr[0].key},r.prototype.add=function(r,t){var e=this._keyIndices;if(r=String(r),!n.has(e,r)){var o=this._arr,i=o.length;return e[r]=i,o.push({key:r,priority:t}),this._decrease(i),!0}return!1},r.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},r.prototype.decrease=function(n,r){var t=this._keyIndices[n];if(r>this._arr[t].priority)throw new Error(\"New priority is greater than current priority. Key: \"+n+\" Old: \"+this._arr[t].priority+\" New: \"+r);this._arr[t].priority=r,this._decrease(t)},r.prototype._heapify=function(n){var r=this._arr,t=2*n,e=t+1,o=n;t<r.length&&(o=r[t].priority<r[o].priority?t:o,e<r.length&&(o=r[e].priority<r[o].priority?e:o),o!==n&&(this._swap(n,o),this._heapify(o)))},r.prototype._decrease=function(n){for(var r,t=this._arr,e=t[n].priority;0!==n&&!(t[r=n>>1].priority<e);)this._swap(n,r),n=r},r.prototype._swap=function(n,r){var t=this._arr,e=this._keyIndices,o=t[n],i=t[r];t[n]=i,t[r]=o,e[i.key]=n,e[o.key]=r},da}function pc(){if(la)return va;la=1;var n=cc(),r=lc();va=function(n,e,o,i){return function(n,t,e,o){var i,u,a={},f=new r,c=function(n){var r=n.v!==i?n.v:n.w,t=a[r],o=e(n),c=u.distance+o;if(o<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+n+\" Weight: \"+o);c<t.distance&&(t.distance=c,t.predecessor=i,f.decrease(r,c))};n.nodes().forEach((function(n){var r=n===t?0:Number.POSITIVE_INFINITY;a[n]={distance:r},f.add(n,r)}));for(;f.size()>0&&(i=f.removeMin(),(u=a[i]).distance!==Number.POSITIVE_INFINITY);)o(i).forEach(c);return a}(n,String(e),o||t,i||function(r){return n.outEdges(r)})};var t=n.constant(1);return va}function gc(){if(ga)return pa;ga=1;var n=pc(),r=cc();return pa=function(t,e,o){return r.transform(t.nodes(),(function(r,i){r[i]=n(t,i,e,o)}),{})}}function yc(){if(ba)return ya;ba=1;var n=cc();return ya=function(r){var t=0,e=[],o={},i=[];function u(a){var f=o[a]={onStack:!0,lowlink:t,index:t++};if(e.push(a),r.successors(a).forEach((function(r){n.has(o,r)?o[r].onStack&&(f.lowlink=Math.min(f.lowlink,o[r].index)):(u(r),f.lowlink=Math.min(f.lowlink,o[r].lowlink))})),f.lowlink===f.index){var c,s=[];do{c=e.pop(),o[c].onStack=!1,s.push(c)}while(a!==c);i.push(s)}}return r.nodes().forEach((function(r){n.has(o,r)||u(r)})),i},ya}function bc(){if(_a)return ma;_a=1;var n=cc(),r=yc();return ma=function(t){return n.filter(r(t),(function(n){return n.length>1||1===n.length&&t.hasEdge(n[0],n[0])}))}}function mc(){if(Ea)return wa;Ea=1;var n=cc();wa=function(n,t,e){return function(n,r,t){var e={},o=n.nodes();return o.forEach((function(n){e[n]={},e[n][n]={distance:0},o.forEach((function(r){n!==r&&(e[n][r]={distance:Number.POSITIVE_INFINITY})})),t(n).forEach((function(t){var o=t.v===n?t.w:t.v,i=r(t);e[n][o]={distance:i,predecessor:n}}))})),o.forEach((function(n){var r=e[n];o.forEach((function(t){var i=e[t];o.forEach((function(t){var e=i[n],o=r[t],u=i[t],a=e.distance+o.distance;a<u.distance&&(u.distance=a,u.predecessor=o.predecessor)}))}))})),e}(n,t||r,e||function(r){return n.outEdges(r)})};var r=n.constant(1);return wa}function _c(){if(ka)return ja;ka=1;var n=cc();function r(r){var e={},o={},i=[];if(n.each(r.sinks(),(function u(a){if(n.has(o,a))throw new t;n.has(e,a)||(o[a]=!0,e[a]=!0,n.each(r.predecessors(a),u),delete o[a],i.push(a))})),n.size(e)!==r.nodeCount())throw new t;return i}function t(){}return ja=r,r.CycleException=t,t.prototype=new Error,ja}function wc(){if(Na)return xa;Na=1;var n=_c();return xa=function(r){try{n(r)}catch(r){if(r instanceof n.CycleException)return!1;throw r}return!0}}function Ec(){if(Ia)return Oa;Ia=1;var n=cc();function r(t,e,o,i,u,a){n.has(i,e)||(i[e]=!0,o||a.push(e),n.each(u(e),(function(n){r(t,n,o,i,u,a)})),o&&a.push(e))}return Oa=function(t,e,o){n.isArray(e)||(e=[e]);var i=(t.isDirected()?t.successors:t.neighbors).bind(t),u=[],a={};return n.each(e,(function(n){if(!t.hasNode(n))throw new Error(\"Graph does not have node: \"+n);r(t,n,\"post\"===o,a,i,u)})),u},Oa}function jc(){if(Aa)return Ca;Aa=1;var n=Ec();return Ca=function(r,t){return n(r,t,\"post\")}}function kc(){if(La)return Ma;La=1;var n=Ec();return Ma=function(r,t){return n(r,t,\"pre\")}}function xc(){if(Sa)return Pa;Sa=1;var n=cc(),r=sc(),t=lc();return Pa=function(e,o){var i,u=new r,a={},f=new t;function c(n){var r=n.v===i?n.w:n.v,t=f.priority(r);if(void 0!==t){var e=o(n);e<t&&(a[r]=i,f.decrease(r,e))}}if(0===e.nodeCount())return u;n.each(e.nodes(),(function(n){f.add(n,Number.POSITIVE_INFINITY),u.setNode(n)})),f.decrease(e.nodes()[0],0);var s=!1;for(;f.size()>0;){if(i=f.removeMin(),n.has(a,i))u.setEdge(i,a[i]);else{if(s)throw new Error(\"Input graph is not connected: \"+e);s=!0}e.nodeEdges(i).forEach(c)}return u}}Ba.exports;try{Da=function(){if(Fa)return za;Fa=1;var n=dc();return za={Graph:n.Graph,json:hc(),alg:Ra?Ta:(Ra=1,Ta={components:vc(),dijkstra:pc(),dijkstraAll:gc(),findCycles:bc(),floydWarshall:mc(),isAcyclic:wc(),postorder:jc(),preorder:kc(),prim:xc(),tarjan:yc(),topsort:_c()}),version:n.version}}()}catch(n){}Da||(Da=window.graphlib);var Nc,Oc,Ic,Cc,Ac,Mc,Lc,Pc,Sc,Tc,Rc,zc,Fc,Dc,Bc,Uc,Gc,Vc,qc,$c,Yc,Wc,Jc,Kc,Qc,Hc,Xc,Zc,ns,rs,ts,es,os,is,us,as,fs,cs,ss,ds,hs,vs,ls,ps,gs,ys,bs,ms,_s,ws,Es,js,ks,xs,Ns,Os,Is,Cs,As,Ms,Ls,Ps,Ss,Ts,Rs,zs,Fs,Ds,Bs,Us,Gs,Vs,qs,$s,Ys,Ws,Js,Ks,Qs,Hs,Xs,Zs,nd,rd,td,ed,od,id,ud,ad,fd,cd,sd,dd=Da;function hd(){if(Cc)return Ic;Cc=1;var n=er(),r=xt(),t=Gr(),e=sr();return Ic=function(o,i,u){if(!e(u))return!1;var a=typeof i;return!!(\"number\"==a?r(u)&&t(i,u.length):\"string\"==a&&i in u)&&n(u[i],o)}}function vd(){if(zc)return Rc;zc=1;var n=function(){if(Tc)return Sc;Tc=1;var n=/\\s/;return Sc=function(r){for(var t=r.length;t--&&n.test(r.charAt(t)););return t}}(),r=/^\\s+/;return Rc=function(t){return t?t.slice(0,n(t)+1).replace(r,\"\"):t}}function ld(){if(Uc)return Bc;Uc=1;var n=function(){if(Dc)return Fc;Dc=1;var n=vd(),r=sr(),t=If(),e=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,i=/^0o[0-7]+$/i,u=parseInt;return Fc=function(a){if(\"number\"==typeof a)return a;if(t(a))return NaN;if(r(a)){var f=\"function\"==typeof a.valueOf?a.valueOf():a;a=r(f)?f+\"\":f}if(\"string\"!=typeof a)return 0===a?a:+a;a=n(a);var c=o.test(a);return c||i.test(a)?u(a.slice(2),c?2:8):e.test(a)?NaN:+a}}(),r=1/0;return Bc=function(t){return t?(t=n(t))===r||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}}function pd(){if($c)return qc;$c=1;var n=tc(),r=Uf(),t=function(){if(Vc)return Gc;Vc=1;var n=ld();return Gc=function(r){var t=n(r),e=t%1;return t==t?e?t-e:t:0}}(),e=Math.max;return qc=function(o,i,u){var a=null==o?0:o.length;if(!a)return-1;var f=null==u?0:t(u);return f<0&&(f=e(a+f,0)),n(o,r(i,3),f)}}function gd(){if(Kc)return Jc;Kc=1;var n=Xf();return Jc=function(r){return(null==r?0:r.length)?n(r,1):[]}}function yd(){if(es)return ts;es=1;var n=If();return ts=function(r,t,e){for(var o=-1,i=r.length;++o<i;){var u=r[o],a=t(u);if(null!=a&&(void 0===f?a==a&&!n(a):e(a,f)))var f=a,c=u}return c}}function bd(){if(cs)return fs;cs=1;var n=jr(),r=er();return fs=function(t,e,o){(void 0!==o&&!r(t[e],o)||void 0===o&&!(e in t))&&n(t,e,o)}}function md(){if(vs)return hs;return vs=1,hs=function(n,r){if((\"constructor\"!==r||\"function\"!=typeof n[r])&&\"__proto__\"!=r)return n[r]}}function _d(){if(ys)return gs;ys=1;var n=bd(),r=Ua(),t=rf(),e=Ga(),o=of(),i=Or(),u=Ir(),a=uc(),f=Ur(),c=dr(),s=sr(),d=function(){if(ds)return ss;ds=1;var n=cr(),r=Wa(),t=Nr(),e=Function.prototype,o=Object.prototype,i=e.toString,u=o.hasOwnProperty,a=i.call(Object);return ss=function(e){if(!t(e)||\"[object Object]\"!=n(e))return!1;var o=r(e);if(null===o)return!0;var f=u.call(o,\"constructor\")&&o.constructor;return\"function\"==typeof f&&f instanceof f&&i.call(f)==a}}(),h=_t(),v=md(),l=function(){if(ps)return ls;ps=1;var n=xr(),r=It();return ls=function(t){return n(t,r(t))}}();return gs=function(p,g,y,b,m,_,w){var E=v(p,y),j=v(g,y),k=w.get(j);if(k)n(p,y,k);else{var x=_?_(E,j,y+\"\",p,g,w):void 0,N=void 0===x;if(N){var O=u(j),I=!O&&f(j),C=!O&&!I&&h(j);x=j,O||I||C?u(E)?x=E:a(E)?x=e(E):I?(N=!1,x=r(j,!0)):C?(N=!1,x=t(j,!0)):x=[]:d(j)||i(j)?(x=E,i(E)?x=l(E):s(E)&&!c(E)||(x=o(j))):N=!1}N&&(w.set(j,x),m(x,j,b,_,w),w.delete(j)),n(p,y,x)}}}function wd(){if(xs)return ks;return xs=1,ks=function(n,r){return n<r}}function Ed(){if(Ts)return Ss;Ts=1;var n=Tf(),r=function(){if(Ps)return Ls;Ps=1;var n=kr(),r=Pf(),t=Gr(),e=sr(),o=Sf();return Ls=function(i,u,a,f){if(!e(i))return i;for(var c=-1,s=(u=r(u,i)).length,d=s-1,h=i;null!=h&&++c<s;){var v=o(u[c]),l=a;if(\"__proto__\"===v||\"constructor\"===v||\"prototype\"===v)return i;if(c!=d){var p=h[v];void 0===(l=f?f(p,v,h):void 0)&&(l=e(p)?p:t(u[c+1])?[]:{})}n(h,v,l),h=h[v]}return i}}(),t=Pf();return Ss=function(e,o,i){for(var u=-1,a=o.length,f={};++u<a;){var c=o[u],s=n(e,c);i(s,c)&&r(f,t(c,e),s)}return f}}function jd(){if($s)return qs;$s=1;var n=function(){if(Vs)return Gs;Vs=1;var n=Math.ceil,r=Math.max;return Gs=function(t,e,o,i){for(var u=-1,a=r(n((e-t)/(o||1)),0),f=Array(a);a--;)f[i?a:++u]=t,t+=o;return f}}(),r=hd(),t=ld();return qs=function(e){return function(o,i,u){return u&&\"number\"!=typeof u&&r(o,i,u)&&(i=u=void 0),o=t(o),void 0===i?(i=o,o=0):i=t(i),u=void 0===u?o<i?1:-1:t(u),n(o,i,u,e)}}}function kd(){if(Zs)return Xs;Zs=1;var n=function(){if(Hs)return Qs;Hs=1;var n=If();return Qs=function(r,t){if(r!==t){var e=void 0!==r,o=null===r,i=r==r,u=n(r),a=void 0!==t,f=null===t,c=t==t,s=n(t);if(!f&&!s&&!u&&r>t||u&&a&&c&&!f&&!s||o&&a&&c||!e&&c||!i)return 1;if(!o&&!u&&!s&&r<t||s&&e&&i&&!o&&!u||f&&e&&i||!a&&i||!c)return-1}return 0}}();return Xs=function(r,t,e){for(var o=-1,i=r.criteria,u=t.criteria,a=i.length,f=e.length;++o<a;){var c=n(i[o],u[o]);if(c)return o>=f?c:c*(\"desc\"==e[o]?-1:1)}return r.index-t.index}}function xd(){if(rd)return nd;rd=1;var n=Mf(),r=Tf(),t=Uf(),e=Yf(),o=Ks?Js:(Ks=1,Js=function(n,r){var t=n.length;for(n.sort(r);t--;)n[t]=n[t].value;return n}),i=qr(),u=kd(),a=lf(),f=Ir();return nd=function(c,s,d){s=s.length?n(s,(function(n){return f(n)?function(t){return r(t,1===n.length?n[0]:n)}:n})):[a];var h=-1;s=n(s,i(t));var v=e(c,(function(r,t,e){return{criteria:n(s,(function(n){return n(r)})),index:++h,value:r}}));return o(v,(function(n,r){return u(n,r,d)}))}}try{sd={cloneDeep:function(){if(Oc)return Nc;Oc=1;var n=ff();return Nc=function(r){return n(r,5)}}(),constant:sf(),defaults:function(){if(Mc)return Ac;Mc=1;var n=rc(),r=er(),t=hd(),e=It(),o=Object.prototype,i=o.hasOwnProperty,u=n((function(n,u){n=Object(n);var a=-1,f=u.length,c=f>2?u[2]:void 0;for(c&&t(u[0],u[1],c)&&(f=1);++a<f;)for(var s=u[a],d=e(s),h=-1,v=d.length;++h<v;){var l=d[h],p=n[l];(void 0===p||r(p,o[l])&&!i.call(n,l))&&(n[l]=s[l])}return n}));return Ac=u}(),each:yf(),filter:Gf(),find:function(){if(Wc)return Yc;Wc=1;var n=function(){if(Pc)return Lc;Pc=1;var n=Uf(),r=xt(),t=Nt();return Lc=function(e){return function(o,i,u){var a=Object(o);if(!r(o)){var f=n(i,3);o=t(o),i=function(n){return f(a[n],n,a)}}var c=e(o,i,u);return c>-1?a[f?o[c]:c]:void 0}}}()(pd());return Yc=n}(),flatten:gd(),forEach:gf(),forIn:function(){if(Hc)return Qc;Hc=1;var n=df(),r=pf(),t=It();return Qc=function(e,o){return null==e?e:n(e,r(o),t)}}(),has:Vf(),isUndefined:$f(),last:Zc?Xc:(Zc=1,Xc=function(n){var r=null==n?0:n.length;return r?n[r-1]:void 0}),map:Wf(),mapValues:function(){if(rs)return ns;rs=1;var n=jr(),r=hf(),t=Uf();return ns=function(e,o){var i={};return o=t(o,3),r(e,(function(r,t,e){n(i,t,o(r,t,e))})),i}}(),max:function(){if(as)return us;as=1;var n=yd(),r=is?os:(is=1,os=function(n,r){return n>r}),t=lf();return us=function(e){return e&&e.length?n(e,t,r):void 0}}(),merge:function(){if(js)return Es;js=1;var n=function(){if(ms)return bs;ms=1;var n=_r(),r=bd(),t=df(),e=_d(),o=sr(),i=It(),u=md();return bs=function a(f,c,s,d,h){f!==c&&t(c,(function(t,i){if(h||(h=new n),o(t))e(f,c,i,s,a,d,h);else{var v=d?d(u(f,i),t,i+\"\",f,c,h):void 0;void 0===v&&(v=t),r(f,i,v)}}),i)},bs}(),r=function(){if(ws)return _s;ws=1;var n=rc(),r=hd();return _s=function(t){return n((function(n,e){var o=-1,i=e.length,u=i>1?e[i-1]:void 0,a=i>2?e[2]:void 0;for(u=t.length>3&&\"function\"==typeof u?(i--,u):void 0,a&&r(e[0],e[1],a)&&(u=i<3?void 0:u,i=1),n=Object(n);++o<i;){var f=e[o];f&&t(n,f,o,u)}return n}))}}()((function(r,t,e){n(r,t,e)}));return Es=r}(),min:function(){if(Os)return Ns;Os=1;var n=yd(),r=wd(),t=lf();return Ns=function(e){return e&&e.length?n(e,t,r):void 0}}(),minBy:function(){if(Cs)return Is;Cs=1;var n=yd(),r=Uf(),t=wd();return Is=function(e,o){return e&&e.length?n(e,r(o,2),t):void 0}}(),now:function(){if(Ms)return As;Ms=1;var n=ar();return As=function(){return n.Date.now()}}(),pick:function(){if(Us)return Bs;Us=1;var n=function(){if(zs)return Rs;zs=1;var n=Ed(),r=zf();return Rs=function(t,e){return n(t,e,(function(n,e){return r(t,e)}))}}(),r=function(){if(Ds)return Fs;Ds=1;var n=gd(),r=Zf(),t=nc();return Fs=function(e){return t(r(e,void 0,n),e+\"\")}}()((function(r,t){return null==r?{}:n(r,t)}));return Bs=r}(),range:function(){if(Ws)return Ys;Ws=1;var n=jd()();return Ys=n}(),reduce:Jf(),sortBy:function(){if(ed)return td;ed=1;var n=Xf(),r=xd(),t=rc(),e=hd(),o=t((function(t,o){if(null==t)return[];var i=o.length;return i>1&&e(t,o[0],o[1])?o=[]:i>2&&e(o[0],o[1],o[2])&&(o=[o[0]]),r(t,n(o,1),[])}));return td=o}(),uniqueId:function(){if(id)return od;id=1;var n=Lf(),r=0;return od=function(t){var e=++r;return n(t)+e}}(),values:fc(),zipObject:function(){if(cd)return fd;cd=1;var n=kr(),r=ad?ud:(ad=1,ud=function(n,r,t){for(var e=-1,o=n.length,i=r.length,u={};++e<o;){var a=e<i?r[e]:void 0;t(u,n[e],a)}return u});return fd=function(t,e){return r(t||[],e||[],n)}}()}}catch(n){}sd||(sd=window._);var Nd=sd,Od=Id;function Id(){var n={};n._next=n._prev=n,this._sentinel=n}function Cd(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function Ad(n,r){if(\"_next\"!==n&&\"_prev\"!==n)return r}Id.prototype.dequeue=function(){var n=this._sentinel,r=n._prev;if(r!==n)return Cd(r),r},Id.prototype.enqueue=function(n){var r=this._sentinel;n._prev&&n._next&&Cd(n),n._next=r._next,r._next._prev=n,r._next=n,n._prev=r},Id.prototype.toString=function(){for(var n=[],r=this._sentinel,t=r._prev;t!==r;)n.push(JSON.stringify(t,Ad)),t=t._prev;return\"[\"+n.join(\", \")+\"]\"};var Md=Nd,Ld=dd.Graph,Pd=Od,Sd=function(n,r){if(n.nodeCount()<=1)return[];var t=function(n,r){var t=new Ld,e=0,o=0;Md.forEach(n.nodes(),(function(n){t.setNode(n,{v:n,in:0,out:0})})),Md.forEach(n.edges(),(function(n){var i=t.edge(n.v,n.w)||0,u=r(n),a=i+u;t.setEdge(n.v,n.w,a),o=Math.max(o,t.node(n.v).out+=u),e=Math.max(e,t.node(n.w).in+=u)}));var i=Md.range(o+e+3).map((function(){return new Pd})),u=e+1;return Md.forEach(t.nodes(),(function(n){zd(i,u,t.node(n))})),{graph:t,buckets:i,zeroIdx:u}}(n,r||Td),e=function(n,r,t){var e,o=[],i=r[r.length-1],u=r[0];for(;n.nodeCount();){for(;e=u.dequeue();)Rd(n,r,t,e);for(;e=i.dequeue();)Rd(n,r,t,e);if(n.nodeCount())for(var a=r.length-2;a>0;--a)if(e=r[a].dequeue()){o=o.concat(Rd(n,r,t,e,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return Md.flatten(Md.map(e,(function(r){return n.outEdges(r.v,r.w)})),!0)},Td=Md.constant(1);function Rd(n,r,t,e,o){var i=o?[]:void 0;return Md.forEach(n.inEdges(e.v),(function(e){var u=n.edge(e),a=n.node(e.v);o&&i.push({v:e.v,w:e.w}),a.out-=u,zd(r,t,a)})),Md.forEach(n.outEdges(e.v),(function(e){var o=n.edge(e),i=e.w,u=n.node(i);u.in-=o,zd(r,t,u)})),n.removeNode(e.v),i}function zd(n,r,t){t.out?t.in?n[t.out-t.in+r].enqueue(t):n[n.length-1].enqueue(t):n[0].enqueue(t)}var Fd=Nd,Dd=Sd,Bd={run:function(n){var r=\"greedy\"===n.graph().acyclicer?Dd(n,function(n){return function(r){return n.edge(r).weight}}(n)):function(n){var r=[],t={},e={};function o(i){Fd.has(e,i)||(e[i]=!0,t[i]=!0,Fd.forEach(n.outEdges(i),(function(n){Fd.has(t,n.w)?r.push(n):o(n.w)})),delete t[i])}return Fd.forEach(n.nodes(),o),r}(n);Fd.forEach(r,(function(r){var t=n.edge(r);n.removeEdge(r),t.forwardName=r.name,t.reversed=!0,n.setEdge(r.w,r.v,t,Fd.uniqueId(\"rev\"))}))},undo:function(n){Fd.forEach(n.edges(),(function(r){var t=n.edge(r);if(t.reversed){n.removeEdge(r);var e=t.forwardName;delete t.reversed,delete t.forwardName,n.setEdge(r.w,r.v,t,e)}}))}};var Ud=Nd,Gd=dd.Graph,Vd={addDummyNode:qd,simplify:function(n){var r=(new Gd).setGraph(n.graph());return Ud.forEach(n.nodes(),(function(t){r.setNode(t,n.node(t))})),Ud.forEach(n.edges(),(function(t){var e=r.edge(t.v,t.w)||{weight:0,minlen:1},o=n.edge(t);r.setEdge(t.v,t.w,{weight:e.weight+o.weight,minlen:Math.max(e.minlen,o.minlen)})})),r},asNonCompoundGraph:function(n){var r=new Gd({multigraph:n.isMultigraph()}).setGraph(n.graph());return Ud.forEach(n.nodes(),(function(t){n.children(t).length||r.setNode(t,n.node(t))})),Ud.forEach(n.edges(),(function(t){r.setEdge(t,n.edge(t))})),r},successorWeights:function(n){var r=Ud.map(n.nodes(),(function(r){var t={};return Ud.forEach(n.outEdges(r),(function(r){t[r.w]=(t[r.w]||0)+n.edge(r).weight})),t}));return Ud.zipObject(n.nodes(),r)},predecessorWeights:function(n){var r=Ud.map(n.nodes(),(function(r){var t={};return Ud.forEach(n.inEdges(r),(function(r){t[r.v]=(t[r.v]||0)+n.edge(r).weight})),t}));return Ud.zipObject(n.nodes(),r)},intersectRect:function(n,r){var t,e,o=n.x,i=n.y,u=r.x-o,a=r.y-i,f=n.width/2,c=n.height/2;if(!u&&!a)throw new Error(\"Not possible to find intersection inside of the rectangle\");Math.abs(a)*f>Math.abs(u)*c?(a<0&&(c=-c),t=c*u/a,e=c):(u<0&&(f=-f),t=f,e=f*a/u);return{x:o+t,y:i+e}},buildLayerMatrix:function(n){var r=Ud.map(Ud.range($d(n)+1),(function(){return[]}));return Ud.forEach(n.nodes(),(function(t){var e=n.node(t),o=e.rank;Ud.isUndefined(o)||(r[o][e.order]=t)})),r},normalizeRanks:function(n){var r=Ud.min(Ud.map(n.nodes(),(function(r){return n.node(r).rank})));Ud.forEach(n.nodes(),(function(t){var e=n.node(t);Ud.has(e,\"rank\")&&(e.rank-=r)}))},removeEmptyRanks:function(n){var r=Ud.min(Ud.map(n.nodes(),(function(r){return n.node(r).rank}))),t=[];Ud.forEach(n.nodes(),(function(e){var o=n.node(e).rank-r;t[o]||(t[o]=[]),t[o].push(e)}));var e=0,o=n.graph().nodeRankFactor;Ud.forEach(t,(function(r,t){Ud.isUndefined(r)&&t%o!=0?--e:e&&Ud.forEach(r,(function(r){n.node(r).rank+=e}))}))},addBorderNode:function(n,r,t,e){var o={width:0,height:0};arguments.length>=4&&(o.rank=t,o.order=e);return qd(n,\"border\",o,r)},maxRank:$d,partition:function(n,r){var t={lhs:[],rhs:[]};return Ud.forEach(n,(function(n){r(n)?t.lhs.push(n):t.rhs.push(n)})),t},time:function(n,r){var t=Ud.now();try{return r()}finally{console.log(n+\" time: \"+(Ud.now()-t)+\"ms\")}},notime:function(n,r){return r()}};function qd(n,r,t,e){var o;do{o=Ud.uniqueId(e)}while(n.hasNode(o));return t.dummy=r,n.setNode(o,t),o}function $d(n){return Ud.max(Ud.map(n.nodes(),(function(r){var t=n.node(r).rank;if(!Ud.isUndefined(t))return t})))}var Yd=Nd,Wd=Vd,Jd={run:function(n){n.graph().dummyChains=[],Yd.forEach(n.edges(),(function(r){!function(n,r){var t,e,o,i=r.v,u=n.node(i).rank,a=r.w,f=n.node(a).rank,c=r.name,s=n.edge(r),d=s.labelRank;if(f===u+1)return;for(n.removeEdge(r),o=0,++u;u<f;++o,++u)s.points=[],e={width:0,height:0,edgeLabel:s,edgeObj:r,rank:u},t=Wd.addDummyNode(n,\"edge\",e,\"_d\"),u===d&&(e.width=s.width,e.height=s.height,e.dummy=\"edge-label\",e.labelpos=s.labelpos),n.setEdge(i,t,{weight:s.weight},c),0===o&&n.graph().dummyChains.push(t),i=t;n.setEdge(i,a,{weight:s.weight},c)}(n,r)}))},undo:function(n){Yd.forEach(n.graph().dummyChains,(function(r){var t,e=n.node(r),o=e.edgeLabel;for(n.setEdge(e.edgeObj,o);e.dummy;)t=n.successors(r)[0],n.removeNode(r),o.points.push({x:e.x,y:e.y}),\"edge-label\"===e.dummy&&(o.x=e.x,o.y=e.y,o.width=e.width,o.height=e.height),r=t,e=n.node(r)}))}};var Kd=Nd,Qd={longestPath:function(n){var r={};Kd.forEach(n.sources(),(function t(e){var o=n.node(e);if(Kd.has(r,e))return o.rank;r[e]=!0;var i=Kd.min(Kd.map(n.outEdges(e),(function(r){return t(r.w)-n.edge(r).minlen})));return i!==Number.POSITIVE_INFINITY&&null!=i||(i=0),o.rank=i}))},slack:function(n,r){return n.node(r.w).rank-n.node(r.v).rank-n.edge(r).minlen}};var Hd=Nd,Xd=dd.Graph,Zd=Qd.slack,nh=function(n){var r,t,e=new Xd({directed:!1}),o=n.nodes()[0],i=n.nodeCount();e.setNode(o,{});for(;rh(e,n)<i;)r=th(e,n),t=e.hasNode(r.v)?Zd(n,r):-Zd(n,r),eh(e,n,t);return e};function rh(n,r){return Hd.forEach(n.nodes(),(function t(e){Hd.forEach(r.nodeEdges(e),(function(o){var i=o.v,u=e===i?o.w:i;n.hasNode(u)||Zd(r,o)||(n.setNode(u,{}),n.setEdge(e,u,{}),t(u))}))})),n.nodeCount()}function th(n,r){return Hd.minBy(r.edges(),(function(t){if(n.hasNode(t.v)!==n.hasNode(t.w))return Zd(r,t)}))}function eh(n,r,t){Hd.forEach(n.nodes(),(function(n){r.node(n).rank+=t}))}var oh=Nd,ih=nh,uh=Qd.slack,ah=Qd.longestPath,fh=dd.alg.preorder,ch=dd.alg.postorder,sh=Vd.simplify,dh=hh;function hh(n){n=sh(n),ah(n);var r,t=ih(n);for(ph(t),vh(t,n);r=yh(t);)mh(t,n,r,bh(t,n,r))}function vh(n,r){var t=ch(n,n.nodes());t=t.slice(0,t.length-1),oh.forEach(t,(function(t){!function(n,r,t){var e=n.node(t),o=e.parent;n.edge(t,o).cutvalue=lh(n,r,t)}(n,r,t)}))}function lh(n,r,t){var e=n.node(t).parent,o=!0,i=r.edge(t,e),u=0;return i||(o=!1,i=r.edge(e,t)),u=i.weight,oh.forEach(r.nodeEdges(t),(function(i){var a,f,c=i.v===t,s=c?i.w:i.v;if(s!==e){var d=c===o,h=r.edge(i).weight;if(u+=d?h:-h,a=t,f=s,n.hasEdge(a,f)){var v=n.edge(t,s).cutvalue;u+=d?-v:v}}})),u}function ph(n,r){arguments.length<2&&(r=n.nodes()[0]),gh(n,{},1,r)}function gh(n,r,t,e,o){var i=t,u=n.node(e);return r[e]=!0,oh.forEach(n.neighbors(e),(function(o){oh.has(r,o)||(t=gh(n,r,t,o,e))})),u.low=i,u.lim=t++,o?u.parent=o:delete u.parent,t}function yh(n){return oh.find(n.edges(),(function(r){return n.edge(r).cutvalue<0}))}function bh(n,r,t){var e=t.v,o=t.w;r.hasEdge(e,o)||(e=t.w,o=t.v);var i=n.node(e),u=n.node(o),a=i,f=!1;i.lim>u.lim&&(a=u,f=!0);var c=oh.filter(r.edges(),(function(r){return f===_h(n,n.node(r.v),a)&&f!==_h(n,n.node(r.w),a)}));return oh.minBy(c,(function(n){return uh(r,n)}))}function mh(n,r,t,e){var o=t.v,i=t.w;n.removeEdge(o,i),n.setEdge(e.v,e.w,{}),ph(n),vh(n,r),function(n,r){var t=oh.find(n.nodes(),(function(n){return!r.node(n).parent})),e=fh(n,t);e=e.slice(1),oh.forEach(e,(function(t){var e=n.node(t).parent,o=r.edge(t,e),i=!1;o||(o=r.edge(e,t),i=!0),r.node(t).rank=r.node(e).rank+(i?o.minlen:-o.minlen)}))}(n,r)}function _h(n,r,t){return t.low<=r.lim&&r.lim<=t.lim}hh.initLowLimValues=ph,hh.initCutValues=vh,hh.calcCutValue=lh,hh.leaveEdge=yh,hh.enterEdge=bh,hh.exchangeEdges=mh;var wh=Qd.longestPath,Eh=nh,jh=dh,kh=function(n){switch(n.graph().ranker){case\"network-simplex\":default:Nh(n);break;case\"tight-tree\":!function(n){wh(n),Eh(n)}(n);break;case\"longest-path\":xh(n)}};var xh=wh;function Nh(n){jh(n)}var Oh=Nd,Ih=function(n){var r=function(n){var r={},t=0;function e(o){var i=t;Oh.forEach(n.children(o),e),r[o]={low:i,lim:t++}}return Oh.forEach(n.children(),e),r}(n);Oh.forEach(n.graph().dummyChains,(function(t){for(var e=n.node(t),o=e.edgeObj,i=function(n,r,t,e){var o,i,u=[],a=[],f=Math.min(r[t].low,r[e].low),c=Math.max(r[t].lim,r[e].lim);o=t;do{o=n.parent(o),u.push(o)}while(o&&(r[o].low>f||c>r[o].lim));i=o,o=e;for(;(o=n.parent(o))!==i;)a.push(o);return{path:u.concat(a.reverse()),lca:i}}(n,r,o.v,o.w),u=i.path,a=i.lca,f=0,c=u[f],s=!0;t!==o.w;){if(e=n.node(t),s){for(;(c=u[f])!==a&&n.node(c).maxRank<e.rank;)f++;c===a&&(s=!1)}if(!s){for(;f<u.length-1&&n.node(c=u[f+1]).minRank<=e.rank;)f++;c=u[f]}n.setParent(t,c),t=n.successors(t)[0]}}))};var Ch=Nd,Ah=Vd,Mh={run:function(n){var r=Ah.addDummyNode(n,\"root\",{},\"_root\"),t=function(n){var r={};function t(e,o){var i=n.children(e);i&&i.length&&Ch.forEach(i,(function(n){t(n,o+1)})),r[e]=o}return Ch.forEach(n.children(),(function(n){t(n,1)})),r}(n),e=Ch.max(Ch.values(t))-1,o=2*e+1;n.graph().nestingRoot=r,Ch.forEach(n.edges(),(function(r){n.edge(r).minlen*=o}));var i=function(n){return Ch.reduce(n.edges(),(function(r,t){return r+n.edge(t).weight}),0)}(n)+1;Ch.forEach(n.children(),(function(u){Lh(n,r,o,i,e,t,u)})),n.graph().nodeRankFactor=o},cleanup:function(n){var r=n.graph();n.removeNode(r.nestingRoot),delete r.nestingRoot,Ch.forEach(n.edges(),(function(r){n.edge(r).nestingEdge&&n.removeEdge(r)}))}};function Lh(n,r,t,e,o,i,u){var a=n.children(u);if(a.length){var f=Ah.addBorderNode(n,\"_bt\"),c=Ah.addBorderNode(n,\"_bb\"),s=n.node(u);n.setParent(f,u),s.borderTop=f,n.setParent(c,u),s.borderBottom=c,Ch.forEach(a,(function(a){Lh(n,r,t,e,o,i,a);var s=n.node(a),d=s.borderTop?s.borderTop:a,h=s.borderBottom?s.borderBottom:a,v=s.borderTop?e:2*e,l=d!==h?1:o-i[u]+1;n.setEdge(f,d,{weight:v,minlen:l,nestingEdge:!0}),n.setEdge(h,c,{weight:v,minlen:l,nestingEdge:!0})})),n.parent(u)||n.setEdge(r,f,{weight:0,minlen:o+i[u]})}else u!==r&&n.setEdge(r,u,{weight:0,minlen:t})}var Ph=Nd,Sh=Vd,Th=function(n){Ph.forEach(n.children(),(function r(t){var e=n.children(t),o=n.node(t);if(e.length&&Ph.forEach(e,r),Ph.has(o,\"minRank\")){o.borderLeft=[],o.borderRight=[];for(var i=o.minRank,u=o.maxRank+1;i<u;++i)Rh(n,\"borderLeft\",\"_bl\",t,o,i),Rh(n,\"borderRight\",\"_br\",t,o,i)}}))};function Rh(n,r,t,e,o,i){var u={width:0,height:0,rank:i,borderType:r},a=o[r][i-1],f=Sh.addDummyNode(n,\"border\",u,t);o[r][i]=f,n.setParent(f,e),a&&n.setEdge(a,f,{weight:1})}var zh=Nd,Fh={adjust:function(n){var r=n.graph().rankdir.toLowerCase();\"lr\"!==r&&\"rl\"!==r||Dh(n)},undo:function(n){var r=n.graph().rankdir.toLowerCase();\"bt\"!==r&&\"rl\"!==r||function(n){zh.forEach(n.nodes(),(function(r){Uh(n.node(r))})),zh.forEach(n.edges(),(function(r){var t=n.edge(r);zh.forEach(t.points,Uh),zh.has(t,\"y\")&&Uh(t)}))}(n);\"lr\"!==r&&\"rl\"!==r||(!function(n){zh.forEach(n.nodes(),(function(r){Gh(n.node(r))})),zh.forEach(n.edges(),(function(r){var t=n.edge(r);zh.forEach(t.points,Gh),zh.has(t,\"x\")&&Gh(t)}))}(n),Dh(n))}};function Dh(n){zh.forEach(n.nodes(),(function(r){Bh(n.node(r))})),zh.forEach(n.edges(),(function(r){Bh(n.edge(r))}))}function Bh(n){var r=n.width;n.width=n.height,n.height=r}function Uh(n){n.y=-n.y}function Gh(n){var r=n.x;n.x=n.y,n.y=r}var Vh=Nd,qh=function(n){var r={},t=Vh.filter(n.nodes(),(function(r){return!n.children(r).length})),e=Vh.max(Vh.map(t,(function(r){return n.node(r).rank}))),o=Vh.map(Vh.range(e+1),(function(){return[]}));function i(t){if(!Vh.has(r,t)){r[t]=!0;var e=n.node(t);o[e.rank].push(t),Vh.forEach(n.successors(t),i)}}var u=Vh.sortBy(t,(function(r){return n.node(r).rank}));return Vh.forEach(u,i),o};var $h=Nd,Yh=function(n,r){for(var t=0,e=1;e<r.length;++e)t+=Wh(n,r[e-1],r[e]);return t};function Wh(n,r,t){for(var e=$h.zipObject(t,$h.map(t,(function(n,r){return r}))),o=$h.flatten($h.map(r,(function(r){return $h.sortBy($h.map(n.outEdges(r),(function(r){return{pos:e[r.w],weight:n.edge(r).weight}})),\"pos\")})),!0),i=1;i<t.length;)i<<=1;var u=2*i-1;i-=1;var a=$h.map(new Array(u),(function(){return 0})),f=0;return $h.forEach(o.forEach((function(n){var r=n.pos+i;a[r]+=n.weight;for(var t=0;r>0;)r%2&&(t+=a[r+1]),a[r=r-1>>1]+=n.weight;f+=n.weight*t}))),f}var Jh=Nd;var Kh=Nd;var Qh=Nd,Hh=Vd;function Xh(n,r,t){for(var e;r.length&&(e=Qh.last(r)).i<=t;)r.pop(),n.push(e.vs),t++;return t}var Zh=Nd,nv=function(n,r){return Jh.map(r,(function(r){var t=n.inEdges(r);if(t.length){var e=Jh.reduce(t,(function(r,t){var e=n.edge(t),o=n.node(t.v);return{sum:r.sum+e.weight*o.order,weight:r.weight+e.weight}}),{sum:0,weight:0});return{v:r,barycenter:e.sum/e.weight,weight:e.weight}}return{v:r}}))},rv=function(n,r){var t={};return Kh.forEach(n,(function(n,r){var e=t[n.v]={indegree:0,in:[],out:[],vs:[n.v],i:r};Kh.isUndefined(n.barycenter)||(e.barycenter=n.barycenter,e.weight=n.weight)})),Kh.forEach(r.edges(),(function(n){var r=t[n.v],e=t[n.w];Kh.isUndefined(r)||Kh.isUndefined(e)||(e.indegree++,r.out.push(t[n.w]))})),function(n){var r=[];function t(n){return function(r){r.merged||(Kh.isUndefined(r.barycenter)||Kh.isUndefined(n.barycenter)||r.barycenter>=n.barycenter)&&function(n,r){var t=0,e=0;n.weight&&(t+=n.barycenter*n.weight,e+=n.weight);r.weight&&(t+=r.barycenter*r.weight,e+=r.weight);n.vs=r.vs.concat(n.vs),n.barycenter=t/e,n.weight=e,n.i=Math.min(r.i,n.i),r.merged=!0}(n,r)}}function e(r){return function(t){t.in.push(r),0==--t.indegree&&n.push(t)}}for(;n.length;){var o=n.pop();r.push(o),Kh.forEach(o.in.reverse(),t(o)),Kh.forEach(o.out,e(o))}return Kh.map(Kh.filter(r,(function(n){return!n.merged})),(function(n){return Kh.pick(n,[\"vs\",\"i\",\"barycenter\",\"weight\"])}))}(Kh.filter(t,(function(n){return!n.indegree})))},tv=function(n,r){var t=Hh.partition(n,(function(n){return Qh.has(n,\"barycenter\")})),e=t.lhs,o=Qh.sortBy(t.rhs,(function(n){return-n.i})),i=[],u=0,a=0,f=0;e.sort((c=!!r,function(n,r){return n.barycenter<r.barycenter?-1:n.barycenter>r.barycenter?1:c?r.i-n.i:n.i-r.i})),f=Xh(i,o,f),Qh.forEach(e,(function(n){f+=n.vs.length,i.push(n.vs),u+=n.barycenter*n.weight,a+=n.weight,f=Xh(i,o,f)}));var c;var s={vs:Qh.flatten(i,!0)};a&&(s.barycenter=u/a,s.weight=a);return s},ev=function n(r,t,e,o){var i=r.children(t),u=r.node(t),a=u?u.borderLeft:void 0,f=u?u.borderRight:void 0,c={};a&&(i=Zh.filter(i,(function(n){return n!==a&&n!==f})));var s=nv(r,i);Zh.forEach(s,(function(t){if(r.children(t.v).length){var i=n(r,t.v,e,o);c[t.v]=i,Zh.has(i,\"barycenter\")&&(u=t,a=i,Zh.isUndefined(u.barycenter)?(u.barycenter=a.barycenter,u.weight=a.weight):(u.barycenter=(u.barycenter*u.weight+a.barycenter*a.weight)/(u.weight+a.weight),u.weight+=a.weight))}var u,a}));var d=rv(s,e);!function(n,r){Zh.forEach(n,(function(n){n.vs=Zh.flatten(n.vs.map((function(n){return r[n]?r[n].vs:n})),!0)}))}(d,c);var h=tv(d,o);if(a&&(h.vs=Zh.flatten([a,h.vs,f],!0),r.predecessors(a).length)){var v=r.node(r.predecessors(a)[0]),l=r.node(r.predecessors(f)[0]);Zh.has(h,\"barycenter\")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+v.order+l.order)/(h.weight+2),h.weight+=2}return h};var ov=Nd,iv=dd.Graph,uv=function(n,r,t){var e=function(n){var r;for(;n.hasNode(r=ov.uniqueId(\"_root\")););return r}(n),o=new iv({compound:!0}).setGraph({root:e}).setDefaultNodeLabel((function(r){return n.node(r)}));return ov.forEach(n.nodes(),(function(i){var u=n.node(i),a=n.parent(i);(u.rank===r||u.minRank<=r&&r<=u.maxRank)&&(o.setNode(i),o.setParent(i,a||e),ov.forEach(n[t](i),(function(r){var t=r.v===i?r.w:r.v,e=o.edge(t,i),u=ov.isUndefined(e)?0:e.weight;o.setEdge(t,i,{weight:n.edge(r).weight+u})})),ov.has(u,\"minRank\")&&o.setNode(i,{borderLeft:u.borderLeft[r],borderRight:u.borderRight[r]}))})),o};var av=Nd;var fv=Nd,cv=qh,sv=Yh,dv=ev,hv=uv,vv=function(n,r,t){var e,o={};av.forEach(t,(function(t){for(var i,u,a=n.parent(t);a;){if((i=n.parent(a))?(u=o[i],o[i]=a):(u=e,e=a),u&&u!==a)return void r.setEdge(u,a);a=i}}))},lv=dd.Graph,pv=Vd,gv=function(n){var r=pv.maxRank(n),t=yv(n,fv.range(1,r+1),\"inEdges\"),e=yv(n,fv.range(r-1,-1,-1),\"outEdges\"),o=cv(n);mv(n,o);for(var i,u=Number.POSITIVE_INFINITY,a=0,f=0;f<4;++a,++f){bv(a%2?t:e,a%4>=2),o=pv.buildLayerMatrix(n);var c=sv(n,o);c<u&&(f=0,i=fv.cloneDeep(o),u=c)}mv(n,i)};function yv(n,r,t){return fv.map(r,(function(r){return hv(n,r,t)}))}function bv(n,r){var t=new lv;fv.forEach(n,(function(n){var e=n.graph().root,o=dv(n,e,t,r);fv.forEach(o.vs,(function(r,t){n.node(r).order=t})),vv(n,t,o.vs)}))}function mv(n,r){fv.forEach(r,(function(r){fv.forEach(r,(function(r,t){n.node(r).order=t}))}))}var _v=Nd,wv=dd.Graph,Ev=Vd,jv=function(n){var r,t=Ev.buildLayerMatrix(n),e=_v.merge(kv(n,t),xv(n,t)),o={};_v.forEach([\"u\",\"d\"],(function(i){r=\"u\"===i?t:_v.values(t).reverse(),_v.forEach([\"l\",\"r\"],(function(t){\"r\"===t&&(r=_v.map(r,(function(n){return _v.values(n).reverse()})));var u=(\"u\"===i?n.predecessors:n.successors).bind(n),a=Iv(n,r,e,u),f=Cv(n,r,a.root,a.align,\"r\"===t);\"r\"===t&&(f=_v.mapValues(f,(function(n){return-n}))),o[i+t]=f}))}));var i=Av(n,o);return Mv(o,i),Lv(o,n.graph().align)};function kv(n,r){var t={};return _v.reduce(r,(function(r,e){var o=0,i=0,u=r.length,a=_v.last(e);return _v.forEach(e,(function(r,f){var c=function(n,r){if(n.node(r).dummy)return _v.find(n.predecessors(r),(function(r){return n.node(r).dummy}))}(n,r),s=c?n.node(c).order:u;(c||r===a)&&(_v.forEach(e.slice(i,f+1),(function(r){_v.forEach(n.predecessors(r),(function(e){var i=n.node(e),u=i.order;!(u<o||s<u)||i.dummy&&n.node(r).dummy||Nv(t,e,r)}))})),i=f+1,o=s)})),e})),t}function xv(n,r){var t={};function e(r,e,o,i,u){var a;_v.forEach(_v.range(e,o),(function(e){a=r[e],n.node(a).dummy&&_v.forEach(n.predecessors(a),(function(r){var e=n.node(r);e.dummy&&(e.order<i||e.order>u)&&Nv(t,r,a)}))}))}return _v.reduce(r,(function(r,t){var o,i=-1,u=0;return _v.forEach(t,(function(a,f){if(\"border\"===n.node(a).dummy){var c=n.predecessors(a);c.length&&(o=n.node(c[0]).order,e(t,u,f,i,o),u=f,i=o)}e(t,u,t.length,o,r.length)})),t})),t}function Nv(n,r,t){if(r>t){var e=r;r=t,t=e}var o=n[r];o||(n[r]=o={}),o[t]=!0}function Ov(n,r,t){if(r>t){var e=r;r=t,t=e}return _v.has(n[r],t)}function Iv(n,r,t,e){var o={},i={},u={};return _v.forEach(r,(function(n){_v.forEach(n,(function(n,r){o[n]=n,i[n]=n,u[n]=r}))})),_v.forEach(r,(function(n){var r=-1;_v.forEach(n,(function(n){var a=e(n);if(a.length){a=_v.sortBy(a,(function(n){return u[n]}));for(var f=(a.length-1)/2,c=Math.floor(f),s=Math.ceil(f);c<=s;++c){var d=a[c];i[n]===n&&r<u[d]&&!Ov(t,n,d)&&(i[d]=n,i[n]=o[n]=o[d],r=u[d])}}}))})),{root:o,align:i}}function Cv(n,r,t,e,o){var i={},u=function(n,r,t,e){var o=new wv,i=n.graph(),u=function(n,r,t){return function(e,o,i){var u,a=e.node(o),f=e.node(i),c=0;if(c+=a.width/2,_v.has(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":u=-a.width/2;break;case\"r\":u=a.width/2}if(u&&(c+=t?u:-u),u=0,c+=(a.dummy?r:n)/2,c+=(f.dummy?r:n)/2,c+=f.width/2,_v.has(f,\"labelpos\"))switch(f.labelpos.toLowerCase()){case\"l\":u=f.width/2;break;case\"r\":u=-f.width/2}return u&&(c+=t?u:-u),u=0,c}}(i.nodesep,i.edgesep,e);return _v.forEach(r,(function(r){var e;_v.forEach(r,(function(r){var i=t[r];if(o.setNode(i),e){var a=t[e],f=o.edge(a,i);o.setEdge(a,i,Math.max(u(n,r,e),f||0))}e=r}))})),o}(n,r,t,o),a=o?\"borderLeft\":\"borderRight\";function f(n,r){for(var t=u.nodes(),e=t.pop(),o={};e;)o[e]?n(e):(o[e]=!0,t.push(e),t=t.concat(r(e))),e=t.pop()}return f((function(n){i[n]=u.inEdges(n).reduce((function(n,r){return Math.max(n,i[r.v]+u.edge(r))}),0)}),u.predecessors.bind(u)),f((function(r){var t=u.outEdges(r).reduce((function(n,r){return Math.min(n,i[r.w]-u.edge(r))}),Number.POSITIVE_INFINITY),e=n.node(r);t!==Number.POSITIVE_INFINITY&&e.borderType!==a&&(i[r]=Math.max(i[r],t))}),u.successors.bind(u)),_v.forEach(e,(function(n){i[n]=i[t[n]]})),i}function Av(n,r){return _v.minBy(_v.values(r),(function(r){var t=Number.NEGATIVE_INFINITY,e=Number.POSITIVE_INFINITY;return _v.forIn(r,(function(r,o){var i=function(n,r){return n.node(r).width}(n,o)/2;t=Math.max(r+i,t),e=Math.min(r-i,e)})),t-e}))}function Mv(n,r){var t=_v.values(r),e=_v.min(t),o=_v.max(t);_v.forEach([\"u\",\"d\"],(function(t){_v.forEach([\"l\",\"r\"],(function(i){var u,a=t+i,f=n[a];if(f!==r){var c=_v.values(f);(u=\"l\"===i?e-_v.min(c):o-_v.max(c))&&(n[a]=_v.mapValues(f,(function(n){return n+u})))}}))}))}function Lv(n,r){return _v.mapValues(n.ul,(function(t,e){if(r)return n[r.toLowerCase()][e];var o=_v.sortBy(_v.map(n,e));return(o[1]+o[2])/2}))}var Pv=Nd,Sv=Vd,Tv=jv;var Rv=Nd,zv=Bd,Fv=Jd,Dv=kh,Bv=Vd.normalizeRanks,Uv=Ih,Gv=Vd.removeEmptyRanks,Vv=Mh,qv=Th,$v=Fh,Yv=gv,Wv=function(n){(function(n){var r=Sv.buildLayerMatrix(n),t=n.graph().ranksep,e=0;Pv.forEach(r,(function(r){var o=Pv.max(Pv.map(r,(function(r){return n.node(r).height})));Pv.forEach(r,(function(r){n.node(r).y=e+o/2})),e+=o+t}))})(n=Sv.asNonCompoundGraph(n)),Pv.forEach(Tv(n),(function(r,t){n.node(t).x=r}))},Jv=Vd,Kv=dd.Graph,Qv=function(n,r){var t=r&&r.debugTiming?Jv.time:Jv.notime;t(\"layout\",(function(){var r=t(\" buildLayoutGraph\",(function(){return function(n){var r=new Kv({multigraph:!0,compound:!0}),t=ul(n.graph());return r.setGraph(Rv.merge({},Xv,il(t,Hv),Rv.pick(t,Zv))),Rv.forEach(n.nodes(),(function(t){var e=ul(n.node(t));r.setNode(t,Rv.defaults(il(e,nl),rl)),r.setParent(t,n.parent(t))})),Rv.forEach(n.edges(),(function(t){var e=ul(n.edge(t));r.setEdge(t,Rv.merge({},el,il(e,tl),Rv.pick(e,ol)))})),r}(n)}));t(\" runLayout\",(function(){!function(n,r){r(\" makeSpaceForEdgeLabels\",(function(){!function(n){var r=n.graph();r.ranksep/=2,Rv.forEach(n.edges(),(function(t){var e=n.edge(t);e.minlen*=2,\"c\"!==e.labelpos.toLowerCase()&&(\"TB\"===r.rankdir||\"BT\"===r.rankdir?e.width+=e.labeloffset:e.height+=e.labeloffset)}))}(n)})),r(\" removeSelfEdges\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){if(r.v===r.w){var t=n.node(r.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:r,label:n.edge(r)}),n.removeEdge(r)}}))}(n)})),r(\" acyclic\",(function(){zv.run(n)})),r(\" nestingGraph.run\",(function(){Vv.run(n)})),r(\" rank\",(function(){Dv(Jv.asNonCompoundGraph(n))})),r(\" injectEdgeLabelProxies\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);if(t.width&&t.height){var e=n.node(r.v),o={rank:(n.node(r.w).rank-e.rank)/2+e.rank,e:r};Jv.addDummyNode(n,\"edge-proxy\",o,\"_ep\")}}))}(n)})),r(\" removeEmptyRanks\",(function(){Gv(n)})),r(\" nestingGraph.cleanup\",(function(){Vv.cleanup(n)})),r(\" normalizeRanks\",(function(){Bv(n)})),r(\" assignRankMinMax\",(function(){!function(n){var r=0;Rv.forEach(n.nodes(),(function(t){var e=n.node(t);e.borderTop&&(e.minRank=n.node(e.borderTop).rank,e.maxRank=n.node(e.borderBottom).rank,r=Rv.max(r,e.maxRank))})),n.graph().maxRank=r}(n)})),r(\" removeEdgeLabelProxies\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){var t=n.node(r);\"edge-proxy\"===t.dummy&&(n.edge(t.e).labelRank=t.rank,n.removeNode(r))}))}(n)})),r(\" normalize.run\",(function(){Fv.run(n)})),r(\" parentDummyChains\",(function(){Uv(n)})),r(\" addBorderSegments\",(function(){qv(n)})),r(\" order\",(function(){Yv(n)})),r(\" insertSelfEdges\",(function(){!function(n){var r=Jv.buildLayerMatrix(n);Rv.forEach(r,(function(r){var t=0;Rv.forEach(r,(function(r,e){var o=n.node(r);o.order=e+t,Rv.forEach(o.selfEdges,(function(r){Jv.addDummyNode(n,\"selfedge\",{width:r.label.width,height:r.label.height,rank:o.rank,order:e+ ++t,e:r.e,label:r.label},\"_se\")})),delete o.selfEdges}))}))}(n)})),r(\" adjustCoordinateSystem\",(function(){$v.adjust(n)})),r(\" position\",(function(){Wv(n)})),r(\" positionSelfEdges\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){var t=n.node(r);if(\"selfedge\"===t.dummy){var e=n.node(t.e.v),o=e.x+e.width/2,i=e.y,u=t.x-o,a=e.height/2;n.setEdge(t.e,t.label),n.removeNode(r),t.label.points=[{x:o+2*u/3,y:i-a},{x:o+5*u/6,y:i-a},{x:o+u,y:i},{x:o+5*u/6,y:i+a},{x:o+2*u/3,y:i+a}],t.label.x=t.x,t.label.y=t.y}}))}(n)})),r(\" removeBorderNodes\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){if(n.children(r).length){var t=n.node(r),e=n.node(t.borderTop),o=n.node(t.borderBottom),i=n.node(Rv.last(t.borderLeft)),u=n.node(Rv.last(t.borderRight));t.width=Math.abs(u.x-i.x),t.height=Math.abs(o.y-e.y),t.x=i.x+t.width/2,t.y=e.y+t.height/2}})),Rv.forEach(n.nodes(),(function(r){\"border\"===n.node(r).dummy&&n.removeNode(r)}))}(n)})),r(\" normalize.undo\",(function(){Fv.undo(n)})),r(\" fixupEdgeLabelCoords\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);if(Rv.has(t,\"x\"))switch(\"l\"!==t.labelpos&&\"r\"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case\"l\":t.x-=t.width/2+t.labeloffset;break;case\"r\":t.x+=t.width/2+t.labeloffset}}))}(n)})),r(\" undoCoordinateSystem\",(function(){$v.undo(n)})),r(\" translateGraph\",(function(){!function(n){var r=Number.POSITIVE_INFINITY,t=0,e=Number.POSITIVE_INFINITY,o=0,i=n.graph(),u=i.marginx||0,a=i.marginy||0;function f(n){var i=n.x,u=n.y,a=n.width,f=n.height;r=Math.min(r,i-a/2),t=Math.max(t,i+a/2),e=Math.min(e,u-f/2),o=Math.max(o,u+f/2)}Rv.forEach(n.nodes(),(function(r){f(n.node(r))})),Rv.forEach(n.edges(),(function(r){var t=n.edge(r);Rv.has(t,\"x\")&&f(t)})),r-=u,e-=a,Rv.forEach(n.nodes(),(function(t){var o=n.node(t);o.x-=r,o.y-=e})),Rv.forEach(n.edges(),(function(t){var o=n.edge(t);Rv.forEach(o.points,(function(n){n.x-=r,n.y-=e})),Rv.has(o,\"x\")&&(o.x-=r),Rv.has(o,\"y\")&&(o.y-=e)})),i.width=t-r+u,i.height=o-e+a}(n)})),r(\" assignNodeIntersects\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t,e,o=n.edge(r),i=n.node(r.v),u=n.node(r.w);o.points?(t=o.points[0],e=o.points[o.points.length-1]):(o.points=[],t=u,e=i),o.points.unshift(Jv.intersectRect(i,t)),o.points.push(Jv.intersectRect(u,e))}))}(n)})),r(\" reversePoints\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);t.reversed&&t.points.reverse()}))}(n)})),r(\" acyclic.undo\",(function(){zv.undo(n)}))}(r,t)})),t(\" updateInputGraph\",(function(){!function(n,r){Rv.forEach(n.nodes(),(function(t){var e=n.node(t),o=r.node(t);e&&(e.x=o.x,e.y=o.y,r.children(t).length&&(e.width=o.width,e.height=o.height))})),Rv.forEach(n.edges(),(function(t){var e=n.edge(t),o=r.edge(t);e.points=o.points,Rv.has(o,\"x\")&&(e.x=o.x,e.y=o.y)})),n.graph().width=r.graph().width,n.graph().height=r.graph().height}(n,r)}))}))};var Hv=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],Xv={ranksep:50,edgesep:20,nodesep:50,rankdir:\"tb\"},Zv=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\"],nl=[\"width\",\"height\"],rl={width:0,height:0},tl=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],el={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},ol=[\"labelpos\"];function il(n,r){return Rv.mapValues(Rv.pick(n,r),Number)}function ul(n){var r={};return Rv.forEach(n,(function(n,t){r[t.toLowerCase()]=n})),r}var al=Nd,fl=Vd,cl=dd.Graph;var sl=tr({graphlib:dd,layout:Qv,debug:{debugOrdering:function(n){var r=fl.buildLayerMatrix(n),t=new cl({compound:!0,multigraph:!0}).setGraph({});return al.forEach(n.nodes(),(function(r){t.setNode(r,{label:r}),t.setParent(r,\"layer\"+n.node(r).rank)})),al.forEach(n.edges(),(function(n){t.setEdge(n.v,n.w,{},n.name)})),al.forEach(r,(function(n,r){var e=\"layer\"+r;t.setNode(e,{rank:\"same\"}),al.reduce(n,(function(n,r){return t.setEdge(n,r,{style:\"invis\"}),r}))})),t}},util:{time:Vd.time,notime:Vd.notime},version:\"0.8.5\"});function dl(n,r,t){void 0===t&&(t={rankdir:\"TB\"});var e=t.rankdir,o=new sl.graphlib.Graph;return o.setDefaultEdgeLabel((function(){return{}})),o.setGraph({rankdir:e}),n.forEach((function(n){var r,t;if(!n.id)throw new Error('Node \"id\" does not exist');var e=(null===(r=n.data)||void 0===r?void 0:r.width)||200,i=(null===(t=n.data)||void 0===t?void 0:t.height)||56;o.setNode(n.id,{width:e,height:i})})),r.forEach((function(n){o.setEdge(n.source,n.target)})),sl.layout(o),n.forEach((function(n){var r=o.node(n.id),t=\"bottom\",i=\"top\";switch(e){case\"TB\":t=\"bottom\",i=\"top\";break;case\"BT\":t=\"top\",i=\"bottom\";break;case\"LR\":case\"RL\":t=\"right\",i=\"left\"}n.targetPosition=i,n.sourcePosition=t,n.position={x:r.x-r.width/2,y:r.y-r.height/2}})),{nodes:n,edges:r}}export{dl as dagreLayout};\n//# sourceMappingURL=index.esm.js.map\n","import {\n useState,\n useCallback,\n type Dispatch,\n type SetStateAction,\n} from 'react';\nimport { applyEdgeChanges } from '../utils/changes';\nimport { Edge, OnEdgesChange } from '../types';\n\nexport function useEdgesState<EdgeType extends Edge = Edge>(\n initialEdges: EdgeType[],\n): [EdgeType[], Dispatch<SetStateAction<EdgeType[]>>, OnEdgesChange<EdgeType>] {\n const [edges, setEdges] = useState(initialEdges);\n const onEdgesChange: OnEdgesChange<EdgeType> = useCallback(\n (changes) => setEdges((eds) => applyEdgeChanges(changes, eds)),\n [],\n );\n\n return [edges, setEdges, onEdgesChange];\n}\n","import {\n useState,\n useCallback,\n type Dispatch,\n type SetStateAction,\n} from 'react';\nimport { applyNodeChanges } from '../utils/changes';\nimport { Node, OnNodesChange } from '../types';\n\nexport function useNodesState<NodeType extends Node>(\n initialNodes: NodeType[],\n): [NodeType[], Dispatch<SetStateAction<NodeType[]>>, OnNodesChange<NodeType>] {\n const [nodes, setNodes] = useState(initialNodes);\n const onNodesChange: OnNodesChange<NodeType> = useCallback(\n (changes) => setNodes((nds) => applyNodeChanges(changes, nds)),\n [],\n );\n\n return [nodes, setNodes, onNodesChange];\n}\n"],"names":["jsxRuntimeModule","exports","f","require$$0","k","Symbol","for","l","m","Object","prototype","hasOwnProperty","n","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","p","key","ref","__self","__source","q","c","a","g","b","d","e","h","call","defaultProps","$$typeof","type","props","_owner","current","reactJsxRuntime_production_min","jsx","jsxs","hasOwn","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","join","module","default","window","shimModule","is","useState","useEffect","useLayoutEffect","useDebugValue","r","getSnapshot","value","u","document","createElement","inst","useSyncExternalStoreShim_production_min","useSyncExternalStore","withSelectorModule","require$$1","t","useRef","v","useMemo","w","withSelector_production_min","useSyncExternalStoreWithSelector","hasValue","createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","subscribe","add","delete","destroy","console","warn","clear","ReactExports","useSyncExternalStoreExports","identity","useStoreWithEqualityFn","selector","equalityFn","slice","getServerState","createWithEqualityFnImpl","defaultEqualityFn","createStore","useBoundStoreWithEqualityFn","StoreContext","createContext","Provider","errorMessages","error001","error002","error003","nodeType","concat","error004","error005","error006","error007","id","error009","error008","handleType","_a","sourceHandle","targetHandle","error010","error011","edgeType","error012","infiniteExtent","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","elementSelectionKeys","zustandErrorMessage","useStore","store","useContext","Error","useZustandStore","useStoreApi","updateAbsolutePositions","nodeLookup","options","nodeOrigin","elevateNodesOnSelect","defaults","selectedNodeZ","nodeLookup_1","__values","nodeLookup_1_1","next","node","__read","parentId","has","parentNode","get","_d","calculateXYZPosition","__assign","position","z","isNumeric","zIndex","selected","_b","origin","x","y","currPosition","internals","positionAbsolute","positionChanged","result","parent","parentPosition","getNodePositionWithOrigin","_c","_f","getNodeDimensions","width","height","offsetX","offsetY","updateConnectionLookup","connectionLookup","edgeLookup","edges","edges_1","edges_1_1","edge","source","target","sourceKey","targetKey","prevSource","Map","prevTarget","connection","edgeId","set","adoptUserNodes","nodes","parentLookup","checkEquality","tmpLookup","userNode","internalNode","measured","handleBounds","childNodes","size","handleExpandParent","children","changes","parentExpansions","children_1","children_1_1","child","parent_1","parentRect","expandedRect","nodeToRect","getBoundsOfRects","rect","dimensions","xChange","Math","round","abs","yChange","childNode","some","setAttributes","max","clamp","val","min","clampPosition","extent","initialWidth","_h","_g","_e","initialHeight","isNaN","isFinite","snapPosition","snapGrid","pointToRendererPoint","snapToGrid","tx","ty","tScale","getBoundsOfBoxes","box1","box2","x2","y2","rectToBox","boxToRect","nodeToBox","rect1","rect2","fixedForwardRef","render","forwardRef","getOverlappingArea","rectA","rectB","xOverlap","yOverlap","ceil","getViewportForBounds","bounds","minZoom","maxZoom","padding","xZoom","yZoom","zoom","clampedZoom","isCoordinateExtent","undefined","calcAutoPanVelocity","calcAutoPan","pos","getPositionWithOrigin","rendererPointToPoint","isMacOs","navigator","userAgent","indexOf","isNode","element","isNodeBase","isRectObject","obj","getPointerPosition","event","transform","getEventPosition","pointerPos","xSnapped","ySnapped","getDimensions","offsetWidth","offsetHeight","getHostForElement","getRootNode","inputTags","isInputDOMNode","composedPath","includes","nodeName","hasAttribute","closest","isMouseEvent","isMouse","evtX","clientX","touches","evtY","clientY","left","top","getHandleBounds","nodeElement","handles","querySelectorAll","handlesArray","from","nodeBounds","getBoundingClientRect","nodeOffset","map","handle","getAttribute","defaultDoc","useKeyPress","keyCode","actInsideInputWithModifier","keyPressed","setKeyPressed","modifierPressed","pressedKeys","keys","filter","kc","split","keysFlat","reduce","res","item","__spreadArray","keyCodes","keysToWatch","downHandler_1","ctrlKey","metaKey","shiftKey","keyOrCode","useKeyOrCode","code","isMatchingKey","preventDefault","upHandler_1","resetHandler_1","addEventListener","removeEventListener","isUp","every","eventCode","shallow$1","objA","objB","keysA","keyA","ConnectionMode","PanOnScrollMode","SelectionMode","ConnectionLineType","MarkerType","Position","containerStyle","noop","dispatch","_","test","Dispatch","this","name","callback","constructor","on","typename","types","T","trim","copy","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","creator","none","selector$e","querySelector","empty","selectorAll","arrayAll","select","array","matcher","matches","childMatcher","find","childFirst","firstElementChild","sparse","update","EnterNode","datum","_next","_parent","__data__","bindIndex","group","enter","exit","data","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","arraylike","ascending","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","appendChild","lower","previousSibling","insertBefore","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","__on","o","j","onAdd","contextListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","splice","contains","root","Selection","groups","parents","_groups","_parents","selection","pointer","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","matrixTransform","getScreenCTM","inverse","clientLeft","clientTop","pageX","pageY","subgroups","subnode","subgroup","selectAll","selectChild","match","childFind","selectChildren","childrenFilter","bind","constant","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","onenter","onupdate","onexit","append","merge","order","context","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","sort","compare","compareNode","sortgroups","sortgroup","each","attr","getAttributeNS","property","classed","text","html","create","insert","before","deep","typenames","parseTypenames","iterator","nonpassive","passive","nonpassivecapture","capture","nopropagation","stopImmediatePropagation","noevent$1","dragDisable","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","constant$2","DragEvent","subject","identifier","active","dx","dy","defineProperties","enumerable","configurable","defaultFilter","button","defaultContainer","defaultSubject","defaultTouchable","maxTouchPoints","define","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","opacity","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","s","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","channels","displayable","formatHex8","formatHsl","pow","constant$1","gamma","nogamma","exponential","linear","interpolateRgb","rgbGamma","start","end","colorRgb","interpolateNumber","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","index","number","one","zero","svgNode","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","sqrt","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","baseVal","consolidate","matrix","cosh","exp","taskHead","taskTail","interpolateZoom","zoomRho","rho","rho2","rho4","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","log","d1","b0","b1","r0","r1","coshr0","tanh","sinh","duration","SQRT2","_1","_2","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","TypeError","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","timing","schedules","__transition","self","tween","tick","ease","init","interrupt","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","Promise","resolve","reject","cancel","defaultTiming","ZoomEvent","Transform","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","__zoom","defaultExtent","SVGElement","viewBox","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","viewChanged","prevViewport","eventViewport","transformToViewport","viewportToTransform","zoomIdentity","isWrappedWithClass","className","isRightClickPan","panOnDrag","usedButton","getD3Transition","wheelDelta","factor","XYPanZoom","domNode","viewport","onPanZoom","onPanZoomStart","onPanZoomEnd","onTransformChange","onDraggingChange","zoomPanValues","isZoomingOrPanning","usedRightMouseButton","mouseButton","timerId","panScrollTimeout","isPanScrolling","bbox","d3ZoomInstance","touchstarting","touchfirst","touchending","constrain","touchable","scaleExtent","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","centroid","gesture","clean","__zooming","Gesture","taps","wheel","mouse","moved","x0","y0","dragEnable","changedTouches","k1","started","touch0","touch1","l0","l1","dp","dl","hypot","collection","scaleBy","scaleTo","translateBy","translateTo","emit","clickDistance","d3Selection","setViewportConstrained","d3ZoomHandler","d3DblClickZoomHandler","setTransform","nextTransform","contrainedTransform","noWheelClassName","noPanClassName","onPaneContextMenu","userSelectionActive","panOnScroll","panOnScrollMode","panOnScrollSpeed","preventScrolling","zoomOnPinch","zoomOnScroll","zoomOnDoubleClick","zoomActivationKeyPressed","lib","wheelHandler","d3Zoom","currentZoom","pinchDelta","deltaNormalize","deltaX","Vertical","Horizontal","internal","nextViewport","createPanOnScrollHandler","createZoomOnScrollHandler","startHandler","createPanZoomStartHandler","panZoomHandler","sync","createPanZoomHandler","panZoomEndHandler","viewport_1","createPanZoomEndHandler","zoomScroll","pinchZoom","buttonAllowed","createFilter","setViewport","getViewport","zoomTransform","setScaleExtent","setTranslateExtent","syncViewport","currentTransform","ZoomPane","Free","defaultViewport","zoomActivationKeyCode","_j","onViewportChange","isControlledViewport","zoomPane","_k","shallow","panZoom","updateDimensions","onError","resizeObserver_1","ResizeObserver","observe","unobserve","useResizeHandler","paneDragging","vp","onViewportChangeStart","onMoveStart","onMove","onViewportChangeEnd","onMoveEnd","_jsx","deleteKeyOptions","applyChange","change","dragging","resizing","applyChanges","elements","updatedElements","changesMap","changes_1","changes_1_1","elementChanges","elements_1","elements_1_1","changes_3","updatedElement","changes_2","changes_2_1","applyEdgeChanges","applyNodeChanges","createSelectionChange","getSelectionChanges","items","selectedIds","mutateItem","items_1","items_1_1","willBeSelected","getElementsDiffChanges","lookup","itemsLookup","items_2","items_2_1","lookupItem","storeItem","lookup_1","lookup_1_1","elementToRemoveChange","getInternalNodesBounds","box","nodeBox","getNodesInside","partially","excludeNonSelectableNodes","paneRect","visibleNodes","nodes_1","nodes_1_1","_m","selectable","_o","hidden","overlappingArea","getConnectedEdges","nodeIds","fitView","filteredNodes","optionNodeIds","includeHiddenNodes","currBox","getNodesBounds","calculateNodePosition","nodeId","nextPosition","nodeExtent","parentX","parentY","currentExtent","clampNodeExtent","expandParent","nodeWidth","nodeHeight","parentWidth","parentHeight","currNodeOrigin","extentX","extentY","getElementsToRemove","nodesToRemove","edgesToRemove","onBeforeDelete","matchingNodes","deletable","isIncluded","parentHit","nodes_2","nodes_2_1","done","edgeIds","deletableEdges","connectedEdges","matchingEdges","deletableEdges_1","deletableEdges_1_1","onBeforeDeleteResult","sent","userSelectionRect","UserSelection","wrapHandler","handler","containerRef","elementsSelectable","Pane","isSelecting","selectionMode","onSelectionStart","onSelectionEnd","onPaneClick","onPaneScroll","onPaneMouseEnter","onPaneMouseMove","onPaneMouseLeave","container","prevSelectedNodesCount","prevSelectedEdgesCount","containerBounds","edgeIdLookup","resetUserSelection","onClick","resetSelectedElements","nodesSelectionActive","onWheel","hasActiveSelection","_jsxs","cc","draggable","onContextMenu","onMouseEnter","onMouseDown","edgeLookup_1","edgeLookup_1_1","nativeEvent","startX","startY","onMouseMove","triggerNodeChanges","triggerEdgeChanges","mouseX","mouseY","nextUserSelectRect","selectedNodes","selectedEdgeIds","selectedNodeIds","selectedNodes_1","selectedNodes_1_1","selectedNode","edgeIds_1","edgeIds_1_1","onMouseUp","onMouseLeave","FlowRendererComponent","deleteKeyCode","selectionKeyCode","selectionOnDrag","multiSelectionKeyCode","panActivationKeyCode","_panOnScroll","_panOnDrag","onSelectionContextMenu","disableKeyboardA11y","selectionKeyPressed","panActivationKeyPressed","deleteKeyPressed","multiSelectionKeyPressed","multiSelectionActive","useGlobalKeyHandler","displayName","FlowRenderer","memo","useIsomorphicLayoutEffect","useQueue","runQueue","shouldFlush","setShouldFlush","cb","queue","reset","createQueue","queueItems","BatchContext","BatchProvider","nodeQueueHandler","useCallback","setNodes","hasDefaultNodes","onNodesChange","queueItems_1","queueItems_1_1","payload","nodeQueue","edgeQueueHandler","setEdges","hasDefaultEdges","onEdgesChange","queueItems_2","queueItems_2_1","edgeQueue","useViewportHelper","zoomIn","zoomOut","zoomTo","zoomLevel","getZoom","tX","tY","tZoom","setCenter","nextZoom","centerX","centerY","fitBounds","screenToFlowPosition","clientPosition","domX","domY","correctedPosition","flowToScreenPosition","flowPosition","rendererPosition","useInkFlow","_this","viewportHelper","batchContext","useBatchContext","viewportInitialized","generalHelper","getInternalNode","getNodeRect","nodeToUse","nextParentId","origin_1","xOffset","yOffset","evaluateAbsolutePosition","nodeWithPosition","updateNode","nodeUpdate","prevNodes","nextNode","getNodes","getNode","getEdges","getEdge","addNodes","newNodes","addEdges","newEdges","toObject","deleteElements","onNodesDelete","onEdgesDelete","onDelete","hasMatchingEdges","hasMatchingNodes","edgeChanges","nodeChanges","deletedNodes","deletedEdges","getIntersectingNodes","nodeOrRect","isRect","nodeRect","hasNodesOption","currNodeRect","isNodeIntersecting","area","updateNodeData","dataUpdate","nextData","updateNodeInternals","onlyRenderVisible","NodeIdContext","Consumer","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","getBezierEdgeCenter","sourceX","sourceY","targetX","targetY","sourceControlX","sourceControlY","targetControlX","targetControlY","calculateControlOffset","distance","curvature","getControlWithCurvature","x1","y1","Left","Right","Top","Bottom","getEdgeCenter","getEdgeId","handleDirections","getDirection","sourcePosition","getSmoothStepPath","targetPosition","borderRadius","center","offset","sourceDir","targetDir","sourceGapped","targetGapped","dir","dirAccessor","currDir","points","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","getPoints","labelX","labelY","path","segment","bendSize","xDir_1","yDir_1","xDir","yDir","getBend","getHandles","currentHandle","getHandleType","edgeUpdaterType","handleDomNode","alwaysValid","connectionStartHandle","isValidHandle","connectionMode","fromNodeId","fromHandleId","fromType","doc","flowId","isValidConnection","isTarget","handleBelow","elementFromPoint","handleToCheck","isValid","endHandle","handleNodeId","handleId","connectable","connectableEnd","Strict","XYHandle","onPointerDown","closestHandle","connectionRadius","autoPanOnConnect","panBy","cancelConnection","onConnectStart","onConnect","onConnectEnd","onEdgeUpdateEnd","updateConnection","getTransform","getConnectionStartHandle","autoPanId","clickedHandle","connectionPosition","autoPanStarted","handleLookup","connectionHandles","sourceHandles","targetHandles","getHandleLookup","connectionStatus","connectionEndHandle","onPointerMove","onPointerUp","autoPan","closestHandles","minDistance","handles_1","handles_1_1","getClosestHandle","isInsideConnectionRadius","isHandleValid","cancelAnimationFrame","connectOnClick","rfId","Handle","isConnectable","isConnectableStart","isConnectableEnd","onTouchStart","rest","__rest","startHandle","clickHandle","connectionClickStartHandle","connectingTo","connectingFrom","clickConnecting","isPossibleEndHandle","connectionInProcess","valid","connectingSelector","onConnectExtended","defaultEdgeOptions","onConnectAction","edgeParams","el","connectionExists","addEdge","isMouseTriggered","currentStore","connectablestart","connectableend","clickconnecting","connectingfrom","connectingto","connectionindicator","onClickConnectStart","onClickConnectEnd","isValidConnectionStore","isValidConnectionHandler","arrowKeyDiffs","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","builtinNodeTypes","input","_Fragment","label","output","handleNodeClick","unselect","nodeRef","addSelectedNodes","unselectNodesAndEdges","blur","isParentSelected","hasSelector","parentElement","getEventHandlerParams","dragItems","nodesFromDragItems","dragItems_1","dragItems_1_1","dragItem","node_1","XYDrag","onNodeMouseDown","getStoreItems","onDragStart","onDrag","onDragStop","lastPos","mousePosition","dragStarted","noDragClassName","handleSelector","isSelectable","updateNodes","dragEvent","onNodeDrag","onSelectionDrag","updateNodePositions","hasChange","nodesBox","adjustedNodeExtent","positionAbsolute_1","currentNode","currentNodes","xMovement","yMovement","startDrag","nodesDraggable","selectNodesOnDrag","onNodeDragStart","onSelectionDragStart","mousePos","getDragItems","d3DragInstance","mousedownx","mousedowny","mousemoving","gestures","drag","beforestart","mousemoved","mouseupped","nodrag","touch","nodeDragThreshold","autoPanOnNodeDrag","onNodeDragStop","onSelectionDragStop","selectedAndDraggable","NodeWrapper","onDoubleClick","nodesConnectable","nodesFocusable","resizeObserver","nodeTypes","isParent","NodeComponent","isDraggable","isFocusable","focusable","hasDimensions","nodeHasDimensions","observedNode","prevSourcePosition","prevTargetPosition","prevType","isInitialized","typeChanged","sourcePosChanged","targetPosChanged","force","useNodeObserver","disabled","setDragging","xyDrag","useDrag","dragHandle","moveSelectedNodes","nodeUpdates","isSelected","xVelo","yVelo","xDiff","direction","yDiff","useMoveSelectedNodes","nodeDimensions","inlineDimensions","getNodeInlineStyleDimensions","clampedPosition","positionWithOrigin","hasPointerEvents","onMouseEnterHandler","onMouseMoveHandler","onMouseLeaveHandler","onContextMenuHandler","onDoubleClickHandler","pointerEvents","visibility","onKeyDown","ariaLiveMessage","tabIndex","role","ariaLabel","positionAbsoluteX","positionAbsoluteY","NodeRendererComponent","entries","updates","entry","disconnect","useResizeObserver","NodeRenderer","MarkerSymbols","Arrow","strokeWidth","stroke","strokeLinecap","strokeLinejoin","fill","ArrowClosed","getMarkerId","marker","idPrefix","Marker","markerUnits","orient","symbol","useMarkerSymbol","markerWidth","markerHeight","refX","refY","MarkerDefinitions","defaultColor","markers","defaultMarkerStart","defaultMarkerEnd","ids","markerStart","markerEnd","markerId","localeCompare","createMarkerIds","EdgeTextComponent","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","edgeTextBbox","setEdgeTextBbox","edgeTextClasses","onEdgeTextRefChange","edgeRef","textBbox","getBBox","rx","ry","EdgeText","BaseEdge","interactionWidth","strokeOpacity","getControl","createSimpleBezierEdge","getSimpleBezierPath","isInternal","SimpleBezierEdge","SimpleBezierEdgeInternal","createSmoothStepEdge","pathOptions","SmoothStepEdge","SmoothStepEdgeInternal","createStepEdge","StepEdge","StepEdgeInternal","createStraightEdge","getStraightPath","StraightEdge","StraightEdgeInternal","createBezierEdge","getBezierPath","BezierEdge","BezierEdgeInternal","builtinEdgeTypes","straight","step","smoothstep","simplebezier","nullPosition","shiftX","shift","shiftY","EdgeUpdaterClassName","EdgeAnchor","radius","onMouseOut","cx","cy","EdgeUpdateAnchors","isUpdatable","edgeUpdaterRadius","targetHandleId","sourceHandleId","onEdgeUpdate","onEdgeUpdateStart","setUpdating","setUpdateHover","handleEdgeUpdater","isSourceHandle","evt","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","isNodeInitialized","toHandleBounds","getHandlePosition","getHandle","EdgeWrapper","edgesFocusable","edgesUpdatable","edgeTypes","EdgeComponent","updatable","updateHover","updating","sourceNode","targetNode","edgePosition","sourceHandleBounds","targetHandleBounds","getEdgePosition","edgeOrConnectedNodeSelected","selectedZIndex","getElevatedEdgeZIndex","elevateOnSelect","elevateEdgesOnSelect","markerStartUrl","markerEndUrl","onEdgeDoubleClick","onEdgeContextMenu","onEdgeMouseEnter","onEdgeMouseMove","onEdgeMouseLeave","animated","inactive","addSelectedEdges","EdgeRendererComponent","useVisibleEdgeIds","EdgeRenderer","Viewport","GraphViewComponent","GraphView","defaultNodes","defaultEdges","storeEdges","storeNodes","fitViewOnInit","fitViewDone","fitViewOnInitOptions","onSelectionChangeHandlers","debug","setDefaultNodesAndEdges","viewportNode","updatedInternals","DOMMatrixReadOnly","m22","parentExpandChildren","dimensionChanged","newNode","parentExpandChanges","updateNodeInternalsSystem","nextFitViewDone","nodeDragItems","nodeDragItems_1","nodeDragItems_1_1","edgesToUnselect","setMinZoom","setMaxZoom","setNodeExtent","delta","panBySystem","fitViewSystem","currentConnection","InkFlowProvider","initialNodes","initialEdges","Wrapper","Fragment","fieldsToTrack","initPrevValues","StoreUpdater","previousFields","fieldsToTrack_1","fieldsToTrack_1_1","fieldName","fieldValue","wrapperStyle","overflow","initViewport","fitViewOptions","cls","PlusIcon","MinusIcon","FitViewIcon","LockIcon","UnlockIcon","ControlButton","Panel","positionClasses","isInteractive","minZoomReached","maxZoomReached","ControlsComponent","showZoom","showFitView","showInteractive","onZoomIn","onZoomOut","onFitView","onInteractiveChange","orientation","orientationClass","title","Controls","E","N","O","I","C","A","M","L","P","R","F","D","B","U","G","V","$","Y","W","J","K","Q","H","X","Z","nn","rn","tn","en","un","an","fn","cn","sn","dn","hn","vn","ln","pn","gn","yn","bn","mn","_n","wn","En","jn","kn","xn","Nn","On","In","Cn","An","Mn","Ln","Pn","Sn","Tn","Rn","zn","Fn","Dn","Bn","Un","Gn","Vn","qn","$n","Yn","Wn","Jn","Kn","Qn","Hn","Xn","Zn","nr","rr","globalThis","global","er","or","ir","ur","ar","Function","fr","cr","toStringTag","sr","dr","vr","lr","IE_PROTO","hr","pr","gr","br","mr","yr","hash","_r","wr","Er","jr","writable","kr","xr","Nr","Or","propertyIsEnumerable","Ir","Cr","Ar","Mr","Lr","Pr","Sr","Tr","Rr","zr","Fr","Dr","Br","Ur","Buffer","isBuffer","Gr","Vr","qr","$r","Yr","Wr","Jr","Kr","Qr","Hr","Xr","Zr","nt","rt","tt","et","ot","it","ut","at","ft","ct","st","dt","ht","vt","lt","pt","gt","yt","bt","mt","process","require","binding","_t","isTypedArray","wt","String","Et","jt","kt","xt","Nt","It","Ot","Ct","At","Mt","Lt","Pt","St","Tt","Rt","zt","Ft","Dt","Bt","Ut","Gt","Vt","qt","$t","Yt","Wt","Jt","Kt","Qt","Ht","Xt","Zt","ne","re","te","ee","oe","ie","ue","ae","fe","ce","se","de","he","ve","le","pe","ge","ye","be","me","we","Ee","je","ke","xe","Ne","Oe","Ie","Ce","Ae","Me","Le","Pe","Se","Te","Re","ze","Fe","De","Be","Ue","Ge","Ve","qe","$e","Ye","We","Je","Ke","Qe","He","Xe","Ze","no","ro","to","eo","oo","io","uo","ao","fo","co","so","ho","vo","lo","po","go","yo","bo","mo","wo","Eo","jo","ko","xo","No","Oo","Io","Co","Ao","Mo","Lo","Po","So","To","Ro","zo","Fo","Do","Bo","Uo","Go","Vo","qo","$o","Yo","Wo","Jo","Ko","Qo","Ho","Xo","Zo","ni","ri","ti","ei","oi","ii","ui","ai","fi","ci","si","di","hi","vi","li","pi","gi","yi","mi","_i","wi","Ei","ji","ki","xi","Ni","Oi","Ii","Ci","Ai","Mi","Li","Pi","Si","Ti","Ri","zi","Fi","Di","Bi","Ui","Gi","Vi","qi","$i","Yi","Wi","Ji","Ki","Qi","Hi","Xi","Zi","nu","ru","tu","eu","ou","iu","uu","au","fu","cu","su","du","hu","vu","lu","pu","gu","yu","bu","mu","_u","wu","Eu","ju","ku","xu","Nu","Ou","Iu","Cu","Au","Mu","Lu","Pu","Su","Tu","Ru","zu","Fu","Du","Bu","Uu","Gu","Vu","qu","$u","Yu","Wu","Ju","Ku","Qu","Hu","Xu","Zu","na","ra","ta","ea","oa","ia","ua","aa","fa","ca","sa","da","ha","va","la","pa","ga","ba","ma","wa","Ea","ja","ka","Na","Oa","Ia","Ca","Aa","Ma","La","Pa","Sa","Ta","Ra","za","Fa","Da","Ba","Ua","allocUnsafe","Ga","Va","qa","$a","getOwnPropertySymbols","Ya","Wa","getPrototypeOf","Ja","Ka","Qa","Ha","Xa","ArrayBuffer","Za","Uint8Array","nf","byteLength","rf","buffer","byteOffset","ef","of","ff","valueOf","tf","isMap","uf","isSet","af","cf","sf","df","hf","vf","lf","pf","gf","yf","bf","mf","wf","jf","message","Ef","kf","xf","Nf","If","Cf","Mf","Lf","Pf","cache","Cache","Af","charCodeAt","Sf","Tf","Rf","zf","Df","Uf","Of","Ff","Bf","Gf","Vf","qf","$f","Yf","Wf","Jf","Qf","Kf","Hf","Xf","isConcatSpreadable","Zf","nc","rc","tc","ic","ec","oc","uc","ac","fc","isEmpty","isFunction","isUndefined","union","values","sc","_isDirected","directed","_isMultigraph","multigraph","_isCompound","compound","_label","_defaultNodeLabelFn","_defaultEdgeLabelFn","_nodes","_children","_in","_preds","_out","_sucs","_edgeObjs","_edgeLabels","_nodeCount","_edgeCount","isDirected","isMultigraph","isCompound","setGraph","graph","setDefaultNodeLabel","nodeCount","sources","sinks","setNode","hasNode","removeNode","removeEdge","_removeFromParentsChildList","setParent","predecessors","successors","neighbors","isLeaf","filterNodes","setEdge","setDefaultEdgeLabel","edgeCount","setPath","freeze","hasEdge","inEdges","outEdges","nodeEdges","hc","write","read","vc","lc","_arr","_keyIndices","_decrease","removeMin","_swap","_heapify","decrease","pc","predecessor","gc","yc","onStack","lowlink","bc","mc","CycleException","wc","Ec","jc","xc","Graph","version","json","alg","components","dijkstra","dijkstraAll","findCycles","floydWarshall","isAcyclic","postorder","preorder","prim","tarjan","topsort","graphlib","Nc","Oc","Ic","Cc","Ac","Mc","Lc","Pc","Sc","Tc","Rc","zc","Fc","Dc","Bc","Uc","Gc","Vc","qc","$c","Yc","Wc","Jc","Kc","Qc","Hc","Xc","Zc","ns","rs","ts","es","os","us","as","fs","cs","ss","ds","hs","vs","ls","ps","gs","ys","ms","_s","ws","Es","js","ks","xs","Ns","Os","Is","Cs","As","Ms","Ls","Ps","Ss","Ts","Rs","zs","Fs","Ds","Bs","Us","Gs","Vs","qs","$s","Ys","Ws","Js","Ks","Qs","Hs","Xs","Zs","nd","rd","td","ed","od","ud","ad","fd","cd","sd","dd","hd","ld","charAt","vd","gd","yd","bd","md","wd","xd","criteria","kd","cloneDeep","pd","flatten","forIn","last","mapValues","minBy","pick","Ed","jd","sortBy","uniqueId","zipObject","Nd","Od","Id","_prev","_sentinel","Cd","Ad","dequeue","enqueue","JSON","stringify","Md","Ld","Pd","Td","Rd","out","zd","in","Fd","Dd","buckets","zeroIdx","Bd","run","acyclicer","weight","forwardName","reversed","undo","Ud","Gd","Vd","addDummyNode","qd","simplify","minlen","asNonCompoundGraph","successorWeights","predecessorWeights","intersectRect","buildLayerMatrix","$d","rank","normalizeRanks","removeEmptyRanks","nodeRankFactor","addBorderNode","maxRank","partition","lhs","rhs","notime","dummy","Yd","Wd","Jd","dummyChains","labelRank","edgeLabel","edgeObj","labelpos","Kd","Qd","Hd","Xd","Zd","nh","rh","th","eh","oh","ih","uh","ah","fh","ch","sh","dh","hh","ph","vh","yh","mh","bh","cutvalue","lh","gh","low","lim","initLowLimValues","initCutValues","calcCutValue","leaveEdge","enterEdge","exchangeEdges","wh","Eh","jh","xh","Oh","Ch","Ah","Mh","nestingRoot","Lh","cleanup","nestingEdge","borderTop","borderBottom","Ph","Sh","Rh","borderType","zh","Fh","adjust","rankdir","Dh","Uh","Gh","Bh","Vh","$h","Wh","Jh","Kh","Qh","Hh","Xh","Zh","ov","iv","av","fv","cv","sv","dv","borderLeft","borderRight","sum","barycenter","nv","indegree","merged","reverse","rv","tv","hv","minRank","lv","pv","yv","bv","vv","mv","_v","wv","Ev","Nv","Ov","Pv","Sv","Tv","kv","xv","floor","align","Iv","nodesep","edgesep","Cv","Av","Mv","ul","Lv","Rv","zv","Fv","Dv","ranker","Nh","Bv","Uv","lca","Gv","Vv","qv","$v","Yv","Jv","Kv","Hv","Xv","ranksep","Zv","nl","rl","tl","labeloffset","ol","il","al","fl","cl","sl","__esModule","tr","layout","debugTiming","selfEdges","Wv","marginx","marginy","unshift","debugOrdering","util","eds","nds"],"mappings":"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GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGl/B,GAAGm/B,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG37C,GAAG47C,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG3gD,GAAG4gD,GAAGC,GAAGnwE,GAAGowE,GAAGC,GAAGC,GAAGC,GAAGlhD,GAAGmhD,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG,CAAC35E,QAAQ,CAAE,GAAE,SAAS45E,KAAK,OAAOnR,KAAKA,GAAG,EAAE9nE,EAAEg5E,GAAG91E,EAAE81E,GAAG35E,QAAQwE,EAAEw+D,KAAgDxgE,GAAvBye,GAApBxf,EAAEoC,IAAIA,EAAE8D,UAAU9D,IAAOlD,IAAIA,EAAEgH,UAAUhH,IAAOsgB,EAAEjhB,UAAUyB,EAAE+C,EAAEihE,YAAO,EAAOzhE,EAAExB,EAAEA,EAAEq3E,iBAAY,EAAOl5E,EAAEX,QAAQ,SAASW,EAAEkD,GAAG,GAAGA,EAAE,OAAOlD,EAAEmG,QAAQ,IAAItC,EAAE7D,EAAE+B,OAAOjB,EAAEuC,EAAEA,EAAEQ,GAAG,IAAI7D,EAAE0Y,YAAY7U,GAAG,OAAO7D,EAAEgZ,KAAKlY,GAAGA,CAAC,GAAGk4E,GAAG35E,QAAQ,IAAIW,EAAEkD,EAAEW,EAAE/C,EAAEwf,EAAEze,EAAEwB,CAAC,CAAC,SAAS81E,KAAK,OAAGnR,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAAS/nE,EAAEkD,GAAG,IAAIW,GAAG,EAAE/C,EAAEd,EAAE+B,OAAO,IAAImB,IAAIA,EAAEf,MAAMrB,MAAM+C,EAAE/C,GAAGoC,EAAEW,GAAG7D,EAAE6D,GAAG,OAAOX,CAAC,EAAC,CAAC,SAASk2E,KAAK,OAAGlR,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAASjoE,EAAEkD,GAAG,IAAI,IAAIW,GAAG,EAAE/C,EAAE,MAAMd,EAAE,EAAEA,EAAE+B,OAAOue,EAAE,EAAEze,EAAE,KAAKgC,EAAE/C,GAAG,CAAC,IAAIuC,EAAErD,EAAE6D,GAAGX,EAAEG,EAAEQ,EAAE7D,KAAK6B,EAAEye,KAAKjd,EAAE,CAAC,OAAOxB,CAAC,EAAC,CAAC,SAASw3E,KAAK,OAAGjR,GAAUD,IAAUC,GAAG,EAAED,GAAG,WAAW,MAAM,EAAE,EAAC,CAAC,SAASmR,KAAK,GAAGhR,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAItoE,EAAEo5E,KAAKl2E,EAAEm2E,KAAKx1E,EAAEhE,OAAOC,UAAUikE,qBAAqBjjE,EAAEjB,OAAO05E,sBAAsB,OAAOlR,GAAGvnE,EAAE,SAASoC,GAAG,OAAO,MAAMA,EAAE,IAAIA,EAAErD,OAAOqD,GAAGlD,EAAEc,EAAEoC,IAAE,SAAWlD,GAAG,OAAO6D,EAAE7C,KAAKkC,EAAElD,EAAG,IAAG,EAAEkD,CAAC,CAAC,SAASs2E,KAAK,OAAG9Q,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAASzoE,EAAEkD,GAAG,IAAI,IAAIW,GAAG,EAAE/C,EAAEoC,EAAEnB,OAAOue,EAAEtgB,EAAE+B,SAAS8B,EAAE/C,GAAGd,EAAEsgB,EAAEzc,GAAGX,EAAEW,GAAG,OAAO7D,CAAC,EAAC,CAAC,SAASy5E,KAAK,GAAG7Q,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI5oE,EAAEwnE,KAAK3nE,OAAO65E,eAAe75E,QAAQ,OAAO8oE,GAAG3oE,CAAC,CAAC,SAAS25E,KAAK,GAAG7Q,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI9oE,EAAEw5E,KAAKt2E,EAAEu2E,KAAK51E,EAAEy1E,KAAKx4E,EAAEu4E,KAAK/4D,EAAEzgB,OAAO05E,sBAAsB,OAAO1Q,GAAGvoD,EAAE,SAASxf,GAAG,IAAI,IAAIwf,EAAE,GAAGxf,GAAGd,EAAEsgB,EAAEzc,EAAE/C,IAAIA,EAAEoC,EAAEpC,GAAG,OAAOwf,CAAC,EAAExf,CAAC,CAAC,SAAS84E,KAAK,GAAG1Q,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIlpE,EAAEw5E,KAAKt2E,EAAE8gE,KAAK,OAAOiF,GAAG,SAASplE,EAAE/C,EAAEwf,GAAG,IAAIze,EAAEf,EAAE+C,GAAG,OAAOX,EAAEW,GAAGhC,EAAE7B,EAAE6B,EAAEye,EAAEzc,GAAG,CAAC,CAAC,SAASg2E,KAAK,GAAGzQ,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIppE,EAAE45E,KAAK12E,EAAEo2E,KAAKz1E,EAAE8jE,KAAK,OAAOwB,GAAG,SAASroE,GAAG,OAAOd,EAAEc,EAAE+C,EAAEX,EAAE,CAAC,CAAC,SAAS42E,KAAK,GAAGlQ,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI5pE,EAAE6iE,KAAKR,KAAK,OAAO,OAAOsH,GAAG3pE,CAAC,CAAC,SAAS+5E,KAAK,GAAG/P,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIhqE,EAAE,WAAW,GAAGwpE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIxpE,EAAE6iE,KAAKR,KAAK,YAAY,OAAOkH,GAAGvpE,CAAC,CAAvE,GAA2EkD,EAAE8/D,KAAKn/D,EAAE,WAAW,GAAG6lE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI1pE,EAAE6iE,KAAKR,KAAK,WAAW,OAAOoH,GAAGzpE,CAAC,CAAtE,GAA0Ec,EAAEg5E,KAAKx5D,EAAE,WAAW,GAAGwpD,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI9pE,EAAE6iE,KAAKR,KAAK,WAAW,OAAOwH,GAAG7pE,CAAC,CAAtE,GAA0E6B,EAAE2gE,KAAKn/D,EAAEu/D,KAAKliE,EAAE,eAAepB,EAAE,mBAAmBmB,EAAE,eAAegzB,EAAE,mBAAmB5yB,EAAE,oBAAoBE,EAAEsC,EAAErD,GAAG+D,EAAEV,EAAEH,GAAGvD,EAAE0D,EAAEQ,GAAG1D,EAAEkD,EAAEvC,GAAGH,EAAE0C,EAAEid,GAAG7V,EAAE5I,EAAE,OAAO7B,GAAGyK,EAAE,IAAIzK,EAAE,IAAIg6E,YAAY,MAAMn5E,GAAGqC,GAAGuH,EAAE,IAAIvH,IAAIxC,GAAGmD,GAAG4G,EAAE5G,EAAEo8B,YAAY3gC,GAAGwB,GAAG2J,EAAE,IAAI3J,IAAIL,GAAG6f,GAAG7V,EAAE,IAAI6V,IAAImT,KAAKhpB,EAAE,SAASzK,GAAG,IAAIkD,EAAErB,EAAE7B,GAAG6D,EAAE,mBAAmBX,EAAElD,EAAE0Y,iBAAY,EAAO5X,EAAE+C,EAAER,EAAEQ,GAAG,GAAG,GAAG/C,EAAE,OAAOA,GAAG,KAAKC,EAAE,OAAOF,EAAE,KAAKkD,EAAE,OAAOrD,EAAE,KAAKf,EAAE,OAAOL,EAAE,KAAKa,EAAE,OAAOM,EAAE,KAAKE,EAAE,OAAO8yB,EAAE,OAAOvwB,CAAC,GAAG6mE,GAAGt/D,CAAC,CAAC,SAASwvE,KAAK,GAAG7P,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIpqE,EAAEqiE,KAAK6X,WAAW,OAAO/P,GAAGnqE,CAAC,CAAC,SAASm6E,KAAK,GAAG7P,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAItqE,EAAEi6E,KAAK,OAAO5P,GAAG,SAASnnE,GAAG,IAAIW,EAAE,IAAIX,EAAEwV,YAAYxV,EAAEk3E,YAAY,OAAO,IAAIp6E,EAAE6D,GAAG4I,IAAI,IAAIzM,EAAEkD,IAAIW,CAAC,CAAC,CAAC,SAASw2E,KAAK,GAAGxP,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7qE,EAAEm6E,KAAK,OAAOvP,GAAG,SAAS1nE,EAAEW,GAAG,IAAI/C,EAAE+C,EAAE7D,EAAEkD,EAAEo3E,QAAQp3E,EAAEo3E,OAAO,OAAO,IAAIp3E,EAAEwV,YAAY5X,EAAEoC,EAAEq3E,WAAWr3E,EAAEnB,OAAO,CAAC,CAAmnC,SAASy4E,KAAK,GAAGvP,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIjrE,EAAE0iE,KAAKx/D,EAAErD,OAAO0lB,OAAO1hB,EAAE,WAAW,SAASA,KAAK,OAAO,SAAS/C,GAAG,IAAId,EAAEc,GAAG,MAAM,CAAA,EAAG,GAAGoC,EAAE,OAAOA,EAAEpC,GAAG+C,EAAE/D,UAAUgB,EAAE,IAAIwf,EAAE,IAAIzc,EAAE,OAAOA,EAAE/D,eAAU,EAAOwgB,CAAC,CAAC,CAArI,GAAyI,OAAO0qD,GAAGnnE,CAAC,CAAC,SAAS42E,KAAK,GAAGtP,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAInrE,EAAEw6E,KAAKt3E,EAAEu2E,KAAK51E,EAAE0jE,KAAK,OAAO2D,GAAG,SAASpqE,GAAG,MAAM,mBAAmBA,EAAE4X,aAAa7U,EAAE/C,GAAG,GAAGd,EAAEkD,EAAEpC,GAAG,CAAC,CAAmZ,SAAS45E,KAAK,GAAG7O,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7rE,EAAEsjE,KAAKpgE,EAAEqgE,KAAK1/D,EAAE8/D,KAAK7iE,EAAE,WAAW,GAAGulE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIrmE,EAAE4jE,KAAK1gE,EAAEykE,KAAK,OAAOvB,GAAG,SAASviE,EAAE/C,GAAG,OAAO+C,GAAG7D,EAAEc,EAAEoC,EAAEpC,GAAG+C,EAAE,CAAC,CAAhG,GAAoGyc,EAAE,WAAW,GAAGumD,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7mE,EAAE4jE,KAAK1gE,EAAE0kE,KAAK,OAAOhB,GAAG,SAAS/iE,EAAE/C,GAAG,OAAO+C,GAAG7D,EAAEc,EAAEoC,EAAEpC,GAAG+C,EAAE,CAAC,CAAhG,GAAoGhC,EAAEo3E,KAAK51E,EAAE81E,KAAKz4E,EAAE,WAAW,GAAG8nE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIxoE,EAAE4jE,KAAK1gE,EAAEo2E,KAAK,OAAO/Q,GAAG,SAAS1kE,EAAE/C,GAAG,OAAOd,EAAE6D,EAAEX,EAAEW,GAAG/C,EAAE,CAAC,CAA7F,GAAiGxB,EAAE,WAAW,GAAG0pE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIhpE,EAAE4jE,KAAK1gE,EAAEy2E,KAAK,OAAO5Q,GAAG,SAASllE,EAAE/C,GAAG,OAAOd,EAAE6D,EAAEX,EAAEW,GAAG/C,EAAE,CAAC,CAA7F,GAAiGL,EAAEo5E,KAAKpmD,EAAE,WAAW,GAAG61C,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAItpE,EAAE45E,KAAK12E,EAAEy2E,KAAK91E,EAAE+jE,KAAK,OAAOyB,GAAG,SAASvoE,GAAG,OAAOd,EAAEc,EAAE+C,EAAEX,EAAE,CAAC,CAA/F,GAAmGrC,EAAEk5E,KAAKh5E,EAAE,WAAW,GAAGmpE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIlqE,EAAEH,OAAOC,UAAUC,eAAe,OAAOkqE,GAAG,SAAS/mE,GAAG,IAAIW,EAAEX,EAAEnB,OAAOjB,EAAE,IAAIoC,EAAEwV,YAAY7U,GAAG,OAAOA,GAAG,iBAAiBX,EAAE,IAAIlD,EAAEgB,KAAKkC,EAAE,WAAWpC,EAAE00B,MAAMtyB,EAAEsyB,MAAM10B,EAAE2mD,MAAMvkD,EAAEukD,OAAO3mD,CAAC,CAAC,CAA1N,GAA8NiD,EAAnpF,WAAc,GAAGgnE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/qE,EAAEm6E,KAAKj3E,EAAE,WAAW,GAAGsnE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIxqE,EAAEm6E,KAAK,OAAO5P,GAAG,SAASrnE,EAAEW,GAAG,IAAI/C,EAAE+C,EAAE7D,EAAEkD,EAAEo3E,QAAQp3E,EAAEo3E,OAAO,OAAO,IAAIp3E,EAAEwV,YAAY5X,EAAEoC,EAAEq3E,WAAWr3E,EAAEk3E,WAAW,CAAC,CAAtJ,GAA0Jv2E,EAAE,WAAW,GAAG6mE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI1qE,EAAE,OAAO,OAAOyqE,GAAG,SAASvnE,GAAG,IAAIW,EAAE,IAAIX,EAAEwV,YAAYxV,EAAE8I,OAAOhM,EAAE4yB,KAAK1vB,IAAI,OAAOW,EAAE0xB,UAAUryB,EAAEqyB,UAAU1xB,CAAC,CAAC,CAAhJ,GAAoJ/C,EAAE,WAAW,GAAG6pE,GAAG,OAAOv7D,GAAGu7D,GAAG,EAAE,IAAI3qE,EAAEuiE,KAAKr/D,EAAElD,EAAEA,EAAEF,eAAU,EAAO+D,EAAEX,EAAEA,EAAEy3E,aAAQ,EAAO,OAAOvrE,GAAG,SAASpP,GAAG,OAAO6D,EAAEhE,OAAOgE,EAAE7C,KAAKhB,IAAI,CAAA,CAAE,CAAC,CAA3I,GAA+IsgB,EAAE+5D,KAAK,OAAOvP,GAAG,SAASjpE,EAAEwB,EAAE3C,GAAG,IAAIpB,EAAEuC,EAAE6W,YAAY,OAAOrV,GAAG,IAAI,uBAAuB,OAAOrD,EAAE6B,GAAG,IAAI,mBAAmB,IAAI,gBAAgB,OAAO,IAAIvC,GAAGuC,GAAG,IAAI,oBAAoB,OAAOqB,EAAErB,EAAEnB,GAAG,IAAI,wBAAwB,IAAI,wBAAwB,IAAI,qBAAqB,IAAI,sBAAsB,IAAI,sBAAsB,IAAI,sBAAsB,IAAI,6BAA6B,IAAI,uBAAuB,IAAI,uBAAuB,OAAO4f,EAAEze,EAAEnB,GAAG,IAAI,eAAe,IAAI,eAAe,OAAO,IAAIpB,EAAE,IAAI,kBAAkB,IAAI,kBAAkB,OAAO,IAAIA,EAAEuC,GAAG,IAAI,kBAAkB,OAAOgC,EAAEhC,GAAG,IAAI,kBAAkB,OAAOf,EAAEe,GAAG,CAAC,CAAoiD+4E,GAAKj7E,EAAE86E,KAAKt6E,EAAE6jE,KAAKrjE,EAAEkkE,KAAKp6D,EAA7tC,WAAc,GAAG8gE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIvrE,EAAE,WAAW,GAAGqrE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIrrE,EAAE+5E,KAAK72E,EAAE2gE,KAAK,OAAOuH,GAAG,SAASvnE,GAAG,OAAOX,EAAEW,IAAI,gBAAgB7D,EAAE6D,EAAE,CAAC,CAA1G,GAA8GX,EAAEgiE,KAAKrhE,EAAEkjE,KAAKjmE,EAAE+C,GAAGA,EAAEg3E,MAAMv6D,EAAExf,EAAEoC,EAAEpC,GAAGd,EAAE,OAAOsrE,GAAGhrD,CAAC,CAAuhCw6D,GAAKl6E,EAAE8hE,KAAK9iE,EAAliC,WAAc,GAAG+rE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3rE,EAAE,WAAW,GAAGyrE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzrE,EAAE+5E,KAAK72E,EAAE2gE,KAAK,OAAO2H,GAAG,SAAS3nE,GAAG,OAAOX,EAAEW,IAAI,gBAAgB7D,EAAE6D,EAAE,CAAC,CAA1G,GAA8GX,EAAEgiE,KAAKrhE,EAAEkjE,KAAKjmE,EAAE+C,GAAGA,EAAEk3E,MAAMz6D,EAAExf,EAAEoC,EAAEpC,GAAGd,EAAE,OAAO0rE,GAAGprD,CAAC,CAA41B06D,GAAK5iE,EAAEuvD,KAAK1jE,EAAE2jE,KAAK5K,EAAE,qBAAqBz8C,EAAE,oBAAoB/gB,EAAE,kBAAkBgL,EAAE,CAAE,EAAC,OAAOA,EAAEwyD,GAAGxyD,EAAE,kBAAkBA,EAAE,wBAAwBA,EAAE,qBAAqBA,EAAE,oBAAoBA,EAAE,iBAAiBA,EAAE,yBAAyBA,EAAE,yBAAyBA,EAAE,sBAAsBA,EAAE,uBAAuBA,EAAE,uBAAuBA,EAAE,gBAAgBA,EAAE,mBAAmBA,EAAEhL,GAAGgL,EAAE,mBAAmBA,EAAE,gBAAgBA,EAAE,mBAAmBA,EAAE,mBAAmBA,EAAE,uBAAuBA,EAAE,8BAA8BA,EAAE,wBAAwBA,EAAE,yBAAwB,EAAGA,EAAE,kBAAkBA,EAAE+V,GAAG/V,EAAE,qBAAoB,EAAGohE,GAAG,SAAS3O,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAG,IAAIC,EAAEhlC,EAAE,EAAE2kC,EAAErkD,EAAE,EAAEqkD,EAAEM,EAAE,EAAEN,EAAE,GAAGC,IAAII,EAAEF,EAAEF,EAAEF,EAAEG,EAAEC,EAAEC,GAAGH,EAAEF,SAAI,IAASM,EAAE,OAAOA,EAAE,IAAI58D,EAAEs8D,GAAG,OAAOA,EAAE,IAAIhzD,EAAE/J,EAAE+8D,GAAG,GAAGhzD,GAAG,GAAGszD,EAAEz8D,EAAEm8D,IAAI1kC,EAAE,OAAOn1B,EAAE65D,EAAEM,OAAO,CAAC,IAAIE,EAAE78D,EAAEq8D,GAAGS,EAAED,GAAGn9C,GAAG,8BAA8Bm9C,EAAE,GAAG/8D,EAAEu8D,GAAG,OAAOr7D,EAAEq7D,EAAE1kC,GAAG,GAAGklC,GAAGl+D,GAAGk+D,GAAGV,GAAGW,IAAIL,GAAG,GAAGE,EAAE1kD,GAAG6kD,EAAE,CAAA,EAAGh+D,EAAEu9D,IAAI1kC,EAAE,OAAO1f,EAAExZ,EAAE49D,EAAE58C,EAAEk9C,EAAEN,IAAIx8D,EAAEw8D,EAAEp8D,EAAE08D,EAAEN,QAAQ,CAAC,IAAI1yD,EAAEkzD,GAAG,OAAOJ,EAAEJ,EAAE,CAAE,EAACM,EAAEz5D,EAAEm5D,EAAEQ,EAAEllC,EAAE,CAAC,CAAC+kC,IAAIA,EAAE,IAAIv9D,GAAG,IAAI49D,EAAEL,EAAE1zD,IAAIqzD,GAAG,GAAGU,EAAE,OAAOA,EAAEL,EAAE9wD,IAAIywD,EAAEM,GAAG59D,EAAEs9D,GAAGA,EAAEl4D,SAAS,SAAShF,GAAGw9D,EAAEj4D,IAAI03D,EAAEj9D,EAAEm9D,EAAEC,EAAEp9D,EAAEk9D,EAAEK,GAAI,IAAG9yD,EAAEyyD,IAAIA,EAAEl4D,SAAS,SAAShF,EAAEkD,GAAGs6D,EAAE/wD,IAAIvJ,EAAE+5D,EAAEj9D,EAAEm9D,EAAEC,EAAEl6D,EAAEg6D,EAAEK,GAAI,IAAG,IAAIM,EAAE3zD,OAAE,GAAQuzD,EAAE3kD,EAAE2a,EAAEhzB,EAAEqY,EAAE7U,EAAEmU,GAAG8kD,GAAG,OAAOh6D,EAAE26D,GAAGX,GAAG,SAASl9D,EAAEkD,GAAG26D,IAAI79D,EAAEk9D,EAAEh6D,EAAElD,IAAI6D,EAAE25D,EAAEt6D,EAAE+5D,EAAEj9D,EAAEm9D,EAAEC,EAAEl6D,EAAEg6D,EAAEK,GAAI,IAAGC,CAAC,EAAEoO,EAAE,CAAC,SAASqP,KAAK,GAAGlP,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/rE,EAAE06E,KAAK,OAAO5O,GAAG,SAAS5oE,GAAG,OAAOlD,EAAEkD,EAAE,EAAE,CAAC,CAAC,SAASg4E,KAAK,OAAGjP,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAAShsE,GAAG,OAAO,WAAW,OAAOA,CAAC,CAAC,EAAC,CAAC,SAASm7E,KAAK,GAAG9O,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIrsE,GAAGmsE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASlsE,GAAG,OAAO,SAASkD,EAAEW,EAAE/C,GAAG,IAAI,IAAIwf,GAAG,EAAEze,EAAEhC,OAAOqD,GAAGG,EAAEvC,EAAEoC,GAAGxC,EAAE2C,EAAEtB,OAAOrB,KAAK,CAAC,IAAIpB,EAAE+D,EAAErD,EAAEU,IAAI4f,GAAG,IAAG,IAAKzc,EAAEhC,EAAEvC,GAAGA,EAAEuC,GAAG,KAAK,CAAC,OAAOqB,CAAC,CAAC,MAAM,OAAOkpE,GAAGpsE,CAAC,CAAC,SAASo7E,KAAK,GAAG7O,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIvsE,EAAEm7E,KAAKj4E,EAAEykE,KAAK,OAAO2E,GAAG,SAASzoE,EAAE/C,GAAG,OAAO+C,GAAG7D,EAAE6D,EAAE/C,EAAEoC,EAAE,CAAC,CAAC,SAASm4E,KAAK,GAAG1O,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3sE,EAAEo7E,KAAKl4E,EAAE,WAAW,GAAGupE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzsE,EAAE0nE,KAAK,OAAO8E,GAAG,SAAStpE,EAAEW,GAAG,OAAO,SAAS/C,EAAEwf,GAAG,GAAG,MAAMxf,EAAE,OAAOA,EAAE,IAAId,EAAEc,GAAG,OAAOoC,EAAEpC,EAAEwf,GAAG,IAAI,IAAIze,EAAEf,EAAEiB,OAAOsB,EAAEQ,EAAEhC,GAAG,EAAEnB,EAAEb,OAAOiB,IAAI+C,EAAER,MAAMA,EAAExB,KAAI,IAAKye,EAAE5f,EAAE2C,GAAGA,EAAE3C,KAAK,OAAOI,CAAC,CAAC,CAAC,CAAvN,GAA2Nd,GAAG,OAAO0sE,GAAGxpE,CAAC,CAAC,SAASo4E,KAAK,OAAGzO,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAAS5sE,GAAG,OAAOA,CAAC,EAAC,CAAC,SAASu7E,KAAK,GAAGxO,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/sE,EAAEs7E,KAAK,OAAOxO,GAAG,SAAS5pE,GAAG,MAAM,mBAAmBA,EAAEA,EAAElD,CAAC,CAAC,CAAC,SAASw7E,KAAK,GAAGvO,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIjtE,EAAEujE,KAAKrgE,EAAEm4E,KAAKx3E,EAAE03E,KAAKz6E,EAAEkjE,KAAK,OAAOgJ,GAAG,SAAS1sD,EAAEze,GAAG,OAAOf,EAAEwf,GAAGtgB,EAAEkD,GAAGod,EAAEzc,EAAEhC,GAAG,CAAC,CAAC,SAAS45E,KAAK,OAAOtO,GAAGD,IAAIC,GAAG,EAAED,GAAGsO,KAAK,CAAC,SAASE,KAAK,GAAG/N,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3tE,EAAEmjE,KAAKjgE,EAAEqqE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASttE,GAAG,OAAOuY,KAAKmD,SAASjP,IAAIzM,EAAE,6BAA6BuY,IAAI,GAAG1U,EAAE4pE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASxtE,GAAG,OAAOuY,KAAKmD,SAAS/R,IAAI3J,EAAE,GAAG,SAASc,EAAEoC,GAAG,IAAIW,GAAG,EAAE/C,EAAE,MAAMoC,EAAE,EAAEA,EAAEnB,OAAO,IAAIwW,KAAKmD,SAAS,IAAI1b,IAAI6D,EAAE/C,GAAGyX,KAAKhT,IAAIrC,EAAEW,GAAG,CAAC,OAAO/C,EAAEhB,UAAUyF,IAAIzE,EAAEhB,UAAUoC,KAAKgB,EAAEpC,EAAEhB,UAAU6J,IAAI9F,EAAE6pE,GAAG5sE,CAAC,CAAC,SAAS66E,KAAK,OAAG/sC,GAAUk/B,IAAUl/B,GAAG,EAAEk/B,GAAG,SAAS9tE,EAAEkD,GAAG,OAAOlD,EAAE2J,IAAIzG,EAAE,EAAC,CAAC,SAASiI,KAAK,GAAG6iE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIhuE,EAAE07E,KAAKx4E,EAAE2qE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAAS5tE,EAAEkD,GAAG,IAAI,IAAIW,GAAG,EAAE/C,EAAE,MAAMd,EAAE,EAAEA,EAAE+B,SAAS8B,EAAE/C,GAAG,GAAGoC,EAAElD,EAAE6D,GAAGA,EAAE7D,GAAG,OAAM,EAAG,OAAM,CAAE,GAAG6D,EAAE83E,KAAK,OAAO5N,GAAG,SAASjtE,EAAEwf,EAAEze,EAAEwB,EAAE3C,EAAEpB,GAAG,IAAImB,EAAE,EAAEoB,EAAE4xB,EAAE3yB,EAAEiB,OAAOlB,EAAEyf,EAAEve,OAAO,GAAG0xB,GAAG5yB,KAAKJ,GAAGI,EAAE4yB,GAAG,OAAM,EAAG,IAAI1yB,EAAEzB,EAAEuK,IAAI/I,GAAGiD,EAAEzE,EAAEuK,IAAIyW,GAAG,GAAGvf,GAAGgD,EAAE,OAAOhD,GAAGuf,GAAGvc,GAAGjD,EAAE,IAAInB,GAAG,EAAEQ,GAAE,EAAGQ,EAAE,EAAEkB,EAAE,IAAI7B,OAAE,EAAO,IAAIV,EAAEmN,IAAI3L,EAAEwf,GAAGhhB,EAAEmN,IAAI6T,EAAExf,KAAKnB,EAAE8zB,GAAG,CAAC,IAAIhpB,EAAE3J,EAAEnB,GAAGiB,EAAE0f,EAAE3gB,GAAG,GAAG0D,EAAE,IAAIzD,EAAEa,EAAE4C,EAAEzC,EAAE6J,EAAE9K,EAAE2gB,EAAExf,EAAExB,GAAG+D,EAAEoH,EAAE7J,EAAEjB,EAAEmB,EAAEwf,EAAEhhB,GAAG,QAAG,IAASM,EAAE,CAAC,GAAGA,EAAE,SAASO,GAAE,EAAG,KAAK,CAAC,GAAGQ,GAAG,IAAIuC,EAAEod,YAAYtgB,EAAEkD,GAAG,IAAIW,EAAElD,EAAEuC,KAAKuH,IAAIzK,GAAGU,EAAE+J,EAAEzK,EAAE6B,EAAEwB,EAAE/D,IAAI,OAAOqB,EAAEuB,KAAKgB,EAAG,IAAG,CAAC/C,GAAE,EAAG,KAAK,OAAO,GAAGsK,IAAI7J,IAAIF,EAAE+J,EAAE7J,EAAEiB,EAAEwB,EAAE/D,GAAG,CAACa,GAAE,EAAG,KAAK,CAAC,CAAC,OAAOb,EAAEkG,OAAO1E,GAAGxB,EAAEkG,OAAO8a,GAAGngB,CAAC,CAAC,CAAC,SAASy7E,KAAK,OAAGxN,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAASnuE,GAAG,IAAIkD,GAAG,EAAEW,EAAE1B,MAAMnC,EAAEoN,MAAM,OAAOpN,EAAEgF,kBAAkBhF,GAAG6D,IAAIX,GAAGlD,CAAE,IAAG6D,CAAC,EAAC,CAAk6B,SAASg4E,KAAK,GAAGnN,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI1uE,EAAEsjE,KAAKpgE,EAAEiI,KAAKtH,EAAt9B,WAAc,GAAGyqE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAItuE,EAAEuiE,KAAKr/D,EAAE+2E,KAAKp2E,EAAEo+D,KAAKnhE,EAAEqK,KAAKmV,EAAE4tD,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASjuE,GAAG,IAAIkD,GAAG,EAAEW,EAAE1B,MAAMnC,EAAEoN,MAAM,OAAOpN,EAAEgF,SAAS,SAAShF,EAAEc,GAAG+C,IAAIX,GAAG,CAACpC,EAAEd,EAAG,IAAG6D,CAAC,GAAGhC,EAAE+5E,KAAKv4E,EAAErD,EAAEA,EAAEF,eAAU,EAAOY,EAAE2C,EAAEA,EAAEs3E,aAAQ,EAAO,OAAOtM,GAAG,SAASruE,EAAEqD,EAAE/D,EAAEmB,EAAEgzB,EAAE5yB,EAAEE,GAAG,OAAOzB,GAAG,IAAI,oBAAoB,GAAGU,EAAEo6E,YAAY/2E,EAAE+2E,YAAYp6E,EAAEu6E,YAAYl3E,EAAEk3E,WAAW,OAAM,EAAGv6E,EAAEA,EAAEs6E,OAAOj3E,EAAEA,EAAEi3E,OAAO,IAAI,uBAAuB,QAAQt6E,EAAEo6E,YAAY/2E,EAAE+2E,aAAav5E,EAAE,IAAIqC,EAAElD,GAAG,IAAIkD,EAAEG,KAAK,IAAI,mBAAmB,IAAI,gBAAgB,IAAI,kBAAkB,OAAOQ,GAAG7D,GAAGqD,GAAG,IAAI,iBAAiB,OAAOrD,EAAEwY,MAAMnV,EAAEmV,MAAMxY,EAAE87E,SAASz4E,EAAEy4E,QAAQ,IAAI,kBAAkB,IAAI,kBAAkB,OAAO97E,GAAGqD,EAAE,GAAG,IAAI,eAAe,IAAIU,EAAEuc,EAAE,IAAI,eAAe,IAAI3gB,EAAE,EAAEc,EAAE,GAAGsD,IAAIA,EAAElC,GAAG7B,EAAEoN,MAAM/J,EAAE+J,OAAOzN,EAAE,OAAM,EAAG,IAAIQ,EAAEY,EAAE8I,IAAI7J,GAAG,GAAGG,EAAE,OAAOA,GAAGkD,EAAE5C,GAAG,EAAEM,EAAE0L,IAAIzM,EAAEqD,GAAG,IAAI1C,EAAEG,EAAEiD,EAAE/D,GAAG+D,EAAEV,GAAG5C,EAAEgzB,EAAE5yB,EAAEE,GAAG,OAAOA,EAAEyE,OAAOxF,GAAGW,EAAE,IAAI,kBAAkB,GAAGD,EAAE,OAAOA,EAAEM,KAAKhB,IAAIU,EAAEM,KAAKqC,GAAG,OAAM,CAAE,CAAC,CAAwD04E,GAAKj7E,EAAE,WAAW,GAAG0tE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIxuE,EAAE65E,KAAK32E,EAAErD,OAAOC,UAAUC,eAAe,OAAOwuE,GAAG,SAAS1qE,EAAE/C,EAAEwf,EAAEze,EAAEwB,EAAE3C,GAAG,IAAIpB,EAAE,EAAEghB,EAAE7f,EAAET,EAAE6D,GAAG4vB,EAAEhzB,EAAEsB,OAAO,GAAG0xB,GAAGzzB,EAAEc,GAAGiB,SAASzC,EAAE,OAAM,EAAG,IAAI,IAAIuB,EAAE4yB,EAAE5yB,KAAK,CAAC,IAAIE,EAAEN,EAAEI,GAAG,KAAKvB,EAAEyB,KAAKD,EAAEoC,EAAElC,KAAKF,EAAEC,IAAI,OAAM,CAAE,CAAC,IAAIgD,EAAErD,EAAEmJ,IAAIhG,GAAGlE,EAAEe,EAAEmJ,IAAI/I,GAAG,GAAGiD,GAAGpE,EAAE,OAAOoE,GAAGjD,GAAGnB,GAAGkE,EAAE,IAAI1D,GAAE,EAAGO,EAAE+L,IAAI5I,EAAE/C,GAAGJ,EAAE+L,IAAI3L,EAAE+C,GAAG,IAAI,IAAIlD,EAAErB,IAAIuB,EAAE4yB,GAAG,CAAC,IAAIhpB,EAAE5G,EAAE9C,EAAEN,EAAEI,IAAID,EAAEE,EAAEC,GAAG,GAAGc,EAAE,IAAIjC,EAAEN,EAAEuC,EAAEjB,EAAE6J,EAAE1J,EAAED,EAAE+C,EAAEnD,GAAGmB,EAAE4I,EAAE7J,EAAEG,EAAE8C,EAAE/C,EAAEJ,GAAG,UAAK,IAASd,EAAE6K,IAAI7J,GAAGyC,EAAEoH,EAAE7J,EAAE0f,EAAEze,EAAEnB,GAAGd,GAAG,CAACO,GAAE,EAAG,KAAK,CAACQ,IAAIA,EAAE,eAAeI,EAAE,CAAC,GAAGZ,IAAIQ,EAAE,CAAC,IAAIyX,EAAEvU,EAAE6U,YAAYzU,EAAEnD,EAAE4X,YAAYN,GAAGnU,KAAK,gBAAgBJ,MAAM,gBAAgB/C,IAAI,mBAAmBsX,GAAGA,aAAaA,GAAG,mBAAmBnU,GAAGA,aAAaA,IAAI9D,GAAE,EAAG,CAAC,OAAOO,EAAE8E,OAAO3B,GAAGnD,EAAE8E,OAAO1E,GAAGX,CAAC,CAAC,CAAjrB,GAAqrBmgB,EAAEy5D,KAAKl4E,EAAEmiE,KAAK3gE,EAAEwhE,KAAKnkE,EAAEymE,KAAK7nE,EAAE,qBAAqBmB,EAAE,iBAAiBgzB,EAAE,kBAAkB5yB,EAAEhB,OAAOC,UAAUC,eAAe,OAAO0uE,GAAG,SAAS1tE,EAAEgD,EAAEpE,EAAEQ,EAAEQ,EAAE8J,GAAG,IAAI7J,EAAEiB,EAAEd,GAAGnB,EAAEiC,EAAEkC,GAAGqU,EAAExX,EAAEH,EAAE6f,EAAEvf,GAAGkD,EAAErE,EAAEa,EAAE6f,EAAEvc,GAAGi5D,GAAG5kD,EAAEA,GAAG9Y,EAAEm0B,EAAErb,IAAIqb,EAAElT,GAAGtc,EAAEA,GAAG3E,EAAEm0B,EAAExvB,IAAIwvB,EAAEj0B,EAAE4Y,GAAGnU,EAAE,GAAGzE,GAAG6D,EAAEtC,GAAG,CAAC,IAAIsC,EAAEU,GAAG,OAAM,EAAGnD,GAAE,EAAGo8D,GAAE,CAAE,CAAC,GAAGx9D,IAAIw9D,EAAE,OAAOvyD,IAAIA,EAAE,IAAIzK,GAAGY,GAAGF,EAAEK,GAAGmC,EAAEnC,EAAEgD,EAAEpE,EAAEQ,EAAEQ,EAAE8J,GAAG5G,EAAE9C,EAAEgD,EAAEqU,EAAEzY,EAAEQ,EAAEQ,EAAE8J,GAAG,KAAK,EAAE9K,GAAG,CAAC,IAAI6K,EAAEwyD,GAAGn8D,EAAEG,KAAKD,EAAE,eAAek8D,EAAE18C,GAAG1f,EAAEG,KAAK+C,EAAE,eAAe,GAAGyG,GAAGyyD,EAAE,CAAC,IAAIC,EAAE1yD,EAAEzJ,EAAEqC,QAAQrC,EAAEo8D,EAAEF,EAAEl5D,EAAEX,QAAQW,EAAE,OAAO0G,IAAIA,EAAE,IAAIzK,GAAGW,EAAEu8D,EAAEC,EAAEx9D,EAAEQ,EAAEsK,EAAE,CAAC,CAAC,QAAQjL,IAAIiL,IAAIA,EAAE,IAAIzK,GAAGc,EAAEC,EAAEgD,EAAEpE,EAAEQ,EAAEQ,EAAE8J,GAAG,CAAC,CAAC,SAASuxE,KAAK,GAAGpN,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI5uE,EAAE67E,KAAK34E,EAAE2gE,KAAK,OAAO8K,GAAG,SAAS9qE,EAAE/C,EAAEwf,EAAEze,EAAEwB,EAAE3C,GAAG,OAAOI,IAAIwf,IAAI,MAAMxf,GAAG,MAAMwf,IAAIpd,EAAEpC,KAAKoC,EAAEod,GAAGxf,GAAGA,GAAGwf,GAAGA,EAAEtgB,EAAEc,EAAEwf,EAAEze,EAAEwB,EAAEQ,EAAEnD,GAAG,EAAEiuE,EAAE,CAAC,SAASsN,KAAK,GAAGjN,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIhvE,EAAE0iE,KAAK,OAAOqM,GAAG,SAAS7rE,GAAG,OAAOA,GAAGA,IAAIlD,EAAEkD,EAAE,CAAC,CAAC,SAASg5E,KAAK,OAAG9M,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAASnvE,EAAEkD,GAAG,OAAO,SAASW,GAAG,OAAO,MAAMA,GAAIA,EAAE7D,KAAKkD,SAAI,IAASA,GAAGlD,KAAKH,OAAOgE,GAAI,CAAC,EAAC,CAAssB,SAASs4E,KAAK,GAAG3M,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIxvE,EAAEwiE,KAAKt/D,EAAE2gE,KAAK,OAAO0L,GAAG,SAAS1rE,GAAG,MAAM,iBAAiBA,GAAGX,EAAEW,IAAI,mBAAmB7D,EAAE6D,EAAE,CAAC,CAAC,SAASu4E,KAAK,GAAG1M,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI1vE,EAAEgkE,KAAK9gE,EAAEi5E,KAAKt4E,EAAE,mDAAmD/C,EAAE,QAAQ,OAAO2uE,GAAG,SAASnvD,EAAEze,GAAG,GAAG7B,EAAEsgB,GAAG,OAAM,EAAG,IAAIjd,SAASid,EAAE,QAAQ,UAAUjd,GAAG,UAAUA,GAAG,WAAWA,GAAG,MAAMid,IAAIpd,EAAEod,KAAMxf,EAAEuX,KAAKiI,KAAKzc,EAAEwU,KAAKiI,IAAI,MAAMze,GAAGye,KAAKzgB,OAAOgC,EAAG,CAAC,CAA4f,SAASw6E,KAAK,OAAGnM,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAASjwE,EAAEkD,GAAG,IAAI,IAAIW,GAAG,EAAE/C,EAAE,MAAMd,EAAE,EAAEA,EAAE+B,OAAOue,EAAEne,MAAMrB,KAAK+C,EAAE/C,GAAGwf,EAAEzc,GAAGX,EAAElD,EAAE6D,GAAGA,EAAE7D,GAAG,OAAOsgB,CAAC,EAAC,CAAC,SAASg8D,KAAK,GAAGhM,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAItwE,EAAE,WAAW,GAAGowE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIpwE,EAAEuiE,KAAKr/D,EAAEm5E,KAAKx4E,EAAEmgE,KAAKljE,EAAEq7E,KAAK77D,EAAEtgB,EAAEA,EAAEF,eAAU,EAAO+B,EAAEye,EAAEA,EAAE/d,cAAS,EAAO,OAAO4tE,GAAG,SAASnwE,EAAEsgB,GAAG,GAAG,iBAAiBA,EAAE,OAAOA,EAAE,GAAGzc,EAAEyc,GAAG,OAAOpd,EAAEod,EAAEtgB,GAAG,GAAG,GAAGc,EAAEwf,GAAG,OAAOze,EAAEA,EAAEb,KAAKsf,GAAG,GAAG,IAAIjd,EAAEid,EAAE,GAAG,MAAM,KAAKjd,GAAG,EAAEid,IAAG,IAAK,KAAKjd,CAAC,EAAE8sE,EAAE,CAAxQ,GAA4Q,OAAOE,GAAG,SAASntE,GAAG,OAAO,MAAMA,EAAE,GAAGlD,EAAEkD,EAAE,CAAC,CAAC,SAASq5E,KAAK,GAAG/L,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIxwE,EAAEgkE,KAAK9gE,EAAEk5E,KAAKv4E,EAAE,WAAW,GAAGmsE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIhwE,EAAnkC,WAAc,GAAG8vE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI9vE,EAAE,WAAW,GAAG4vE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI5vE,EAAEmjE,KAAK,SAASjgE,EAAEW,EAAE/C,GAAG,GAAG,mBAAmB+C,GAAG,MAAM/C,GAAG,mBAAmBA,EAAE,MAAM,IAAIk7B,UAAU,uBAAuB,IAAI1b,EAAE,WAAW,IAAItgB,EAAE8B,UAAUoB,EAAEpC,EAAEA,EAAEwB,MAAMiW,KAAKvY,GAAGA,EAAE,GAAG6B,EAAEye,EAAEk8D,MAAM,GAAG36E,EAAE8H,IAAIzG,GAAG,OAAOrB,EAAEgI,IAAI3G,GAAG,IAAIG,EAAEQ,EAAEvB,MAAMiW,KAAKvY,GAAG,OAAOsgB,EAAEk8D,MAAM36E,EAAE4K,IAAIvJ,EAAEG,IAAIxB,EAAEwB,CAAC,EAAE,OAAOid,EAAEk8D,MAAM,IAAIt5E,EAAEu5E,OAAOz8E,GAAGsgB,CAAC,CAAC,OAAOpd,EAAEu5E,MAAMz8E,EAAE2vE,GAAGzsE,CAAC,CAAzW,GAA6W,OAAO2sE,GAAG,SAAS3sE,GAAG,IAAIW,EAAE7D,EAAEkD,GAAG,SAASlD,GAAG,OAAO,MAAMc,EAAEsM,MAAMtM,EAAE8E,QAAQ5F,CAAE,IAAGc,EAAE+C,EAAE24E,MAAM,OAAO34E,CAAC,CAAC,CAA2kB64E,GAAKx5E,EAAE,mGAAmGW,EAAE,WAAW/C,EAAEd,GAAG,SAASA,GAAG,IAAIc,EAAE,GAAG,OAAO,KAAKd,EAAE28E,WAAW,IAAI77E,EAAEoB,KAAK,IAAIlC,EAAE4E,QAAQ1B,YAAYlD,EAAEkD,EAAEod,EAAEze,GAAGf,EAAEoB,KAAKoe,EAAEze,EAAE+C,QAAQf,EAAE,MAAMX,GAAGlD,EAAG,IAAGc,CAAE,IAAG,OAAOivE,GAAGjvE,CAAC,CAAlT,GAAsTA,EAAEw7E,KAAK,OAAO/L,GAAG,SAASjwD,EAAEze,GAAG,OAAO7B,EAAEsgB,GAAGA,EAAEpd,EAAEod,EAAEze,GAAG,CAACye,GAAGzc,EAAE/C,EAAEwf,GAAG,CAAC,CAAC,SAASs8D,KAAK,GAAGlM,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI1wE,EAAEm8E,KAAK,OAAO1L,GAAG,SAASvtE,GAAG,GAAG,iBAAiBA,GAAGlD,EAAEkD,GAAG,OAAOA,EAAE,IAAIW,EAAEX,EAAE,GAAG,MAAM,KAAKW,GAAG,EAAEX,IAAG,IAAK,KAAKW,CAAC,CAAC,CAAC,SAASg5E,KAAK,GAAGjM,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI5wE,EAAEu8E,KAAKr5E,EAAE05E,KAAK,OAAOjM,GAAG,SAAS9sE,EAAE/C,GAAG,IAAI,IAAIwf,EAAE,EAAEze,GAAGf,EAAEd,EAAEc,EAAE+C,IAAI9B,OAAO,MAAM8B,GAAGyc,EAAEze,GAAGgC,EAAEA,EAAEX,EAAEpC,EAAEwf,OAAO,OAAOA,GAAGA,GAAGze,EAAEgC,OAAE,CAAM,CAAC,CAAC,SAASi5E,KAAK,GAAGxnD,GAAG,OAAO27C,GAAG37C,GAAG,EAAE,IAAIt1B,EAAEu8E,KAAKr5E,EAAE4gE,KAAKjgE,EAAEmgE,KAAKljE,EAAEkkE,KAAK1kD,EAAE2kD,KAAKpjE,EAAE+6E,KAAK,OAAO3L,GAAG,SAAS5tE,EAAE3C,EAAEpB,GAAG,IAAI,IAAImB,GAAG,EAAEgzB,GAAG/yB,EAAEV,EAAEU,EAAE2C,IAAItB,OAAOlB,GAAE,IAAKJ,EAAEgzB,GAAG,CAAC,IAAI1yB,EAAEc,EAAEnB,EAAED,IAAI,KAAKI,EAAE,MAAMwC,GAAG/D,EAAE+D,EAAEtC,IAAI,MAAMsC,EAAEA,EAAEtC,EAAE,CAAC,OAAOF,KAAKJ,GAAGgzB,EAAE5yB,KAAK4yB,EAAE,MAAMpwB,EAAE,EAAEA,EAAEtB,SAASue,EAAEmT,IAAI3yB,EAAEC,EAAE0yB,KAAK5vB,EAAER,IAAIH,EAAEG,GAAG,CAAC,CAAC,SAAS05E,KAAK,GAAG5L,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAInxE,EAAEgxE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAAS/wE,EAAEkD,GAAG,OAAO,MAAMlD,GAAGkD,KAAKrD,OAAOG,EAAE,GAAGkD,EAAE45E,KAAK,OAAO5L,GAAG,SAASrtE,EAAE/C,GAAG,OAAO,MAAM+C,GAAGX,EAAEW,EAAE/C,EAAEd,EAAE,CAAC,CAAuU,SAASg9E,KAAK,OAAGzL,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAAStxE,GAAG,OAAO,SAASkD,GAAG,OAAO,MAAMA,OAAE,EAAOA,EAAElD,EAAE,CAAC,EAAC,CAAsN,SAASi9E,KAAK,GAAGpL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7xE,EAAr5H,WAAc,GAAGsvE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAItvE,EAAE,WAAW,GAAG8uE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI9uE,EAAEsjE,KAAKpgE,EAAE84E,KAAK,OAAOnN,GAAG,SAAShrE,EAAE/C,EAAEwf,EAAEze,GAAG,IAAIwB,EAAEid,EAAEve,OAAOrB,EAAE2C,EAAE/D,GAAGuC,EAAE,GAAG,MAAMgC,EAAE,OAAOnD,EAAE,IAAImD,EAAEhE,OAAOgE,GAAGR,KAAK,CAAC,IAAI5C,EAAE6f,EAAEjd,GAAG,GAAG/D,GAAGmB,EAAE,GAAGA,EAAE,KAAKoD,EAAEpD,EAAE,MAAMA,EAAE,KAAKoD,GAAG,OAAM,CAAE,CAAC,OAAOR,EAAE3C,GAAG,CAAC,IAAI+yB,GAAGhzB,EAAE6f,EAAEjd,IAAI,GAAGxC,EAAEgD,EAAE4vB,GAAG1yB,EAAEN,EAAE,GAAG,GAAGnB,GAAGmB,EAAE,IAAI,QAAG,IAASI,KAAK4yB,KAAK5vB,GAAG,OAAM,MAAO,CAAC,IAAIE,EAAE,IAAI/D,EAAE,GAAG6B,EAAE,IAAIlC,EAAEkC,EAAEhB,EAAEE,EAAE0yB,EAAE5vB,EAAE/C,EAAEiD,GAAG,UAAK,IAASpE,EAAEuD,EAAEnC,EAAEF,EAAE,EAAEgB,EAAEkC,GAAGpE,GAAG,OAAM,CAAE,CAAC,CAAC,OAAM,CAAE,CAAC,CAAnY,GAAuYuD,EAAE,WAAW,GAAGgsE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIlvE,EAAEi8E,KAAK/4E,EAAEykE,KAAK,OAAOsH,GAAG,SAASprE,GAAG,IAAI,IAAI/C,EAAEoC,EAAEW,GAAGyc,EAAExf,EAAEiB,OAAOue,KAAK,CAAC,IAAIze,EAAEf,EAAEwf,GAAGjd,EAAEQ,EAAEhC,GAAGf,EAAEwf,GAAG,CAACze,EAAEwB,EAAErD,EAAEqD,GAAG,CAAC,OAAOvC,CAAC,CAAC,CAAnJ,GAAuJ+C,EAAEq4E,KAAK,OAAO7M,GAAG,SAASvuE,GAAG,IAAIwf,EAAEpd,EAAEpC,GAAG,OAAO,GAAGwf,EAAEve,QAAQue,EAAE,GAAG,GAAGzc,EAAEyc,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAI,SAASpd,GAAG,OAAOA,IAAIpC,GAAGd,EAAEkD,EAAEpC,EAAEwf,EAAE,CAAC,CAAC,CAAmtG48D,GAAKh6E,EAAlrB,WAAc,GAAGmuE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIrxE,EAAEg8E,KAAK94E,EAAE,WAAW,GAAG4tE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI9wE,EAAE68E,KAAK,OAAOhM,GAAG,SAAS3tE,EAAEW,EAAE/C,GAAG,IAAIwf,EAAE,MAAMpd,OAAE,EAAOlD,EAAEkD,EAAEW,GAAG,YAAO,IAASyc,EAAExf,EAAEwf,CAAC,CAAC,CAAvH,GAA2Hzc,EAAEk5E,KAAKj8E,EAAEs7E,KAAK97D,EAAE27D,KAAKp6E,EAAEq6E,KAAK74E,EAAEu5E,KAAK,OAAOxL,GAAG,SAAS1wE,EAAEpB,GAAG,OAAOwB,EAAEJ,IAAI4f,EAAEhhB,GAAGuC,EAAEwB,EAAE3C,GAAGpB,GAAG,SAASwB,GAAG,IAAIwf,EAAEpd,EAAEpC,EAAEJ,GAAG,YAAO,IAAS4f,GAAGA,IAAIhhB,EAAEuE,EAAE/C,EAAEJ,GAAGV,EAAEV,EAAEghB,EAAE,EAAE,CAAC,CAAC,CAA+W68D,GAAKt5E,EAAEy3E,KAAKx6E,EAAEkjE,KAAK1jD,EAAxR,WAAc,GAAGqxD,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3xE,EAAEg9E,KAAK95E,EAAE,WAAW,GAAGuuE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzxE,EAAE68E,KAAK,OAAOrL,GAAG,SAAStuE,GAAG,OAAO,SAASW,GAAG,OAAO7D,EAAE6D,EAAEX,EAAE,CAAC,CAAC,CAAnG,GAAuGW,EAAEu4E,KAAKt7E,EAAE87E,KAAK,OAAOlL,GAAG,SAASpxD,GAAG,OAAOzc,EAAEyc,GAAGtgB,EAAEc,EAAEwf,IAAIpd,EAAEod,EAAE,CAAC,CAAsE88D,GAAK,OAAOxL,GAAG,SAAS/vE,GAAG,MAAM,mBAAmBA,EAAEA,EAAE,MAAMA,EAAEgC,EAAE,iBAAiBhC,EAAEf,EAAEe,GAAGqB,EAAErB,EAAE,GAAGA,EAAE,IAAI7B,EAAE6B,GAAGye,EAAEze,EAAE,CAAC,CAAC,SAASw7E,KAAK,GAAGtL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/xE,EAAEo5E,KAAKl2E,EAAE,WAAW,GAAGmqE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIrtE,EAAEq7E,KAAK,OAAOjO,GAAG,SAASlqE,EAAEW,GAAG,IAAI/C,EAAE,GAAG,OAAOd,EAAEkD,GAAC,SAAWlD,EAAEkD,EAAEod,GAAGzc,EAAE7D,EAAEkD,EAAEod,IAAIxf,EAAEoB,KAAKlC,EAAG,IAAGc,CAAC,CAAC,CAAjI,GAAqI+C,EAAEo5E,KAAKn8E,EAAEkjE,KAAK,OAAO8N,GAAG,SAASxxD,EAAEze,GAAG,OAAOf,EAAEwf,GAAGtgB,EAAEkD,GAAGod,EAAEzc,EAAEhC,EAAE,GAAG,CAAC,CAAC,SAASy7E,KAAK,GAAGnL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAInyE,EAAE,WAAW,GAAGiyE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIjyE,EAAEH,OAAOC,UAAUC,eAAe,OAAOiyE,GAAG,SAAS9uE,EAAEW,GAAG,OAAO,MAAMX,GAAGlD,EAAEgB,KAAKkC,EAAEW,EAAE,CAAC,CAA1H,GAA8HX,EAAE45E,KAAK,OAAO5K,GAAG,SAASruE,EAAE/C,GAAG,OAAO,MAAM+C,GAAGX,EAAEW,EAAE/C,EAAEd,EAAE,CAAC,CAAC,SAASu9E,KAAK,GAAGlL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIryE,EAAEynE,KAAKvkE,EAAE62E,KAAKl2E,EAAEigE,KAAKhjE,EAAEkjE,KAAK1jD,EAAEonD,KAAK7lE,EAAEgjE,KAAKxhE,EAAEkkE,KAAK7mE,EAAEymE,KAAK7nE,EAAEO,OAAOC,UAAUC,eAAe,OAAOqyE,GAAG,SAAS3xE,GAAG,GAAG,MAAMA,EAAE,OAAM,EAAG,GAAG6f,EAAE7f,KAAKK,EAAEL,IAAI,iBAAiBA,GAAG,mBAAmBA,EAAE2gB,QAAQvf,EAAEpB,IAAIC,EAAED,IAAIoD,EAAEpD,IAAI,OAAOA,EAAEsB,OAAO,IAAI0xB,EAAEvwB,EAAEzC,GAAG,GAAG,gBAAgBgzB,GAAG,gBAAgBA,EAAE,OAAOhzB,EAAE2M,KAAK,GAAG/J,EAAE5C,GAAG,OAAOT,EAAES,GAAGsB,OAAO,IAAI,IAAIlB,KAAKJ,EAAE,GAAGnB,EAAE0B,KAAKP,EAAEI,GAAG,OAAM,EAAG,OAAM,CAAE,CAAC,CAAC,SAAS28E,KAAK,OAAGjL,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAAStyE,GAAG,YAAO,IAASA,CAAC,EAAC,CAAC,SAASy9E,KAAK,GAAGhL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzyE,EAAEq7E,KAAKn4E,EAAEwkE,KAAK,OAAO8K,GAAG,SAAS3uE,EAAE/C,GAAG,IAAIwf,GAAG,EAAEze,EAAEqB,EAAEW,GAAG1B,MAAM0B,EAAE9B,QAAQ,GAAG,OAAO/B,EAAE6D,GAAC,SAAW7D,EAAEkD,EAAEW,GAAGhC,IAAIye,GAAGxf,EAAEd,EAAEkD,EAAEW,EAAG,IAAGhC,CAAC,CAAC,CAAC,SAAS67E,KAAK,GAAG/K,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3yE,EAAEq8E,KAAKn5E,EAAE+5E,KAAKp5E,EAAE45E,KAAK38E,EAAEkjE,KAAK,OAAO0O,GAAG,SAASpyD,EAAEze,GAAG,OAAOf,EAAEwf,GAAGtgB,EAAE6D,GAAGyc,EAAEpd,EAAErB,EAAE,GAAG,CAAC,CAAC,SAAS87E,KAAK,GAAG1K,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIjzE,EAAE6yE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAAS5yE,EAAEkD,EAAEW,EAAE/C,GAAG,IAAIwf,GAAG,EAAEze,EAAE,MAAM7B,EAAE,EAAEA,EAAE+B,OAAO,IAAIjB,GAAGe,IAAIgC,EAAE7D,IAAIsgB,MAAMA,EAAEze,GAAGgC,EAAEX,EAAEW,EAAE7D,EAAEsgB,GAAGA,EAAEtgB,GAAG,OAAO6D,CAAC,GAAGX,EAAEm4E,KAAKx3E,EAAEo5E,KAAKn8E,EAAEiyE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAAS9yE,EAAEkD,EAAEW,EAAE/C,EAAEwf,GAAG,OAAOA,EAAEtgB,YAAYA,EAAEsgB,EAAEze,GAAGgC,EAAE/C,GAAGA,GAAE,EAAGd,GAAGkD,EAAEW,EAAE7D,EAAEsgB,EAAEze,EAAG,IAAGgC,CAAC,GAAGyc,EAAE0jD,KAAK,OAAOgP,GAAG,SAASnxE,EAAEwB,EAAE3C,GAAG,IAAIpB,EAAEghB,EAAEze,GAAG7B,EAAEc,EAAEL,EAAEqB,UAAUC,OAAO,EAAE,OAAOzC,EAAEuC,EAAEgC,EAAER,EAAE,GAAG3C,EAAED,EAAEyC,EAAE,EAAE8vE,EAAE,CAA8yB,SAAS4K,KAAK,GAAG/J,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7zE,EAAEynE,KAAKvkE,EAAE62E,KAAKl2E,EAAE6jE,KAAK5mE,EAAE,WAAW,GAAGqyE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAInzE,EAAEwiE,KAAKt/D,EAAE8gE,KAAKngE,EAAEggE,KAAK,OAAOqP,GAAG,SAASpyE,GAAG,MAAM,iBAAiBA,IAAIoC,EAAEpC,IAAI+C,EAAE/C,IAAI,mBAAmBd,EAAEc,EAAE,CAAC,CAA9I,GAAkJwf,EAA7/B,WAAc,GAAGqzD,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3zE,EAAE,WAAW,GAAGqzE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIrzE,EAAEg9E,KAAK,UAAU,OAAO5J,GAAGpzE,CAAC,CAAhE,GAAoEkD,EAAE,WAAW,GAAGqwE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIvzE,EAAEyoB,OAAO,uFAAuF,OAAO6qD,GAAG,SAASpwE,GAAG,OAAOlD,EAAEqY,KAAKnV,EAAE,CAAC,CAA3K,GAA+KW,EAAE,WAAW,GAAG4vE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzzE,EAAE,kBAAkBkD,EAAE,IAAIlD,EAAE,IAAI6D,EAAE,kDAAkD/C,EAAE,2BAA2Bwf,EAAE,KAAKtgB,EAAE,IAAI6B,EAAE,kCAAkCwB,EAAE,qCAAqC3C,EAAE,MAAMmD,EAAE,IAAI/C,EAAE,KAAKxB,EAAE,oBAAoBmB,EAAEnB,EAAEoB,EAAE,gBAAgB,CAAC4f,EAAEze,EAAEwB,GAAGb,KAAK,KAAK,IAAIlD,EAAEoB,EAAE,KAAK+yB,EAAE,MAAM,CAACnT,EAAEzc,EAAE,IAAIA,EAAEhC,EAAEwB,EAAEH,GAAGV,KAAK,KAAK,IAAI3B,EAAE4nB,OAAO3nB,EAAE,MAAMA,EAAE,KAAK2yB,EAAEhzB,EAAE,KAAK,OAAO+yE,GAAG,SAASxzE,GAAG,IAAI,IAAIkD,EAAErC,EAAE00B,UAAU,EAAE10B,EAAEwX,KAAKrY,MAAMkD,EAAE,OAAOA,CAAC,CAAC,CAA5d,GAAge,OAAOwwE,GAAG,SAAS5yE,GAAG,OAAOoC,EAAEpC,GAAG+C,EAAE/C,GAAGd,EAAEc,EAAE,CAAC,CAAmN+8E,GAAK,OAAOjK,GAAG,SAAS/xE,GAAG,GAAG,MAAMA,EAAE,OAAO,EAAE,GAAGgC,EAAEhC,GAAG,OAAOf,EAAEe,GAAGye,EAAEze,GAAGA,EAAEE,OAAO,IAAIsB,EAAEH,EAAErB,GAAG,MAAM,gBAAgBwB,GAAG,gBAAgBA,EAAExB,EAAEuL,KAAKpN,EAAE6B,GAAGE,MAAM,CAAC,CAAC,SAAS+7E,KAAK,GAAG/J,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/zE,EAAEujE,KAAKrgE,EAAEs3E,KAAK32E,EAAEu3E,KAAKt6E,EAAEm8E,KAAK38D,EAAEm5D,KAAK53E,EAAEmiE,KAAK3gE,EAAEwhE,KAAKnkE,EAAEiiE,KAAKrjE,EAAEojE,KAAKjiE,EAAE0mE,KAAK,OAAO2M,GAAG,SAASrgD,EAAE5yB,EAAEE,GAAG,IAAIgD,EAAElC,EAAE4xB,GAAG9zB,EAAEoE,GAAGV,EAAEowB,IAAIhzB,EAAEgzB,GAAG,GAAG5yB,EAAEC,EAAED,EAAE,GAAG,MAAME,EAAE,CAAC,IAAIZ,EAAEszB,GAAGA,EAAE/a,YAAY3X,EAAEpB,EAAEoE,EAAE,IAAI5D,EAAE,GAAGb,EAAEm0B,IAAI/yB,EAAEP,GAAG+C,EAAEod,EAAEmT,IAAI,CAAE,CAAA,CAAC,OAAO9zB,EAAEK,EAAE6D,GAAG4vB,GAAC,SAAWzzB,EAAEkD,EAAEW,GAAG,OAAOhD,EAAEE,EAAEf,EAAEkD,EAAEW,EAAG,IAAG9C,CAAC,CAAC,CAAC,SAASg9E,KAAK,GAAG5J,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIn0E,EAAEw5E,KAAKt2E,EAAE,WAAW,GAAG+wE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIj0E,EAAEuiE,KAAKr/D,EAAE4gE,KAAKjgE,EAAEmgE,KAAKljE,EAAEd,EAAEA,EAAEg+E,wBAAmB,EAAO,OAAOhK,GAAG,SAASh0E,GAAG,OAAO6D,EAAE7D,IAAIkD,EAAElD,OAAOc,GAAGd,GAAGA,EAAEc,GAAG,CAAC,CAAjJ,GAAqJ,OAAOozE,GAAG,SAASrwE,EAAE/C,EAAEwf,EAAEze,EAAEwB,EAAE3C,GAAG,IAAIpB,GAAG,EAAEmB,EAAEK,EAAEiB,OAAO,IAAIF,IAAIA,EAAEqB,GAAGxC,IAAIA,EAAE,MAAMpB,EAAEmB,GAAG,CAAC,IAAIgzB,EAAE3yB,EAAExB,GAAGghB,EAAE,GAAGze,EAAE4xB,GAAGnT,EAAE,EAAEzc,EAAE4vB,EAAEnT,EAAE,EAAEze,EAAEwB,EAAE3C,GAAGV,EAAEU,EAAE+yB,GAAGpwB,IAAI3C,EAAEA,EAAEqB,QAAQ0xB,EAAE,CAAC,OAAO/yB,CAAC,EAAEwzE,EAAE,CAAC,SAAS+J,KAAK,GAAG1J,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIv0E,EAAEq0E,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASp0E,EAAEkD,EAAEW,GAAG,OAAOA,EAAE9B,QAAQ,KAAK,EAAE,OAAO/B,EAAEgB,KAAKkC,GAAG,KAAK,EAAE,OAAOlD,EAAEgB,KAAKkC,EAAEW,EAAE,IAAI,KAAK,EAAE,OAAO7D,EAAEgB,KAAKkC,EAAEW,EAAE,GAAGA,EAAE,IAAI,KAAK,EAAE,OAAO7D,EAAEgB,KAAKkC,EAAEW,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,OAAO7D,EAAEsC,MAAMY,EAAEW,EAAE,GAAGX,EAAEkL,KAAKO,IAAI,OAAO2lE,GAAG,SAASzwE,EAAE/C,EAAEwf,GAAG,OAAOxf,EAAEoC,OAAE,IAASpC,EAAE+C,EAAE9B,OAAO,EAAEjB,EAAE,GAAG,WAAW,IAAI,IAAIe,EAAEC,UAAUuB,GAAG,EAAE3C,EAAEwC,EAAErB,EAAEE,OAAOjB,EAAE,GAAGxB,EAAE6C,MAAMzB,KAAK2C,EAAE3C,GAAGpB,EAAE+D,GAAGxB,EAAEf,EAAEuC,GAAGA,GAAG,EAAE,IAAI,IAAI5C,EAAE0B,MAAMrB,EAAE,KAAKuC,EAAEvC,GAAGL,EAAE4C,GAAGxB,EAAEwB,GAAG,OAAO5C,EAAEK,GAAGwf,EAAEhhB,GAAGU,EAAE6D,EAAE0U,KAAK9X,EAAE,CAAC,EAAE6zE,EAAE,CAAC,SAAS4J,KAAK,GAAGrJ,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI70E,EAAE,WAAW,GAAGy0E,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIz0E,EAAEk7E,KAAKh4E,EAAEsgE,KAAK3/D,EAAEy3E,KAAK,OAAO9G,GAAGtxE,EAAE,SAASW,EAAE/C,GAAG,OAAOoC,EAAEW,EAAE,WAAW,CAACyjB,cAAa,EAAGD,YAAW,EAAGjkB,MAAMpD,EAAEc,GAAG4iE,UAAS,GAAI,EAAE7/D,CAAC,CAAnK,GAAuKX,EAAE,WAAW,GAAGyxE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI30E,EAAEu6B,KAAKD,IAAI,OAAOo6C,GAAG,SAASxxE,GAAG,IAAIW,EAAE,EAAE/C,EAAE,EAAE,OAAO,WAAW,IAAIwf,EAAEtgB,IAAI6B,EAAE,IAAIye,EAAExf,GAAG,GAAGA,EAAEwf,EAAEze,EAAE,GAAG,KAAKgC,GAAG,IAAI,OAAO/B,UAAU,QAAQ+B,EAAE,EAAE,OAAOX,EAAEZ,WAAM,EAAOR,UAAU,CAAC,EAAE4yE,EAAE,CAAlN,GAAsN7wE,EAAEX,EAAElD,GAAG,OAAO40E,GAAG/wE,CAAC,CAAC,SAASs6E,KAAK,GAAGpJ,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/0E,EAAEs7E,KAAKp4E,EAAE+6E,KAAKp6E,EAAEq6E,KAAK,OAAOpJ,GAAG,SAASh0E,EAAEwf,GAAG,OAAOzc,EAAEX,EAAEpC,EAAEwf,EAAEtgB,GAAGc,EAAE,GAAG,CAAC,CAAC,SAASs9E,KAAK,OAAGnJ,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAASh1E,EAAEkD,EAAEW,EAAE/C,GAAG,IAAI,IAAIwf,EAAEtgB,EAAE+B,OAAOF,EAAEgC,GAAG/C,EAAE,GAAG,GAAGA,EAAEe,MAAMA,EAAEye,GAAG,GAAGpd,EAAElD,EAAE6B,GAAGA,EAAE7B,GAAG,OAAO6B,EAAE,OAAO,CAAC,EAAC,CAAkZ,SAASw8E,KAAK,GAAGpI,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIj2E,EAAE07E,KAAKx4E,EAAE,WAAW,GAAGuyE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIz1E,EAAre,WAAc,GAAGu1E,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIv1E,EAAEo+E,KAAKl7E,EAAEiyE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASl1E,GAAG,OAAOA,GAAGA,CAAC,GAAG6D,EAAEwxE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASp1E,EAAEkD,EAAEW,GAAG,IAAI,IAAI/C,EAAE+C,EAAE,EAAEyc,EAAEtgB,EAAE+B,SAASjB,EAAEwf,GAAG,GAAGtgB,EAAEc,KAAKoC,EAAE,OAAOpC,EAAE,OAAO,CAAC,GAAG,OAAOw0E,GAAG,SAASx0E,EAAEwf,EAAEze,GAAG,OAAOye,GAAGA,EAAEzc,EAAE/C,EAAEwf,EAAEze,GAAG7B,EAAEc,EAAEoC,EAAErB,EAAE,CAAC,CAAqPy8E,GAAK,OAAO9I,GAAG,SAAStyE,EAAEW,GAAG,QAAQ,MAAMX,IAAIA,EAAEnB,SAAS/B,EAAEkD,EAAEW,EAAE,IAAI,CAAC,CAAC,CAA5G,GAAgHA,EAAE8xE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAAS11E,EAAEkD,EAAEW,GAAG,IAAI,IAAI/C,GAAG,EAAEwf,EAAE,MAAMtgB,EAAE,EAAEA,EAAE+B,SAASjB,EAAEwf,GAAG,GAAGzc,EAAEX,EAAElD,EAAEc,IAAI,OAAM,EAAG,OAAM,CAAE,GAAGA,EAAE66E,KAAKr7D,EAAhb,WAAc,GAAGy1D,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/1E,EAAE85E,KAAK52E,EAAE2yE,GAAGD,IAAIC,GAAG,EAAED,GAAG,WAAU,GAAI/xE,EAAE+3E,KAAK96E,EAAEd,GAAG,EAAE6D,EAAE,IAAI7D,EAAE,CAAE,EAAC,KAAK,IAAI,IAAI,SAASkD,GAAG,OAAO,IAAIlD,EAAEkD,EAAE,EAAEA,EAAE,OAAO4yE,GAAGh1E,CAAC,CAAqRy9E,GAAK18E,EAAE+5E,KAAK,OAAO5F,GAAG,SAAS3yE,EAAE3C,EAAEpB,GAAG,IAAImB,GAAG,EAAEgzB,EAAEvwB,EAAErC,EAAEwC,EAAEtB,OAAOhB,GAAE,EAAGgD,EAAE,GAAGpE,EAAEoE,EAAE,GAAGzE,EAAEyB,GAAE,EAAG0yB,EAAE5vB,OAAO,GAAGhD,GAAG,IAAI,CAAC,IAAIV,EAAEO,EAAE,KAAK4f,EAAEjd,GAAG,GAAGlD,EAAE,OAAO0B,EAAE1B,GAAGY,GAAE,EAAG0yB,EAAE3yB,EAAEnB,EAAE,IAAIK,CAAC,MAAML,EAAEe,EAAE,GAAGqD,EAAE/D,EAAE,OAAOS,EAAEI,GAAG,CAAC,IAAIF,EAAE0C,EAAE5C,GAAGgK,EAAE/J,EAAEA,EAAEC,GAAGA,EAAE,GAAGA,EAAErB,GAAG,IAAIqB,EAAEA,EAAE,EAAEI,GAAG0J,GAAGA,EAAE,CAAC,IAAI,IAAI7J,EAAEjB,EAAEoC,OAAOnB,KAAK,GAAGjB,EAAEiB,KAAK6J,EAAE,SAASzK,EAAEU,GAAGf,EAAEuC,KAAKuI,GAAG1G,EAAE7B,KAAKvB,EAAE,MAAM8yB,EAAE9zB,EAAE8K,EAAEnL,KAAKK,IAAIoE,GAAGpE,EAAEuC,KAAKuI,GAAG1G,EAAE7B,KAAKvB,GAAG,CAAC,OAAOoD,CAAC,CAAC,CAAC,SAASy6E,KAAK,GAAGrI,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIn2E,EAAE0nE,KAAKxkE,EAAE2gE,KAAK,OAAOqS,GAAG,SAASryE,GAAG,OAAOX,EAAEW,IAAI7D,EAAE6D,EAAE,CAAC,CAAC,SAAS46E,KAAK,GAAGpI,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIr2E,EAAE+9E,KAAK76E,EAAEi7E,KAAKt6E,EAAEw6E,KAAKv9E,EAAE09E,KAAKl+D,EAAEpd,GAAG,SAASA,GAAG,OAAOW,EAAE7D,EAAEkD,EAAE,EAAEpC,GAAE,GAAK,IAAG,OAAOs1E,GAAG91D,CAAC,CAAC,SAASo+D,KAAK,GAAGjI,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIz2E,EAAE,WAAW,GAAGu2E,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIv2E,EAAEq8E,KAAK,OAAO/F,GAAG,SAASpzE,EAAEW,GAAG,OAAO7D,EAAE6D,GAAC,SAAW7D,GAAG,OAAOkD,EAAElD,EAAG,GAAE,CAAC,CAA1G,GAA8GkD,EAAEykE,KAAK,OAAO6O,GAAG,SAAS3yE,GAAG,OAAO,MAAMA,EAAE,GAAG7D,EAAE6D,EAAEX,EAAEW,GAAG,CAAC,CAAC,SAASyvC,KAAK,GAAGqjC,GAAG,OAAOD,GAAG,IAAI12E,EAAE22E,GAAG,EAAE,IAAI32E,EAAE,CAACigB,MAAMg7D,KAAK73D,SAAS83D,KAAKl2D,KAAKy2D,KAAK7lE,OAAOynE,KAAK1zE,IAAI2zE,KAAKl7E,QAAQ4hE,KAAK2a,QAAQpB,KAAKqB,WAAWjc,KAAKkc,YAAYrB,KAAK7nE,KAAKgyD,KAAK3yD,IAAI0oE,KAAK1nE,OAAO2nE,KAAKvwE,KAAKwwE,KAAK/qE,UAAUirE,KAAKgB,MAAML,KAAKM,OAAOL,KAAK,CAAC,MAAM1+E,GAAI,CAAA,OAAOA,IAAIA,EAAE2C,OAAOyV,GAAGs+D,GAAG12E,CAAC,CAAC,SAASg/E,KAAK,GAAGnI,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI72E,EAAEszC,KAAKsjC,GAAGt2D,EAAE,IAAIpd,EAAE,KAAKW,EAAE,KAAK/C,EAAE,IAAI,SAASwf,EAAEpd,GAAGqV,KAAK0mE,aAAaj/E,EAAE2J,IAAIzG,EAAE,aAAaA,EAAEg8E,SAAS3mE,KAAK4mE,gBAAgBn/E,EAAE2J,IAAIzG,EAAE,eAAeA,EAAEk8E,WAAW7mE,KAAK8mE,cAAcr/E,EAAE2J,IAAIzG,EAAE,aAAaA,EAAEo8E,SAAS/mE,KAAKgnE,YAAO,EAAOhnE,KAAKinE,oBAAoBx/E,EAAEojB,cAAS,GAAQ7K,KAAKknE,oBAAoBz/E,EAAEojB,cAAS,GAAQ7K,KAAKmnE,OAAO,GAAGnnE,KAAK8mE,cAAc9mE,KAAKkD,QAAQ,GAAGlD,KAAKonE,UAAU,CAAE,EAACpnE,KAAKonE,UAAU97E,GAAG,IAAI0U,KAAKqnE,IAAI,CAAA,EAAGrnE,KAAKsnE,OAAO,CAAE,EAACtnE,KAAKunE,KAAK,CAAA,EAAGvnE,KAAKwnE,MAAM,GAAGxnE,KAAKynE,UAAU,CAAE,EAACznE,KAAK0nE,YAAY,CAAA,CAAE,CAAC,SAASp+E,EAAE7B,EAAEkD,GAAGlD,EAAEkD,GAAGlD,EAAEkD,KAAKlD,EAAEkD,GAAG,CAAC,CAAC,SAASG,EAAErD,EAAEkD,KAAKlD,EAAEkD,WAAWlD,EAAEkD,EAAE,CAAC,SAASxC,EAAEmD,EAAEyc,EAAEze,EAAEwB,GAAG,IAAI3C,EAAE,GAAG4f,EAAEhhB,EAAE,GAAGuC,EAAE,IAAIgC,GAAGnD,EAAEpB,EAAE,CAAC,IAAImB,EAAEC,EAAEA,EAAEpB,EAAEA,EAAEmB,CAAC,CAAC,OAAOC,EAAEI,EAAExB,EAAEwB,GAAGd,EAAE6+E,YAAYx7E,GAAGH,EAAEG,EAAE,CAAC,SAAS/D,EAAEU,EAAEkD,GAAG,OAAOxC,EAAEV,EAAEkD,EAAEa,EAAEb,EAAEe,EAAEf,EAAEsV,KAAK,CAAC,OAAO8H,EAAExgB,UAAUogF,WAAW,EAAE5/D,EAAExgB,UAAUqgF,WAAW,EAAE7/D,EAAExgB,UAAUsgF,WAAW,WAAW,OAAO7nE,KAAK0mE,WAAW,EAAE3+D,EAAExgB,UAAUugF,aAAa,WAAW,OAAO9nE,KAAK4mE,aAAa,EAAE7+D,EAAExgB,UAAUwgF,WAAW,WAAW,OAAO/nE,KAAK8mE,WAAW,EAAE/+D,EAAExgB,UAAUygF,SAAS,SAASvgF,GAAG,OAAOuY,KAAKgnE,OAAOv/E,EAAEuY,IAAI,EAAE+H,EAAExgB,UAAU0gF,MAAM,WAAW,OAAOjoE,KAAKgnE,MAAM,EAAEj/D,EAAExgB,UAAU2gF,oBAAoB,SAASv9E,GAAG,OAAOlD,EAAE4+E,WAAW17E,KAAKA,EAAElD,EAAEojB,SAASlgB,IAAIqV,KAAKinE,oBAAoBt8E,EAAEqV,IAAI,EAAE+H,EAAExgB,UAAU4gF,UAAU,WAAW,OAAOnoE,KAAK2nE,UAAU,EAAE5/D,EAAExgB,UAAU6M,MAAM,WAAW,OAAO3M,EAAE2V,KAAK4C,KAAKmnE,OAAO,EAAEp/D,EAAExgB,UAAU6gF,QAAQ,WAAW,IAAIz9E,EAAEqV,KAAK,OAAOvY,EAAE4V,OAAO2C,KAAK5L,SAAS,SAAS9I,GAAG,OAAO7D,EAAE2+E,QAAQz7E,EAAE08E,IAAI/7E,GAAI,GAAE,EAAEyc,EAAExgB,UAAU8gF,MAAM,WAAW,IAAI19E,EAAEqV,KAAK,OAAOvY,EAAE4V,OAAO2C,KAAK5L,SAAS,SAAS9I,GAAG,OAAO7D,EAAE2+E,QAAQz7E,EAAE48E,KAAKj8E,GAAI,GAAE,EAAEyc,EAAExgB,UAAUm3C,SAAS,SAAS/zC,EAAEW,GAAG,IAAI/C,EAAEgB,UAAUwe,EAAE/H,KAAK,OAAOvY,EAAEglB,KAAK9hB,GAAC,SAAWlD,GAAGc,EAAEiB,OAAO,EAAEue,EAAEugE,QAAQ7gF,EAAE6D,GAAGyc,EAAEugE,QAAQ7gF,EAAG,IAAGuY,IAAI,EAAE+H,EAAExgB,UAAU+gF,QAAQ,SAAS39E,EAAEpC,GAAG,OAAOd,EAAE2J,IAAI4O,KAAKmnE,OAAOx8E,IAAIpB,UAAUC,OAAO,IAAIwW,KAAKmnE,OAAOx8E,GAAGpC,GAAGyX,OAAOA,KAAKmnE,OAAOx8E,GAAGpB,UAAUC,OAAO,EAAEjB,EAAEyX,KAAKinE,oBAAoBt8E,GAAGqV,KAAK8mE,cAAc9mE,KAAKkD,QAAQvY,GAAGW,EAAE0U,KAAKonE,UAAUz8E,GAAG,GAAGqV,KAAKonE,UAAU97E,GAAGX,IAAG,GAAIqV,KAAKqnE,IAAI18E,GAAG,CAAE,EAACqV,KAAKsnE,OAAO38E,GAAG,CAAA,EAAGqV,KAAKunE,KAAK58E,GAAG,CAAE,EAACqV,KAAKwnE,MAAM78E,GAAG,KAAKqV,KAAK2nE,WAAW3nE,KAAK,EAAE+H,EAAExgB,UAAU0J,KAAK,SAASxJ,GAAG,OAAOuY,KAAKmnE,OAAO1/E,EAAE,EAAEsgB,EAAExgB,UAAUghF,QAAQ,SAAS59E,GAAG,OAAOlD,EAAE2J,IAAI4O,KAAKmnE,OAAOx8E,EAAE,EAAEod,EAAExgB,UAAUihF,WAAW,SAAS79E,GAAG,IAAIW,EAAE0U,KAAK,GAAGvY,EAAE2J,IAAI4O,KAAKmnE,OAAOx8E,GAAG,CAAC,IAAIpC,EAAE,SAASd,GAAG6D,EAAEm9E,WAAWn9E,EAAEm8E,UAAUhgF,GAAG,SAASuY,KAAKmnE,OAAOx8E,GAAGqV,KAAK8mE,cAAc9mE,KAAK0oE,4BAA4B/9E,UAAUqV,KAAKkD,QAAQvY,GAAGlD,EAAEglB,KAAKzM,KAAKjL,SAASpK,IAAI,SAASlD,GAAG6D,EAAEq9E,UAAUlhF,EAAG,WAAUuY,KAAKonE,UAAUz8E,IAAIlD,EAAEglB,KAAKhlB,EAAE2V,KAAK4C,KAAKqnE,IAAI18E,IAAIpC,UAAUyX,KAAKqnE,IAAI18E,UAAUqV,KAAKsnE,OAAO38E,GAAGlD,EAAEglB,KAAKhlB,EAAE2V,KAAK4C,KAAKunE,KAAK58E,IAAIpC,UAAUyX,KAAKunE,KAAK58E,UAAUqV,KAAKwnE,MAAM78E,KAAKqV,KAAK2nE,UAAU,CAAC,OAAO3nE,IAAI,EAAE+H,EAAExgB,UAAUohF,UAAU,SAASh+E,EAAEpC,GAAG,IAAIyX,KAAK8mE,YAAY,MAAM,IAAI32E,MAAM,6CAA6C,GAAG1I,EAAE6+E,YAAY/9E,GAAGA,EAAE+C,MAAM,CAAC,IAAI,IAAIyc,EAAExf,GAAG,IAAId,EAAE6+E,YAAYv+D,GAAGA,EAAE/H,KAAKxN,OAAOuV,GAAG,GAAGA,IAAIpd,EAAE,MAAM,IAAIwF,MAAM,WAAW5H,EAAE,iBAAiBoC,EAAE,yBAAyBqV,KAAKsoE,QAAQ//E,EAAE,CAAC,OAAOyX,KAAKsoE,QAAQ39E,GAAGqV,KAAK0oE,4BAA4B/9E,GAAGqV,KAAKkD,QAAQvY,GAAGpC,EAAEyX,KAAKonE,UAAU7+E,GAAGoC,IAAG,EAAGqV,IAAI,EAAE+H,EAAExgB,UAAUmhF,4BAA4B,SAASjhF,UAAUuY,KAAKonE,UAAUpnE,KAAKkD,QAAQzb,IAAIA,EAAE,EAAEsgB,EAAExgB,UAAUiL,OAAO,SAAS/K,GAAG,GAAGuY,KAAK8mE,YAAY,CAAC,IAAIn8E,EAAEqV,KAAKkD,QAAQzb,GAAG,GAAGkD,IAAIW,EAAE,OAAOX,CAAC,CAAC,EAAEod,EAAExgB,UAAUwN,SAAS,SAASpK,GAAG,GAAGlD,EAAE6+E,YAAY37E,KAAKA,EAAEW,GAAG0U,KAAK8mE,YAAY,CAAC,IAAIv+E,EAAEyX,KAAKonE,UAAUz8E,GAAG,GAAGpC,EAAE,OAAOd,EAAE2V,KAAK7U,EAAE,KAAK,CAAC,GAAGoC,IAAIW,EAAE,OAAO0U,KAAK5L,QAAQ,GAAG4L,KAAKuoE,QAAQ59E,GAAG,MAAM,EAAE,CAAC,EAAEod,EAAExgB,UAAUqhF,aAAa,SAASj+E,GAAG,IAAIW,EAAE0U,KAAKsnE,OAAO38E,GAAG,GAAGW,EAAE,OAAO7D,EAAE2V,KAAK9R,EAAE,EAAEyc,EAAExgB,UAAUshF,WAAW,SAASl+E,GAAG,IAAIW,EAAE0U,KAAKwnE,MAAM78E,GAAG,GAAGW,EAAE,OAAO7D,EAAE2V,KAAK9R,EAAE,EAAEyc,EAAExgB,UAAUuhF,UAAU,SAASn+E,GAAG,IAAIW,EAAE0U,KAAK4oE,aAAaj+E,GAAG,GAAGW,EAAE,OAAO7D,EAAE8+E,MAAMj7E,EAAE0U,KAAK6oE,WAAWl+E,GAAG,EAAEod,EAAExgB,UAAUwhF,OAAO,SAASthF,GAAG,OAAO,KAAKuY,KAAK6nE,aAAa7nE,KAAK6oE,WAAWphF,GAAGuY,KAAK8oE,UAAUrhF,IAAI+B,MAAM,EAAEue,EAAExgB,UAAUyhF,YAAY,SAASr+E,GAAG,IAAIW,EAAE,IAAI0U,KAAKG,YAAY,CAACwmE,SAAS3mE,KAAK0mE,YAAYG,WAAW7mE,KAAK4mE,cAAcG,SAAS/mE,KAAK8mE,cAAcx7E,EAAE08E,SAAShoE,KAAKioE,SAAS,IAAI1/E,EAAEyX,KAAKvY,EAAEglB,KAAKzM,KAAKmnE,QAAQ,SAAS1/E,EAAEc,GAAGoC,EAAEpC,IAAI+C,EAAEg9E,QAAQ//E,EAAEd,EAAG,IAAGA,EAAEglB,KAAKzM,KAAKynE,WAAW,SAAShgF,GAAG6D,EAAEi9E,QAAQ9gF,EAAE+D,IAAIF,EAAEi9E,QAAQ9gF,EAAEiE,IAAIJ,EAAE29E,QAAQxhF,EAAEc,EAAEiL,KAAK/L,GAAI,IAAG,IAAIsgB,EAAE,GAAG,SAASze,EAAE7B,GAAG,IAAIkD,EAAEpC,EAAEiK,OAAO/K,GAAG,YAAO,IAASkD,GAAGW,EAAEi9E,QAAQ59E,IAAIod,EAAEtgB,GAAGkD,EAAEA,GAAGA,KAAKod,EAAEA,EAAEpd,GAAGrB,EAAEqB,EAAE,CAAC,OAAOqV,KAAK8mE,aAAar/E,EAAEglB,KAAKnhB,EAAE8I,SAAS,SAAS3M,GAAG6D,EAAEq9E,UAAUlhF,EAAE6B,EAAE7B,GAAI,IAAG6D,CAAC,EAAEyc,EAAExgB,UAAU2hF,oBAAoB,SAASv+E,GAAG,OAAOlD,EAAE4+E,WAAW17E,KAAKA,EAAElD,EAAEojB,SAASlgB,IAAIqV,KAAKknE,oBAAoBv8E,EAAEqV,IAAI,EAAE+H,EAAExgB,UAAU4hF,UAAU,WAAW,OAAOnpE,KAAK4nE,UAAU,EAAE7/D,EAAExgB,UAAU8L,MAAM,WAAW,OAAO5L,EAAE++E,OAAOxmE,KAAKynE,UAAU,EAAE1/D,EAAExgB,UAAU6hF,QAAQ,SAASz+E,EAAEW,GAAG,IAAI/C,EAAEyX,KAAK+H,EAAExe,UAAU,OAAO9B,EAAEgW,OAAO9S,YAAYlD,EAAEkD,GAAG,OAAOod,EAAEve,OAAO,EAAEjB,EAAE0gF,QAAQxhF,EAAEkD,EAAEW,GAAG/C,EAAE0gF,QAAQxhF,EAAEkD,GAAGA,CAAE,IAAGqV,IAAI,EAAE+H,EAAExgB,UAAU0hF,QAAQ,WAAW,IAAIt+E,EAAEW,EAAE/C,EAAEwf,EAAEjd,GAAE,EAAG/D,EAAEwC,UAAU,GAAG,iBAAiBxC,GAAG,OAAOA,GAAG,MAAMA,GAAG4D,EAAE5D,EAAEyE,EAAEF,EAAEvE,EAAE2E,EAAEnD,EAAExB,EAAEkZ,KAAK,IAAI1W,UAAUC,SAASue,EAAExe,UAAU,GAAGuB,GAAE,KAAMH,EAAE5D,EAAEuE,EAAE/B,UAAU,GAAGhB,EAAEgB,UAAU,GAAGA,UAAUC,OAAO,IAAIue,EAAExe,UAAU,GAAGuB,GAAE,IAAKH,EAAE,GAAGA,EAAEW,EAAE,GAAGA,EAAE7D,EAAE6+E,YAAY/9E,KAAKA,EAAE,GAAGA,GAAG,IAAIL,EAAEC,EAAE6X,KAAK0mE,YAAY/7E,EAAEW,EAAE/C,GAAG,GAAGd,EAAE2J,IAAI4O,KAAK0nE,YAAYx/E,GAAG,OAAO4C,IAAIkV,KAAK0nE,YAAYx/E,GAAG6f,GAAG/H,KAAK,IAAIvY,EAAE6+E,YAAY/9E,KAAKyX,KAAK4mE,cAAc,MAAM,IAAIz2E,MAAM,qDAAqD6P,KAAKsoE,QAAQ39E,GAAGqV,KAAKsoE,QAAQh9E,GAAG0U,KAAK0nE,YAAYx/E,GAAG4C,EAAEid,EAAE/H,KAAKknE,oBAAoBv8E,EAAEW,EAAE/C,GAAG,IAAI2yB,EAAE,SAASzzB,EAAEkD,EAAEW,EAAE/C,GAAG,IAAIwf,EAAE,GAAGpd,EAAErB,EAAE,GAAGgC,EAAE,IAAI7D,GAAGsgB,EAAEze,EAAE,CAAC,IAAIwB,EAAEid,EAAEA,EAAEze,EAAEA,EAAEwB,CAAC,CAAC,IAAI3C,EAAE,CAACqD,EAAEuc,EAAErc,EAAEpC,GAAiB,OAAdf,IAAIJ,EAAE8X,KAAK1X,GAAUJ,CAAC,CAAtG,CAAwG6X,KAAK0mE,YAAY/7E,EAAEW,EAAE/C,GAAG,OAAOoC,EAAEuwB,EAAE1vB,EAAEF,EAAE4vB,EAAExvB,EAAEpE,OAAO+hF,OAAOnuD,GAAGlb,KAAKynE,UAAUv/E,GAAGgzB,EAAE5xB,EAAE0W,KAAKsnE,OAAOh8E,GAAGX,GAAGrB,EAAE0W,KAAKwnE,MAAM78E,GAAGW,GAAG0U,KAAKqnE,IAAI/7E,GAAGpD,GAAGgzB,EAAElb,KAAKunE,KAAK58E,GAAGzC,GAAGgzB,EAAElb,KAAK4nE,aAAa5nE,IAAI,EAAE+H,EAAExgB,UAAUiM,KAAK,SAAS/L,EAAEkD,EAAEW,GAAG,IAAI/C,EAAE,IAAIgB,UAAUC,OAAOzC,EAAEiZ,KAAK0mE,YAAYn9E,UAAU,IAAIpB,EAAE6X,KAAK0mE,YAAYj/E,EAAEkD,EAAEW,GAAG,OAAO0U,KAAK0nE,YAAYn/E,EAAE,EAAEwf,EAAExgB,UAAU+hF,QAAQ,SAAS3+E,EAAEW,EAAE/C,GAAG,IAAIwf,EAAE,IAAIxe,UAAUC,OAAOzC,EAAEiZ,KAAK0mE,YAAYn9E,UAAU,IAAIpB,EAAE6X,KAAK0mE,YAAY/7E,EAAEW,EAAE/C,GAAG,OAAOd,EAAE2J,IAAI4O,KAAK0nE,YAAY3/D,EAAE,EAAEA,EAAExgB,UAAUkhF,WAAW,SAAShhF,EAAEkD,EAAEW,GAAG,IAAI/C,EAAE,IAAIgB,UAAUC,OAAOzC,EAAEiZ,KAAK0mE,YAAYn9E,UAAU,IAAIpB,EAAE6X,KAAK0mE,YAAYj/E,EAAEkD,EAAEW,GAAGyc,EAAE/H,KAAKynE,UAAUl/E,GAAG,OAAOwf,IAAItgB,EAAEsgB,EAAEvc,EAAEb,EAAEod,EAAErc,SAASsU,KAAK0nE,YAAYn/E,UAAUyX,KAAKynE,UAAUl/E,GAAGuC,EAAEkV,KAAKsnE,OAAO38E,GAAGlD,GAAGqD,EAAEkV,KAAKwnE,MAAM//E,GAAGkD,UAAUqV,KAAKqnE,IAAI18E,GAAGpC,UAAUyX,KAAKunE,KAAK9/E,GAAGc,GAAGyX,KAAK4nE,cAAc5nE,IAAI,EAAE+H,EAAExgB,UAAUgiF,QAAQ,SAAS5+E,EAAEW,GAAG,IAAI/C,EAAEyX,KAAKqnE,IAAI18E,GAAG,GAAGpC,EAAE,CAAC,IAAIwf,EAAEtgB,EAAE++E,OAAOj+E,GAAG,OAAO+C,EAAE7D,EAAE4V,OAAO0K,GAAG,SAAStgB,GAAG,OAAOA,EAAE+D,IAAIF,CAAE,IAAGyc,CAAC,CAAC,EAAEA,EAAExgB,UAAUiiF,SAAS,SAAS7+E,EAAEW,GAAG,IAAI/C,EAAEyX,KAAKunE,KAAK58E,GAAG,GAAGpC,EAAE,CAAC,IAAIwf,EAAEtgB,EAAE++E,OAAOj+E,GAAG,OAAO+C,EAAE7D,EAAE4V,OAAO0K,YAAYtgB,GAAG,OAAOA,EAAEiE,IAAIJ,CAAE,IAAGyc,CAAC,CAAC,EAAEA,EAAExgB,UAAUkiF,UAAU,SAAShiF,EAAEkD,GAAG,IAAIW,EAAE0U,KAAKupE,QAAQ9hF,EAAEkD,GAAG,GAAGW,EAAE,OAAOA,EAAEoD,OAAOsR,KAAKwpE,SAAS/hF,EAAEkD,GAAG,EAAE0zE,EAAE,CAAmF,SAASqL,KAAK,GAAG9K,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIn3E,EAAEszC,KAAKpwC,EAAE87E,KAAK,SAASn7E,EAAEX,GAAG,OAAOlD,EAAEgV,IAAI9R,EAAEyJ,SAAS,SAAS9I,GAAG,IAAI/C,EAAEoC,EAAEsG,KAAK3F,GAAGyc,EAAEpd,EAAE6H,OAAOlH,GAAGhC,EAAE,CAACkC,EAAEF,GAAG,OAAO7D,EAAE6+E,YAAY/9E,KAAKe,EAAEuB,MAAMtC,GAAGd,EAAE6+E,YAAYv+D,KAAKze,EAAEkJ,OAAOuV,GAAGze,CAAE,GAAE,CAAC,SAASf,EAAEoC,GAAG,OAAOlD,EAAEgV,IAAI9R,EAAE0I,SAAS,SAAS/H,GAAG,IAAI/C,EAAEoC,EAAE6I,KAAKlI,GAAGyc,EAAE,CAACvc,EAAEF,EAAEE,EAAEE,EAAEJ,EAAEI,GAAG,OAAOjE,EAAE6+E,YAAYh7E,EAAE2U,QAAQ8H,EAAE9H,KAAK3U,EAAE2U,MAAMxY,EAAE6+E,YAAY/9E,KAAKwf,EAAEld,MAAMtC,GAAGwf,CAAE,GAAE,CAAC,OAAO42D,GAAG,CAACgL,MAAM,SAASh/E,GAAG,IAAIod,EAAE,CAACvX,QAAQ,CAACm2E,SAASh8E,EAAEk9E,aAAahB,WAAWl8E,EAAEm9E,eAAef,SAASp8E,EAAEo9E,cAAc3zE,MAAM9I,EAAEX,GAAG0I,MAAM9K,EAAEoC,IAA2D,OAAvDlD,EAAE6+E,YAAY37E,EAAEs9E,WAAWlgE,EAAEld,MAAMpD,EAAEigB,MAAM/c,EAAEs9E,UAAiBlgE,CAAC,EAAE6hE,KAAK,SAASt+E,GAAG,IAAI/C,EAAE,IAAIoC,EAAEW,EAAEkF,SAASw3E,SAAS18E,EAAET,OAAO,OAAOpD,EAAEglB,KAAKnhB,EAAE8I,OAAO,SAAS3M,GAAGc,EAAE+/E,QAAQ7gF,EAAE+D,EAAE/D,EAAEoD,OAAOpD,EAAE+K,QAAQjK,EAAEogF,UAAUlhF,EAAE+D,EAAE/D,EAAE+K,OAAQ,IAAG/K,EAAEglB,KAAKnhB,EAAE+H,OAAK,SAAW5L,GAAGc,EAAE0gF,QAAQ,CAACz9E,EAAE/D,EAAE+D,EAAEE,EAAEjE,EAAEiE,EAAEuU,KAAKxY,EAAEwY,MAAMxY,EAAEoD,MAAO,IAAGtC,CAAC,EAAE,CAAC,SAASshF,KAAK,GAAG/K,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIr3E,EAAEszC,KAAK,OAAO8jC,GAAG,SAASl0E,GAAG,IAAIW,EAAE/C,EAAE,CAAA,EAAGwf,EAAE,GAAG,SAASze,EAAEye,GAAGtgB,EAAE2J,IAAI7I,EAAEwf,KAAKxf,EAAEwf,IAAG,EAAGzc,EAAE3B,KAAKoe,GAAGtgB,EAAEglB,KAAK9hB,EAAEk+E,WAAW9gE,GAAGze,GAAG7B,EAAEglB,KAAK9hB,EAAEi+E,aAAa7gE,GAAGze,GAAG,CAAC,OAAO7B,EAAEglB,KAAK9hB,EAAEyJ,SAAS,SAAS3M,GAAG6D,EAAE,GAAGhC,EAAE7B,GAAG6D,EAAE9B,QAAQue,EAAEpe,KAAK2B,EAAG,IAAGyc,CAAC,EAAE82D,EAAE,CAAC,SAASiL,KAAK,GAAG9K,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIv3E,EAAEszC,KAAK,SAASpwC,IAAIqV,KAAK+pE,KAAK,GAAG/pE,KAAKgqE,YAAY,CAAA,CAAE,CAAC,OAAOjL,GAAGp0E,EAAEA,EAAEpD,UAAUsN,KAAK,WAAW,OAAOmL,KAAK+pE,KAAKvgF,MAAM,EAAEmB,EAAEpD,UAAU6V,KAAK,WAAW,OAAO4C,KAAK+pE,KAAKttE,KAAK,SAAShV,GAAG,OAAOA,EAAEI,GAAI,GAAE,EAAE8C,EAAEpD,UAAU6J,IAAI,SAASzG,GAAG,OAAOlD,EAAE2J,IAAI4O,KAAKgqE,YAAYr/E,EAAE,EAAEA,EAAEpD,UAAU0d,SAAS,SAASxd,GAAG,IAAIkD,EAAEqV,KAAKgqE,YAAYviF,GAAG,QAAG,IAASkD,EAAE,OAAOqV,KAAK+pE,KAAKp/E,GAAGsa,QAAQ,EAAEta,EAAEpD,UAAUgP,IAAI,WAAW,GAAG,IAAIyJ,KAAKnL,OAAO,MAAM,IAAI1E,MAAM,mBAAmB,OAAO6P,KAAK+pE,KAAK,GAAGliF,GAAG,EAAE8C,EAAEpD,UAAUyF,IAAI,SAASrC,EAAEW,GAAG,IAAI/C,EAAEyX,KAAKgqE,YAAY,GAAGr/E,EAAEokE,OAAOpkE,IAAIlD,EAAE2J,IAAI7I,EAAEoC,GAAG,CAAC,IAAIod,EAAE/H,KAAK+pE,KAAKzgF,EAAEye,EAAEve,OAAO,OAAOjB,EAAEoC,GAAGrB,EAAEye,EAAEpe,KAAK,CAAC9B,IAAI8C,EAAEsa,SAAS3Z,IAAI0U,KAAKiqE,UAAU3gF,IAAG,CAAE,CAAC,OAAM,CAAE,EAAEqB,EAAEpD,UAAU2iF,UAAU,WAAWlqE,KAAKmqE,MAAM,EAAEnqE,KAAK+pE,KAAKvgF,OAAO,GAAG,IAAI/B,EAAEuY,KAAK+pE,KAAKxrD,MAAM,cAAcve,KAAKgqE,YAAYviF,EAAEI,KAAKmY,KAAKoqE,SAAS,GAAG3iF,EAAEI,GAAG,EAAE8C,EAAEpD,UAAU8iF,SAAS,SAAS5iF,EAAEkD,GAAG,IAAIW,EAAE0U,KAAKgqE,YAAYviF,GAAG,GAAGkD,EAAEqV,KAAK+pE,KAAKz+E,GAAG2Z,SAAS,MAAM,IAAI9U,MAAM,uDAAuD1I,EAAE,SAASuY,KAAK+pE,KAAKz+E,GAAG2Z,SAAS,SAASta,GAAGqV,KAAK+pE,KAAKz+E,GAAG2Z,SAASta,EAAEqV,KAAKiqE,UAAU3+E,EAAE,EAAEX,EAAEpD,UAAU6iF,SAAS,SAAS3iF,GAAG,IAAIkD,EAAEqV,KAAK+pE,KAAKz+E,EAAE,EAAE7D,EAAEc,EAAE+C,EAAE,EAAEyc,EAAEtgB,EAAE6D,EAAEX,EAAEnB,SAASue,EAAEpd,EAAEW,GAAG2Z,SAASta,EAAEod,GAAG9C,SAAS3Z,EAAEyc,EAAExf,EAAEoC,EAAEnB,SAASue,EAAEpd,EAAEpC,GAAG0c,SAASta,EAAEod,GAAG9C,SAAS1c,EAAEwf,GAAGA,IAAItgB,IAAIuY,KAAKmqE,MAAM1iF,EAAEsgB,GAAG/H,KAAKoqE,SAASriE,IAAI,EAAEpd,EAAEpD,UAAU0iF,UAAU,SAASxiF,GAAG,IAAI,IAAIkD,EAAEW,EAAE0U,KAAK+pE,KAAKxhF,EAAE+C,EAAE7D,GAAGwd,SAAS,IAAIxd,KAAK6D,EAAEX,EAAElD,GAAG,GAAGwd,SAAS1c,IAAIyX,KAAKmqE,MAAM1iF,EAAEkD,GAAGlD,EAAEkD,CAAC,EAAEA,EAAEpD,UAAU4iF,MAAM,SAAS1iF,EAAEkD,GAAG,IAAIW,EAAE0U,KAAK+pE,KAAKxhF,EAAEyX,KAAKgqE,YAAYjiE,EAAEzc,EAAE7D,GAAG6B,EAAEgC,EAAEX,GAAGW,EAAE7D,GAAG6B,EAAEgC,EAAEX,GAAGod,EAAExf,EAAEe,EAAEzB,KAAKJ,EAAEc,EAAEwf,EAAElgB,KAAK8C,CAAC,EAAEo0E,EAAE,CAAC,SAASuL,KAAK,GAAGpL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIz3E,EAAEszC,KAAKpwC,EAAEm/E,KAAK7K,GAAG,SAASx3E,EAAEc,EAAEwf,EAAEze,GAAG,OAAO,SAAS7B,EAAE6D,EAAE/C,EAAEwf,GAAG,IAAIze,EAAEwB,EAAE3C,EAAE,CAAE,EAACpB,EAAE,IAAI4D,EAAEzC,EAAE,SAAST,GAAG,IAAIkD,EAAElD,EAAE+D,IAAIlC,EAAE7B,EAAE+D,EAAE/D,EAAEiE,EAAEJ,EAAEnD,EAAEwC,GAAGod,EAAExf,EAAEd,GAAGS,EAAE4C,EAAEk6C,SAASj9B,EAAE,GAAGA,EAAE,EAAE,MAAM,IAAI5X,MAAM,4DAA4D1I,EAAE,YAAYsgB,GAAG7f,EAAEoD,EAAE05C,WAAW15C,EAAE05C,SAAS98C,EAAEoD,EAAEi/E,YAAYjhF,EAAEvC,EAAEsjF,SAAS1/E,EAAEzC,GAAG,EAAwG,IAAtGT,EAAE2M,QAAQ3H,SAAS,SAAShF,GAAG,IAAIkD,EAAElD,IAAI6D,EAAE,EAAEqE,OAAOE,kBAAkB1H,EAAEV,GAAG,CAACu9C,SAASr6C,GAAG5D,EAAEiG,IAAIvF,EAAEkD,EAAG,IAAQ5D,EAAE8N,OAAO,IAAIvL,EAAEvC,EAAEmjF,aAAap/E,EAAE3C,EAAEmB,IAAI07C,WAAWr1C,OAAOE,oBAAoBkY,EAAEze,GAAGmD,QAAQvE,GAAG,OAAOC,CAAC,CAAzd,CAA2dV,EAAEsnE,OAAOxmE,GAAGwf,GAAGzc,EAAEhC,GAAG,SAASqB,GAAG,OAAOlD,EAAE+hF,SAAS7+E,EAAE,EAAE,EAAE,IAAIW,EAAE7D,EAAEojB,SAAS,GAAG,OAAOo0D,EAAE,CAAC,SAASuL,KAAK,GAAGpL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI33E,EAAE6iF,KAAK3/E,EAAEowC,KAAK,OAAOokC,GAAG,SAAS7zE,EAAE/C,EAAEwf,GAAG,OAAOpd,EAAE2P,UAAUhP,EAAE8I,SAAO,SAAWzJ,EAAErB,GAAGqB,EAAErB,GAAG7B,EAAE6D,EAAEhC,EAAEf,EAAEwf,EAAG,GAAE,CAAE,EAAC,CAAC,CAAC,SAAS0iE,KAAK,GAAGpL,GAAG,OAAO5gD,GAAG4gD,GAAG,EAAE,IAAI53E,EAAEszC,KAAK,OAAOtc,GAAG,SAAS9zB,GAAG,IAAIW,EAAE,EAAE/C,EAAE,GAAGwf,EAAE,CAAE,EAACze,EAAE,GAAG,SAASwB,EAAE3C,GAAG,IAAIpB,EAAEghB,EAAE5f,GAAG,CAACuiF,SAAQ,EAAGC,QAAQr/E,EAAE2xB,MAAM3xB,KAAK,GAAG/C,EAAEoB,KAAKxB,GAAGwC,EAAEk+E,WAAW1gF,GAAGsE,kBAAkB9B,GAAGlD,EAAE2J,IAAI2W,EAAEpd,GAAGod,EAAEpd,GAAG+/E,UAAU3jF,EAAE4jF,QAAQ90E,KAAKU,IAAIxP,EAAE4jF,QAAQ5iE,EAAEpd,GAAGsyB,SAASnyB,EAAEH,GAAG5D,EAAE4jF,QAAQ90E,KAAKU,IAAIxP,EAAE4jF,QAAQ5iE,EAAEpd,GAAGggF,SAAU,IAAG5jF,EAAE4jF,UAAU5jF,EAAEk2B,MAAM,CAAC,IAAI/0B,EAAEgzB,EAAE,GAAG,GAAGhzB,EAAEK,EAAEg2B,MAAMxW,EAAE7f,GAAGwiF,SAAQ,EAAGxvD,EAAEvxB,KAAKzB,SAASC,IAAID,GAAGoB,EAAEK,KAAKuxB,EAAE,CAAC,CAAC,OAAOvwB,EAAEyJ,QAAQ3H,SAAO,SAAW9B,GAAGlD,EAAE2J,IAAI2W,EAAEpd,IAAIG,EAAEH,EAAG,IAAGrB,CAAC,EAAEm1B,EAAE,CAAC,SAASmsD,KAAK,GAAGz7E,GAAG,OAAOmwE,GAAGnwE,GAAG,EAAE,IAAI1H,EAAEszC,KAAKpwC,EAAE8/E,KAAK,OAAOnL,GAAG,SAASh0E,GAAG,OAAO7D,EAAE4V,OAAO1S,EAAEW,IAAE,SAAW7D,GAAG,OAAOA,EAAE+B,OAAO,GAAG,IAAI/B,EAAE+B,QAAQ8B,EAAEg+E,QAAQ7hF,EAAE,GAAGA,EAAE,GAAI,GAAE,CAAC,CAAC,SAASojF,KAAK,GAAGrL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/3E,EAAEszC,KAAKwkC,GAAG,SAAS93E,EAAE6D,EAAE/C,GAAG,OAAO,SAASd,EAAEkD,EAAEW,GAAG,IAAI/C,EAAE,CAAA,EAAGwf,EAAEtgB,EAAE2M,QAAQ,OAAO2T,EAAEtb,kBAAkBhF,GAAGc,EAAEd,GAAG,GAAGc,EAAEd,GAAGA,GAAG,CAACu9C,SAAS,GAAGj9B,EAAEtb,SAAO,SAAW9B,GAAGlD,IAAIkD,IAAIpC,EAAEd,GAAGkD,GAAG,CAACq6C,SAASr1C,OAAOE,mBAAoB,IAAGvE,EAAE7D,GAAGgF,SAAS,SAASnB,GAAG,IAAIyc,EAAEzc,EAAEE,IAAI/D,EAAE6D,EAAEI,EAAEJ,EAAEE,EAAElC,EAAEqB,EAAEW,GAAG/C,EAAEd,GAAGsgB,GAAG,CAACi9B,SAAS17C,EAAEihF,YAAY9iF,EAAG,GAAG,IAAGsgB,EAAEtb,SAAO,SAAWhF,GAAG,IAAIkD,EAAEpC,EAAEd,GAAGsgB,EAAEtb,SAAS,SAASnB,GAAG,IAAIhC,EAAEf,EAAE+C,GAAGyc,EAAEtb,SAAO,SAAWnB,GAAG,IAAI/C,EAAEe,EAAE7B,GAAGsgB,EAAEpd,EAAEW,GAAGR,EAAExB,EAAEgC,GAAGnD,EAAEI,EAAEy8C,SAASj9B,EAAEi9B,SAAS78C,EAAE2C,EAAEk6C,WAAWl6C,EAAEk6C,SAAS78C,EAAE2C,EAAEy/E,YAAYxiE,EAAEwiE,YAAa,GAAG,GAAG,IAAGhiF,CAAC,CAA9d,CAAged,EAAE6D,GAAGX,EAAEpC,GAAG,SAASoC,GAAG,OAAOlD,EAAE+hF,SAAS7+E,EAAE,EAAE,EAAE,IAAIA,EAAElD,EAAEojB,SAAS,GAAG,OAAO00D,EAAE,CAAC,SAAS5sE,KAAK,GAAG+sE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIj4E,EAAEszC,KAAK,SAASpwC,EAAEA,GAAG,IAAIpC,EAAE,GAAGwf,EAAE,CAAA,EAAGze,EAAE,GAAG,GAAG7B,EAAEglB,KAAK9hB,EAAE09E,SAAO,SAAWv9E,EAAE3C,GAAG,GAAGV,EAAE2J,IAAI2W,EAAE5f,GAAG,MAAM,IAAImD,EAAE7D,EAAE2J,IAAI7I,EAAEJ,KAAK4f,EAAE5f,IAAG,EAAGI,EAAEJ,IAAG,EAAGV,EAAEglB,KAAK9hB,EAAEi+E,aAAazgF,GAAG2C,UAAUid,EAAE5f,GAAGmB,EAAEK,KAAKxB,GAAI,IAAGV,EAAEoN,KAAKtM,KAAKoC,EAAEw9E,YAAY,MAAM,IAAI78E,EAAE,OAAOhC,CAAC,CAAC,SAASgC,IAAG,CAAE,OAAOm0E,GAAG90E,EAAEA,EAAEmgF,eAAex/E,EAAEA,EAAE/D,UAAU,IAAI4I,MAAMsvE,EAAE,CAAC,SAASsL,KAAK,GAAGpL,GAAG,OAAOnhD,GAAGmhD,GAAG,EAAE,IAAIl4E,EAAEkL,KAAK,OAAO6rB,GAAG,SAAS7zB,GAAG,IAAIlD,EAAEkD,EAAE,CAAC,MAAMA,GAAG,GAAGA,aAAalD,EAAEqjF,eAAe,OAAM,EAAG,MAAMngF,CAAC,CAAC,OAAM,CAAE,CAAC,CAAC,SAASqgF,KAAK,GAAGnL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIp4E,EAAEszC,KAAK,SAASpwC,EAAEW,EAAE/C,EAAEwf,EAAEze,EAAEwB,EAAE3C,GAAGV,EAAE2J,IAAI9H,EAAEf,KAAKe,EAAEf,IAAG,EAAGwf,GAAG5f,EAAEwB,KAAKpB,GAAGd,EAAEglB,KAAK3hB,EAAEvC,aAAad,GAAGkD,EAAEW,EAAE7D,EAAEsgB,EAAEze,EAAEwB,EAAE3C,EAAG,IAAG4f,GAAG5f,EAAEwB,KAAKpB,GAAG,CAAC,OAAOq3E,GAAG,SAASt0E,EAAE/C,EAAEwf,GAAGtgB,EAAEoC,QAAQtB,KAAKA,EAAE,CAACA,IAAI,IAAIe,GAAGgC,EAAEu8E,aAAav8E,EAAEu9E,WAAWv9E,EAAEw9E,WAAWl+D,KAAKtf,GAAGR,EAAE,GAAG3C,EAAE,GAAG,OAAOV,EAAEglB,KAAKlkB,GAAG,SAASd,GAAG,IAAI6D,EAAEi9E,QAAQ9gF,GAAG,MAAM,IAAI0I,MAAM,6BAA6B1I,GAAGkD,EAAEW,EAAE7D,EAAE,SAASsgB,EAAE5f,EAAEmB,EAAEwB,EAAG,IAAGA,CAAC,EAAE80E,EAAE,CAAC,SAASqL,KAAK,GAAGlL,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIt4E,EAAEujF,KAAK,OAAOlL,GAAG,SAASn1E,EAAEW,GAAG,OAAO7D,EAAEkD,EAAEW,EAAE,OAAO,CAAC,CAAC,SAASgS,KAAK,GAAG2iE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIx4E,EAAEujF,KAAK,OAAOhL,GAAG,SAASr1E,EAAEW,GAAG,OAAO7D,EAAEkD,EAAEW,EAAE,MAAM,CAAC,CAAC,SAAS4/E,KAAK,GAAG/K,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI14E,EAAEszC,KAAKpwC,EAAE87E,KAAKn7E,EAAEw+E,KAAK,OAAO5J,GAAG,SAAS33E,EAAEwf,GAAG,IAAIze,EAAEwB,EAAE,IAAIH,EAAExC,EAAE,CAAA,EAAGpB,EAAE,IAAIuE,EAAE,SAASpD,EAAET,GAAG,IAAIkD,EAAElD,EAAE+D,IAAIlC,EAAE7B,EAAEiE,EAAEjE,EAAE+D,EAAEF,EAAEvE,EAAEke,SAASta,GAAG,QAAG,IAASW,EAAE,CAAC,IAAI/C,EAAEwf,EAAEtgB,GAAGc,EAAE+C,IAAInD,EAAEwC,GAAGrB,EAAEvC,EAAEsjF,SAAS1/E,EAAEpC,GAAG,CAAC,CAAC,GAAG,IAAIA,EAAE4/E,YAAY,OAAOr9E,EAAErD,EAAEglB,KAAKlkB,EAAE6L,SAAS,SAAS3M,GAAGV,EAAEiG,IAAIvF,EAAEkI,OAAOE,mBAAmB/E,EAAEw9E,QAAQ7gF,EAAG,IAAGV,EAAEsjF,SAAS9hF,EAAE6L,QAAQ,GAAG,GAAY,IAAT,IAAI8mB,GAAE,EAAQn0B,EAAE8N,OAAO,GAAG,CAAC,GAAGvL,EAAEvC,EAAEmjF,YAAYziF,EAAE2J,IAAIjJ,EAAEmB,GAAGwB,EAAEm+E,QAAQ3/E,EAAEnB,EAAEmB,QAAQ,CAAC,GAAG4xB,EAAE,MAAM,IAAI/qB,MAAM,iCAAiC5H,GAAG2yB,GAAE,CAAE,CAAC3yB,EAAEkhF,UAAUngF,GAAGmD,QAAQvE,EAAE,CAAC,OAAO4C,CAAC,CAAC,CAAC21E,GAAG35E,QAAQ,IAAI05E,GAAG,WAAW,GAAGD,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI94E,EAA/vMi3E,GAAGD,IAAIC,GAAG,EAAED,GAAG,CAAC0M,MAAM1E,KAAK2E,QAAQ5M,GAAGD,IAAIC,GAAG,EAAED,GAAG,WAAotM,OAAO+B,GAAG,CAAC6K,MAAM1jF,EAAE0jF,MAAME,KAAK3B,KAAK4B,IAAIjL,GAAGD,IAAIC,GAAG,EAAED,GAAG,CAACmL,WAAW1B,KAAK2B,SAASlB,KAAKmB,YAAYjB,KAAKkB,WAAWd,KAAKe,cAAcd,KAAKe,UAAUb,KAAKc,UAAUZ,KAAKa,SAASxuE,KAAKyuE,KAAKb,KAAKc,OAAOvB,KAAKwB,QAAQt5E,OAAOy4E,QAAQ3jF,EAAE2jF,QAAQ,CAAvR,EAA0R,CAAC,MAAM3jF,KAAI+4E,KAAKA,GAAGp2E,OAAO8hF,UAAU,IAAIC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG7jF,GAAG8jF,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGjyD,GAAGkyD,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGxiF,GAAGyiF,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGrR,GAAG,SAASsR,KAAK,GAAGxF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7kF,EAAEiiE,KAAK/+D,EAAEwkE,KAAK7jE,EAAEmhE,KAAKlkE,EAAE4hE,KAAK,OAAOkiB,GAAG,SAAStkE,EAAEze,EAAEwB,GAAG,IAAIvC,EAAEuC,GAAG,OAAM,EAAG,IAAI3C,SAASmB,EAAE,SAAS,UAAUnB,EAAEwC,EAAEG,IAAIQ,EAAEhC,EAAEwB,EAAEtB,QAAQ,UAAUrB,GAAGmB,KAAKwB,IAAIrD,EAAEqD,EAAExB,GAAGye,EAAE,CAAC,CAAiP,SAASgqE,KAAK,GAAG7E,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzlF,EAAE,WAAW,GAAGulF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIvlF,EAA7T,WAAc,GAAGqlF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIrlF,EAAE,WAAW,GAAGmlF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAInlF,EAAE,KAAK,OAAOklF,GAAG,SAAShiF,GAAG,IAAI,IAAIW,EAAEX,EAAEnB,OAAO8B,KAAK7D,EAAEqY,KAAKnV,EAAEqnF,OAAO1mF,MAAM,OAAOA,CAAC,CAAC,CAAxH,GAA4HX,EAAE,OAAO,OAAOkiF,GAAG,SAASvhF,GAAG,OAAOA,EAAEA,EAAEsC,MAAM,EAAEnG,EAAE6D,GAAG,GAAGe,QAAQ1B,EAAE,IAAIW,CAAC,CAAC,CAAgF2mF,GAAKtnF,EAAEw/D,KAAK7+D,EAAEs4E,KAAKr7E,EAAE,qBAAqBwf,EAAE,aAAaze,EAAE,cAAcwB,EAAEwvB,SAAS,OAAOyyD,GAAG,SAAS5kF,GAAG,GAAG,iBAAiBA,EAAE,OAAOA,EAAE,GAAGmD,EAAEnD,GAAG,OAAO8b,IAAI,GAAGtZ,EAAExC,GAAG,CAAC,IAAIpB,EAAE,mBAAmBoB,EAAEi6E,QAAQj6E,EAAEi6E,UAAUj6E,EAAEA,EAAEwC,EAAE5D,GAAGA,EAAE,GAAGA,CAAC,CAAC,GAAG,iBAAiBoB,EAAE,OAAO,IAAIA,EAAEA,GAAGA,EAAEA,EAAEV,EAAEU,GAAG,IAAID,EAAE6f,EAAEjI,KAAK3X,GAAG,OAAOD,GAAGoB,EAAEwW,KAAK3X,GAAG2C,EAAE3C,EAAEyF,MAAM,GAAG1F,EAAE,EAAE,GAAGK,EAAEuX,KAAK3X,GAAG8b,KAAK9b,CAAC,CAAC,CAAlY,GAAsYwC,EAAE,IAAI,OAAOsiF,GAAG,SAAS3hF,GAAG,OAAOA,GAAGA,EAAE7D,EAAE6D,MAAMX,GAAGW,KAAI,IAAK,uBAAuBA,EAAE,GAAG,EAAE,GAAGA,GAAGA,EAAEA,EAAE,EAAE,IAAIA,EAAEA,EAAE,CAAC,CAAC,CAA8S,SAAS4mF,KAAK,GAAGxE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIjmF,EAAE+9E,KAAK,OAAOiI,GAAG,SAAS9iF,GAAG,OAAO,MAAMA,GAAIA,EAAEnB,OAAQ/B,EAAEkD,EAAE,GAAG,EAAE,CAAC,CAAC,SAASwnF,KAAK,GAAGjE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzmF,EAAEm8E,KAAK,OAAOqK,GAAG,SAAStjF,EAAEW,EAAE/C,GAAG,IAAI,IAAIwf,GAAG,EAAEze,EAAEqB,EAAEnB,SAASue,EAAEze,GAAG,CAAC,IAAIwB,EAAEH,EAAEod,GAAG5f,EAAEmD,EAAER,GAAG,GAAG,MAAM3C,SAAI,IAASpB,EAAEoB,GAAGA,IAAIV,EAAEU,GAAGI,EAAEJ,EAAEpB,IAAI,IAAIA,EAAEoB,EAAED,EAAE4C,CAAC,CAAC,OAAO5C,CAAC,CAAC,CAAC,SAASkqF,KAAK,GAAG7D,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI9mF,EAAEyjE,KAAKvgE,EAAE++D,KAAK,OAAO4kB,GAAG,SAAShjF,EAAE/C,EAAEwf,SAAI,IAASA,IAAIpd,EAAEW,EAAE/C,GAAGwf,SAAI,IAASA,KAAKxf,KAAK+C,KAAK7D,EAAE6D,EAAE/C,EAAEwf,EAAE,CAAC,CAAC,SAASsqE,KAAK,OAAG1D,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAASjnF,EAAEkD,GAAG,IAAI,gBAAgBA,GAAG,mBAAmBlD,EAAEkD,KAAK,aAAaA,EAAE,OAAOlD,EAAEkD,EAAE,EAAC,CAAw6B,SAAS2nF,KAAK,OAAGhD,GAAUD,IAAUC,GAAG,EAAED,GAAG,SAAS5nF,EAAEkD,GAAG,OAAOlD,EAAEkD,CAAC,EAAC,CAAg7C,SAAS4nF,KAAK,GAAGnB,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3pF,EAAEq8E,KAAKn5E,EAAE25E,KAAKh5E,EAAEo5E,KAAKn8E,EAAE28E,KAAKn9D,EAAE+oE,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASppF,EAAEkD,GAAG,IAAIW,EAAE7D,EAAE+B,OAAO,IAAI/B,EAAE2kB,KAAKzhB,GAAGW,KAAK7D,EAAE6D,GAAG7D,EAAE6D,GAAGT,MAAM,OAAOpD,CAAC,GAAG6B,EAAEqjE,KAAK7hE,EAA9qB,WAAc,GAAGomF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzpF,EAAE,WAAW,GAAGupF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIvpF,EAAEm8E,KAAK,OAAOmN,GAAG,SAASpmF,EAAEW,GAAG,GAAGX,IAAIW,EAAE,CAAC,IAAI/C,OAAE,IAASoC,EAAEod,EAAE,OAAOpd,EAAErB,EAAEqB,GAAGA,EAAEG,EAAErD,EAAEkD,GAAGxC,OAAE,IAASmD,EAAEvE,EAAE,OAAOuE,EAAEpD,EAAEoD,GAAGA,EAAE4vB,EAAEzzB,EAAE6D,GAAG,IAAIvE,IAAIm0B,IAAIpwB,GAAGH,EAAEW,GAAGR,GAAG3C,GAAGD,IAAInB,IAAIm0B,GAAGnT,GAAG5f,GAAGD,IAAIK,GAAGL,IAAIoB,EAAE,OAAO,EAAE,IAAIye,IAAIjd,IAAIowB,GAAGvwB,EAAEW,GAAG4vB,GAAG3yB,GAAGe,IAAIye,IAAIjd,GAAG/D,GAAGwB,GAAGe,IAAInB,GAAGmB,IAAIpB,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAxS,GAA4S,OAAO+oF,GAAG,SAAStmF,EAAEW,EAAE/C,GAAG,IAAI,IAAIwf,GAAG,EAAEze,EAAEqB,EAAE6nF,SAAS1nF,EAAEQ,EAAEknF,SAASrqF,EAAEmB,EAAEE,OAAOzC,EAAEwB,EAAEiB,SAASue,EAAE5f,GAAG,CAAC,IAAID,EAAET,EAAE6B,EAAEye,GAAGjd,EAAEid,IAAI,GAAG7f,EAAE,OAAO6f,GAAGhhB,EAAEmB,EAAEA,GAAG,QAAQK,EAAEwf,IAAI,EAAE,EAAE,CAAC,OAAOpd,EAAEsyB,MAAM3xB,EAAE2xB,KAAK,CAAC,CAAyKw1D,GAAKtqF,EAAE46E,KAAKh8E,EAAE0kE,KAAK,OAAO0lB,GAAG,SAASjpF,EAAEgzB,EAAE5yB,GAAG4yB,EAAEA,EAAE1xB,OAAO/B,EAAEyzB,GAAC,SAAWzzB,GAAG,OAAOV,EAAEU,GAAG,SAAS6D,GAAG,OAAOX,EAAEW,EAAE,IAAI7D,EAAE+B,OAAO/B,EAAE,GAAGA,EAAE,EAAEA,CAAE,IAAG,CAACU,GAAG,IAAIK,GAAG,EAAE0yB,EAAEzzB,EAAEyzB,EAAE5xB,EAAEgC,IAAI,IAAIE,EAAEjD,EAAEL,GAAC,SAAWyC,EAAEW,EAAE/C,GAAG,MAAM,CAACiqF,SAAS/qF,EAAEyzB,YAAYzzB,GAAG,OAAOA,EAAEkD,EAAG,IAAGsyB,QAAQz0B,EAAEqC,MAAMF,EAAG,IAAG,OAAOod,EAAEvc,GAAC,SAAW/D,EAAEkD,GAAG,OAAOG,EAAErD,EAAEkD,EAAErC,EAAG,GAAE,CAAC,CAAC,IAAIspF,GAAG,CAACc,UAAU,WAAW,GAAGtG,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3kF,EAAE06E,KAAK,OAAOgK,GAAG,SAASxhF,GAAG,OAAOlD,EAAEkD,EAAE,EAAE,CAAC,CAA/E,GAAmFkgB,SAAS83D,KAAKhyE,SAAS,WAAW,GAAG67E,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/kF,EAAEm+E,KAAKj7E,EAAE++D,KAAKp+D,EAAEwmF,KAAKvpF,EAAE8mE,KAAKtnD,EAAEzgB,OAAOC,UAAU+B,EAAEye,EAAEvgB,eAAesD,EAAErD,GAAG,SAASA,EAAEqD,GAAGrD,EAAEH,OAAOG,GAAG,IAAIU,GAAG,EAAEpB,EAAE+D,EAAEtB,OAAOtB,EAAEnB,EAAE,EAAE+D,EAAE,QAAG,EAAO,IAAI5C,GAAGoD,EAAER,EAAE,GAAGA,EAAE,GAAG5C,KAAKnB,EAAE,KAAKoB,EAAEpB,GAAG,IAAI,IAAIm0B,EAAEpwB,EAAE3C,GAAGG,EAAEC,EAAE2yB,GAAG1yB,GAAG,EAAEgD,EAAElD,EAAEkB,SAAShB,EAAEgD,GAAG,CAAC,IAAIpE,EAAEkB,EAAEE,GAAGZ,EAAEH,EAAEL,SAAI,IAASQ,GAAG+C,EAAE/C,EAAEmgB,EAAE3gB,MAAMkC,EAAEb,KAAKhB,EAAEL,MAAMK,EAAEL,GAAG8zB,EAAE9zB,GAAG,CAAC,OAAOK,CAAE,IAAG,OAAO8kF,GAAGzhF,CAAC,CAAzV,GAA6V2hB,KAAKy2D,KAAK7lE,OAAOynE,KAAKpiE,KAAK,WAAW,GAAG8qE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/lF,EAAE,WAAW,GAAGilF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIjlF,EAAEi9E,KAAK/5E,EAAEwkE,KAAK7jE,EAAE8jE,KAAK,OAAOqd,GAAG,SAASlkF,GAAG,OAAO,SAASwf,EAAEze,EAAEwB,GAAG,IAAI3C,EAAEb,OAAOygB,GAAG,IAAIpd,EAAEod,GAAG,CAAC,IAAIhhB,EAAEU,EAAE6B,EAAE,GAAGye,EAAEzc,EAAEyc,GAAGze,EAAE,SAAS7B,GAAG,OAAOV,EAAEoB,EAAEV,GAAGA,EAAEU,EAAE,CAAC,CAAC,IAAID,EAAEK,EAAEwf,EAAEze,EAAEwB,GAAG,OAAO5C,GAAG,EAAEC,EAAEpB,EAAEghB,EAAE7f,GAAGA,QAAG,CAAM,CAAC,CAAC,CAArO,GAAnvI,WAAc,GAAGolF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7lF,EAAEo+E,KAAKl7E,EAAE+5E,KAAKp5E,EAAE,WAAW,GAAG8hF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3lF,EAAEsqF,KAAK,OAAO5E,GAAG,SAASxiF,GAAG,IAAIW,EAAE7D,EAAEkD,GAAGpC,EAAE+C,EAAE,EAAE,OAAOA,GAAGA,EAAE/C,EAAE+C,EAAE/C,EAAE+C,EAAE,CAAC,CAAC,CAAxG,GAA4G/C,EAAEsN,KAAKO,IAAI,OAAOi3E,GAAG,SAAStlE,EAAEze,EAAEwB,GAAG,IAAI3C,EAAE,MAAM4f,EAAE,EAAEA,EAAEve,OAAO,IAAIrB,EAAE,OAAO,EAAE,IAAIpB,EAAE,MAAM+D,EAAE,EAAEQ,EAAER,GAAG,OAAO/D,EAAE,IAAIA,EAAEwB,EAAEJ,EAAEpB,EAAE,IAAIU,EAAEsgB,EAAEpd,EAAErB,EAAE,GAAGvC,EAAE,CAAC,CAAgrI4rF,IAAM,OAAOpF,GAAG9lF,CAAC,CAAhS,GAAoSmrF,QAAQV,KAAKzlF,QAAQw2E,KAAK4P,MAAM,WAAW,GAAGjF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAInmF,EAAEm7E,KAAKj4E,EAAEq4E,KAAK13E,EAAE+jE,KAAK,OAAOse,GAAG,SAASplF,EAAEwf,GAAG,OAAO,MAAMxf,EAAEA,EAAEd,EAAEc,EAAEoC,EAAEod,GAAGzc,EAAE,CAAC,CAA9G,GAAkH8F,IAAI2zE,KAAKuB,YAAYrB,KAAK6N,KAAKhF,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAASpmF,GAAG,IAAIkD,EAAE,MAAMlD,EAAE,EAAEA,EAAE+B,OAAO,OAAOmB,EAAElD,EAAEkD,EAAE,QAAG,CAAM,GAAG8R,IAAI0oE,KAAK4N,UAAU,WAAW,GAAG/E,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIvmF,EAAEyjE,KAAKvgE,EAAEk4E,KAAKv3E,EAAEo5E,KAAK,OAAOqJ,GAAG,SAASxlF,EAAEwf,GAAG,IAAIze,EAAE,GAAG,OAAOye,EAAEzc,EAAEyc,EAAE,GAAGpd,EAAEpC,YAAYoC,EAAEW,EAAE/C,GAAGd,EAAE6B,EAAEgC,EAAEyc,EAAEpd,EAAEW,EAAE/C,GAAI,IAAGe,CAAC,CAAC,CAApJ,GAAwJ8M,IAAI,WAAW,GAAGi4E,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI5mF,EAAE0qF,KAAKxnF,EAAEL,GAAG6jF,IAAI7jF,GAAG,EAAE6jF,GAAG,SAAS1mF,EAAEkD,GAAG,OAAOlD,EAAEkD,CAAC,GAAGW,EAAEy3E,KAAK,OAAOqL,GAAG,SAAS7lF,GAAG,OAAOA,GAAGA,EAAEiB,OAAO/B,EAAEc,EAAE+C,EAAEX,QAAG,CAAM,CAAC,CAAvJ,GAA2J8gB,MAAM,WAAW,GAAG2jE,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3nF,EAAE,WAAW,GAAGunF,GAAG,OAAOlyD,GAAGkyD,GAAG,EAAE,IAAIvnF,EAAEsjE,KAAKpgE,EAAEynF,KAAK9mF,EAAEs3E,KAAKr6E,EAAzzI,WAAc,GAAGwmF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAItnF,EAAE2qF,KAAKznF,EAAE+1E,KAAKp1E,EAAEw2E,KAAKv5E,EAAEq4E,KAAK74D,EAAEm6D,KAAK54E,EAAEiiE,KAAKzgE,EAAE2gE,KAAKtjE,EAAE89E,KAAKl/E,EAAEulE,KAAKpkE,EAAEkiE,KAAKlvC,EAAEivC,KAAK7hE,EAAE,WAAW,GAAGmmF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIhnF,EAAEwiE,KAAKt/D,EAAEu2E,KAAK51E,EAAEggE,KAAK/iE,EAAEwhE,SAASxiE,UAAUwgB,EAAEzgB,OAAOC,UAAU+B,EAAEf,EAAEyB,SAASc,EAAEid,EAAEvgB,eAAeW,EAAEmB,EAAEb,KAAKnB,QAAQ,OAAOknF,GAAG,SAASjmF,GAAG,IAAI+C,EAAE/C,IAAI,mBAAmBd,EAAEc,GAAG,OAAM,EAAG,IAAIwf,EAAEpd,EAAEpC,GAAG,GAAG,OAAOwf,EAAE,OAAM,EAAG,IAAIhhB,EAAE+D,EAAErC,KAAKsf,EAAE,gBAAgBA,EAAE5H,YAAY,MAAM,mBAAmBpZ,GAAGA,aAAaA,GAAGuC,EAAEb,KAAK1B,IAAIoB,CAAC,CAAC,CAAzV,GAA6VK,EAAEomE,KAAKpjE,EAAE6mF,KAAKjrF,EAAE,WAAW,GAAGynF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIpnF,EAAE4jE,KAAK1gE,EAAE0kE,KAAK,OAAOuf,GAAG,SAAStjF,GAAG,OAAO7D,EAAE6D,EAAEX,EAAEW,GAAG,CAAC,CAAzF,GAA6F,OAAOwjF,GAAG,SAASlnF,EAAEQ,EAAE8J,EAAE7J,EAAEhB,EAAEwY,EAAEnU,GAAG,IAAI+4D,EAAEj5D,EAAE5D,EAAEsK,GAAG8V,EAAExc,EAAEpD,EAAE8J,GAAGjL,EAAEyE,EAAE4F,IAAI0W,GAAG,GAAG/gB,EAAEQ,EAAEG,EAAEsK,EAAEjL,OAAO,CAAC,IAAIgL,EAAE4N,EAAEA,EAAE4kD,EAAEz8C,EAAE9V,EAAE,GAAGtK,EAAEQ,EAAEsD,QAAG,EAAOg5D,OAAE,IAASzyD,EAAE,GAAGyyD,EAAE,CAAC,IAAIC,EAAE75D,EAAEkd,GAAG48C,GAAGD,GAAG59D,EAAEihB,GAAG68C,GAAGF,IAAIC,GAAGp8D,EAAEwf,GAAG/V,EAAE+V,EAAE28C,GAAGC,GAAGC,EAAE/5D,EAAE25D,GAAGxyD,EAAEwyD,EAAEt8D,EAAEs8D,GAAGxyD,EAAE1J,EAAEk8D,GAAGG,GAAGF,GAAE,EAAGzyD,EAAEtH,EAAEqd,GAAE,IAAK68C,GAAGH,GAAE,EAAGzyD,EAAE3G,EAAE0c,GAAE,IAAK/V,EAAE,GAAG3J,EAAE0f,IAAI1e,EAAE0e,IAAI/V,EAAEwyD,EAAEn7D,EAAEm7D,GAAGxyD,EAAE7K,EAAEq9D,GAAGvpC,EAAEupC,KAAKv8D,EAAEu8D,KAAKxyD,EAAE8V,EAAEC,KAAK08C,GAAE,CAAE,CAACA,IAAIh5D,EAAEwI,IAAI8T,EAAE/V,GAAG5K,EAAE4K,EAAE+V,EAAE3f,EAAEwX,EAAEnU,GAAGA,EAAEuB,OAAO+a,IAAIvgB,EAAEG,EAAEsK,EAAED,EAAE,CAAC,CAAC,CAAq5GV,GAAKwW,EAAEoiD,KAAK7gE,EAAE+lE,KAAKvkE,EAAEunF,KAAK,OAAOv1D,GAAG,SAAS30B,EAAEpB,EAAEmB,EAAEgzB,EAAE5yB,EAAEE,GAAGzB,IAAImB,GAAGoD,EAAEpD,GAAC,SAAWoD,EAAEhC,GAAG,GAAGd,IAAIA,EAAE,IAAIf,GAAGsgB,EAAEzc,GAAG/C,EAAExB,EAAEmB,EAAEoB,EAAE4xB,EAAE/yB,EAAEG,EAAEE,OAAO,CAAC,IAAIgD,EAAElD,EAAEA,EAAEwC,EAAE/D,EAAEuC,GAAGgC,EAAEhC,EAAE,GAAGvC,EAAEmB,EAAEM,QAAG,OAAO,IAASgD,IAAIA,EAAEF,GAAGX,EAAE5D,EAAEuC,EAAEkC,EAAE,CAAE,GAAElC,EAAE,EAAEwzB,EAAE,CAApQ,GAAwQnyB,EAAE,WAAW,GAAGukF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIznF,EAAEm+E,KAAKj7E,EAAEmnF,KAAK,OAAO7C,GAAG,SAAS3jF,GAAG,OAAO7D,GAAC,SAAWA,EAAEc,GAAG,IAAIwf,GAAG,EAAEze,EAAEf,EAAEiB,OAAOsB,EAAExB,EAAE,EAAEf,EAAEe,EAAE,QAAG,EAAOnB,EAAEmB,EAAE,EAAEf,EAAE,QAAG,EAAO,IAAIuC,EAAEQ,EAAE9B,OAAO,GAAG,mBAAmBsB,GAAGxB,IAAIwB,QAAG,EAAO3C,GAAGwC,EAAEpC,EAAE,GAAGA,EAAE,GAAGJ,KAAK2C,EAAExB,EAAE,OAAE,EAAOwB,EAAExB,EAAE,GAAG7B,EAAEH,OAAOG,KAAKsgB,EAAEze,GAAG,CAAC,IAAIvC,EAAEwB,EAAEwf,GAAGhhB,GAAGuE,EAAE7D,EAAEV,EAAEghB,EAAEjd,EAAE,CAAC,OAAOrD,CAAE,GAAE,CAAC,CAAjT,IAAoT,SAAWkD,EAAEW,EAAE/C,GAAGd,EAAEkD,EAAEW,EAAE/C,EAAG,IAAG,OAAO4mF,GAAGxkF,CAAC,CAA7oB,GAAipB4L,IAAI,WAAW,GAAGi5E,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/nF,EAAE0qF,KAAKxnF,EAAE2nF,KAAKhnF,EAAEy3E,KAAK,OAAOwM,GAAG,SAAShnF,GAAG,OAAOA,GAAGA,EAAEiB,OAAO/B,EAAEc,EAAE+C,EAAEX,QAAG,CAAM,CAAC,CAAlH,GAAsHqoF,MAAM,WAAW,GAAGtD,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIjoF,EAAE0qF,KAAKxnF,EAAE+5E,KAAKp5E,EAAEgnF,KAAK,OAAO7C,GAAG,SAASlnF,EAAEwf,GAAG,OAAOxf,GAAGA,EAAEiB,OAAO/B,EAAEc,EAAEoC,EAAEod,EAAE,GAAGzc,QAAG,CAAM,CAAC,CAAzH,GAA6Hy2B,IAAI,WAAW,GAAG6tD,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAInoF,EAAEqiE,KAAK,OAAO6lB,GAAG,WAAW,OAAOloF,EAAEu6B,KAAKD,KAAK,CAAC,CAApF,GAAwFkxD,KAAK,WAAW,GAAG3C,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7oF,EAAE,WAAW,GAAGyoF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIzoF,EAAryI,WAAc,GAAGuoF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIvoF,EAAE68E,KAAK35E,EAAE,WAAW,GAAGmlF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIroF,EAAE2jE,KAAKzgE,EAAEq5E,KAAK14E,EAAEmhE,KAAKlkE,EAAE4hE,KAAKpiD,EAAEs8D,KAAK,OAAOwL,GAAG,SAASvmF,EAAEwB,EAAE3C,EAAEpB,GAAG,IAAIwB,EAAEe,GAAG,OAAOA,EAAE,IAAI,IAAIpB,GAAG,EAAEgzB,GAAGpwB,EAAEH,EAAEG,EAAExB,IAAIE,OAAOlB,EAAE4yB,EAAE,EAAE1yB,EAAEc,EAAE,MAAMd,KAAKN,EAAEgzB,GAAG,CAAC,IAAI1vB,EAAEuc,EAAEjd,EAAE5C,IAAId,EAAEe,EAAE,GAAG,cAAcqD,GAAG,gBAAgBA,GAAG,cAAcA,EAAE,OAAOlC,EAAE,GAAGpB,GAAGI,EAAE,CAAC,IAAIV,EAAEY,EAAEgD,QAAG,KAAUpE,EAAEL,EAAEA,EAAEa,EAAE4D,EAAEhD,QAAG,KAAUpB,EAAEmB,EAAEX,GAAGA,EAAE0D,EAAER,EAAE5C,EAAE,IAAI,GAAG,CAAE,EAAC,CAACT,EAAEe,EAAEgD,EAAEpE,GAAGoB,EAAEA,EAAEgD,EAAE,CAAC,OAAOlC,CAAC,CAAC,CAA3W,GAA+WgC,EAAE04E,KAAK,OAAO+L,GAAG,SAASxnF,EAAEwf,EAAEze,GAAG,IAAI,IAAIwB,GAAG,EAAE3C,EAAE4f,EAAEve,OAAOzC,EAAE,CAAA,IAAK+D,EAAE3C,GAAG,CAAC,IAAID,EAAE6f,EAAEjd,GAAGowB,EAAEzzB,EAAEc,EAAEL,GAAGoB,EAAE4xB,EAAEhzB,IAAIyC,EAAE5D,EAAEuE,EAAEpD,EAAEK,GAAG2yB,EAAE,CAAC,OAAOn0B,CAAC,CAAC,CAA+wHmsF,GAAKvoF,EAAE65E,KAAK,OAAOyL,GAAG,SAAS3kF,EAAE/C,GAAG,OAAOd,EAAE6D,EAAE/C,YAAYd,EAAEc,GAAG,OAAOoC,EAAEW,EAAE/C,EAAG,GAAE,CAAC,CAAvH,GAA2HoC,EAAE,WAAW,GAAGylF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI3oF,EAAEyqF,KAAKvnF,EAAE+6E,KAAKp6E,EAAEq6E,KAAK,OAAOwK,GAAG,SAAS5nF,GAAG,OAAO+C,EAAEX,EAAEpC,OAAE,EAAOd,GAAGc,EAAE,GAAG,CAAC,CAA5G,IAAiH,SAASoC,EAAEW,GAAG,OAAO,MAAMX,EAAE,CAAE,EAAClD,EAAEkD,EAAEW,EAAG,IAAG,OAAO+kF,GAAG1lF,CAAC,CAAzU,GAA6U69B,MAAM,WAAW,GAAGooD,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAInpF,EAAzjI,WAAc,GAAGipF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIjpF,EAAE,WAAW,GAAG+oF,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI/oF,EAAEoO,KAAK6C,KAAK/N,EAAEkL,KAAKO,IAAI,OAAOm6E,GAAG,SAASjlF,EAAE/C,EAAEwf,EAAEze,GAAG,IAAI,IAAIwB,GAAG,EAAE3C,EAAEwC,EAAElD,GAAGc,EAAE+C,IAAIyc,GAAG,IAAI,GAAGhhB,EAAE6C,MAAMzB,GAAGA,KAAKpB,EAAEuC,EAAEnB,IAAI2C,GAAGQ,EAAEA,GAAGyc,EAAE,OAAOhhB,CAAC,CAAC,CAAtK,GAA0K4D,EAAEmnF,KAAKxmF,EAAEymF,KAAK,OAAOtB,GAAG,SAASloF,GAAG,OAAO,SAASwf,EAAEze,EAAEwB,GAAG,OAAOA,GAAG,iBAAiBA,GAAGH,EAAEod,EAAEze,EAAEwB,KAAKxB,EAAEwB,OAAE,GAAQid,EAAEzc,EAAEyc,QAAG,IAASze,GAAGA,EAAEye,EAAEA,EAAE,GAAGze,EAAEgC,EAAEhC,GAAGwB,OAAE,IAASA,EAAEid,EAAEze,EAAE,GAAG,EAAEgC,EAAER,GAAGrD,EAAEsgB,EAAEze,EAAEwB,EAAEvC,EAAE,CAAC,CAAC,CAA8qH4qF,KAAO,OAAOxC,GAAGlpF,CAAC,CAAxD,GAA4DgW,OAAO2nE,KAAKgO,OAAO,WAAW,GAAG9B,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAI7pF,EAAE+9E,KAAK76E,EAAE4nF,KAAKjnF,EAAEs6E,KAAKr9E,EAAEupF,KAAK/pE,EAAEzc,GAAC,SAAWA,EAAEyc,GAAG,GAAG,MAAMzc,EAAE,MAAM,GAAG,IAAIhC,EAAEye,EAAEve,OAAO,OAAOF,EAAE,GAAGf,EAAE+C,EAAEyc,EAAE,GAAGA,EAAE,IAAIA,EAAE,GAAGze,EAAE,GAAGf,EAAEwf,EAAE,GAAGA,EAAE,GAAGA,EAAE,MAAMA,EAAE,CAACA,EAAE,KAAKpd,EAAEW,EAAE7D,EAAEsgB,EAAE,GAAG,GAAI,IAAG,OAAOspE,GAAGtpE,CAAC,CAAtN,GAA0NsrE,SAAS,WAAW,GAAGtkF,GAAG,OAAOwiF,GAAGxiF,GAAG,EAAE,IAAItH,EAAEs8E,KAAKp5E,EAAE,EAAE,OAAO4mF,GAAG,SAASjmF,GAAG,IAAI/C,IAAIoC,EAAE,OAAOlD,EAAE6D,GAAG/C,CAAC,CAAC,CAA7F,GAAiGi+E,OAAOL,KAAKmN,UAAU,WAAW,GAAG3B,GAAG,OAAOD,GAAGC,GAAG,EAAE,IAAIlqF,EAAE2jE,KAAKzgE,EAAE8mF,GAAGD,IAAIC,GAAG,EAAED,GAAG,SAAS/pF,EAAEkD,EAAEW,GAAG,IAAI,IAAI/C,GAAG,EAAEwf,EAAEtgB,EAAE+B,OAAOF,EAAEqB,EAAEnB,OAAOsB,EAAE,CAAA,IAAKvC,EAAEwf,GAAG,CAAC,IAAI5f,EAAEI,EAAEe,EAAEqB,EAAEpC,QAAG,EAAO+C,EAAER,EAAErD,EAAEc,GAAGJ,EAAE,CAAC,OAAO2C,CAAC,GAAG,OAAO4mF,GAAG,SAASpmF,EAAE/C,GAAG,OAAOoC,EAAEW,GAAG,GAAG/C,GAAG,GAAGd,EAAE,CAAC,CAAzN,GAA6N,CAAC,MAAMA,IAAE,CAAEmqF,KAAKA,GAAGxnF,OAAOyV,GAAG,IAAI0zE,GAAG3B,GAAG4B,GAAGC,GAAG,SAASA,KAAK,IAAIhsF,EAAE,CAAE,EAACA,EAAEwb,MAAMxb,EAAEisF,MAAMjsF,EAAEuY,KAAK2zE,UAAUlsF,CAAC,CAAC,SAASmsF,GAAGnsF,GAAGA,EAAEisF,MAAMzwE,MAAMxb,EAAEwb,MAAMxb,EAAEwb,MAAMywE,MAAMjsF,EAAEisF,aAAajsF,EAAEwb,aAAaxb,EAAEisF,KAAK,CAAC,SAASG,GAAGpsF,EAAEkD,GAAG,GAAG,UAAUlD,GAAG,UAAUA,EAAE,OAAOkD,CAAC,CAAC8oF,GAAGlsF,UAAUusF,QAAQ,WAAW,IAAIrsF,EAAEuY,KAAK2zE,UAAUhpF,EAAElD,EAAEisF,MAAM,GAAG/oF,IAAIlD,EAAE,OAAOmsF,GAAGjpF,GAAGA,CAAC,EAAE8oF,GAAGlsF,UAAUwsF,QAAQ,SAAStsF,GAAG,IAAIkD,EAAEqV,KAAK2zE,UAAUlsF,EAAEisF,OAAOjsF,EAAEwb,OAAO2wE,GAAGnsF,GAAGA,EAAEwb,MAAMtY,EAAEsY,MAAMtY,EAAEsY,MAAMywE,MAAMjsF,EAAEkD,EAAEsY,MAAMxb,EAAEA,EAAEisF,MAAM/oF,CAAC,EAAE8oF,GAAGlsF,UAAUyC,SAAS,WAAW,IAAI,IAAIvC,EAAE,GAAGkD,EAAEqV,KAAK2zE,UAAUroF,EAAEX,EAAE+oF,MAAMpoF,IAAIX,GAAGlD,EAAEkC,KAAKqqF,KAAKC,UAAU3oF,EAAEuoF,KAAKvoF,EAAEA,EAAEooF,MAAM,MAAM,IAAIjsF,EAAEwC,KAAK,MAAM,GAAG,EAAE,IAAIiqF,GAAGX,GAAGY,GAAGtC,GAAG1G,MAAMiJ,GAAGZ,GAAi0Ba,GAAGH,GAAGrpE,SAAS,GAAG,SAASypE,GAAG7sF,EAAEkD,EAAEW,EAAE/C,EAAEwf,GAAG,IAAIze,EAAEye,EAAE,QAAG,EAAO,OAAOmsE,GAAGznF,QAAQhF,EAAE8hF,QAAQhhF,EAAEiD,IAAI,SAASjD,GAAG,IAAIuC,EAAErD,EAAE+L,KAAKjL,GAAGJ,EAAEV,EAAEwJ,KAAK1I,EAAEiD,GAAGuc,GAAGze,EAAEK,KAAK,CAAC6B,EAAEjD,EAAEiD,EAAEE,EAAEnD,EAAEmD,IAAIvD,EAAEosF,KAAKzpF,EAAE0pF,GAAG7pF,EAAEW,EAAEnD,EAAG,IAAG+rF,GAAGznF,QAAQhF,EAAE+hF,SAASjhF,EAAEiD,IAAI,SAASjD,GAAG,IAAIwf,EAAEtgB,EAAE+L,KAAKjL,GAAGe,EAAEf,EAAEmD,EAAEZ,EAAErD,EAAEwJ,KAAK3H,GAAGwB,EAAE2pF,IAAI1sE,EAAEysE,GAAG7pF,EAAEW,EAAER,EAAG,IAAGrD,EAAE+gF,WAAWjgF,EAAEiD,GAAGlC,CAAC,CAAC,SAASkrF,GAAG/sF,EAAEkD,EAAEW,GAAGA,EAAEipF,IAAIjpF,EAAEmpF,GAAGhtF,EAAE6D,EAAEipF,IAAIjpF,EAAEmpF,GAAG9pF,GAAGopF,QAAQzoF,GAAG7D,EAAEA,EAAE+B,OAAO,GAAGuqF,QAAQzoF,GAAG7D,EAAE,GAAGssF,QAAQzoF,EAAE,CAAC,IAAIopF,GAAGnB,GAAGoB,GAAhtC,SAASltF,EAAEkD,GAAG,GAAGlD,EAAE0gF,aAAa,EAAE,MAAM,GAAG,IAAI78E,EAAE,SAAS7D,EAAEkD,GAAG,IAAIW,EAAE,IAAI6oF,GAAG5rF,EAAE,EAAEwf,EAAE,EAAEmsE,GAAGznF,QAAQhF,EAAE2M,SAAS,SAAS3M,GAAG6D,EAAEg9E,QAAQ7gF,EAAE,CAAC+D,EAAE/D,EAAEgtF,GAAG,EAAEF,IAAI,GAAI,IAAGL,GAAGznF,QAAQhF,EAAE4L,SAAO,SAAW5L,GAAG,IAAI6B,EAAEgC,EAAEkI,KAAK/L,EAAE+D,EAAE/D,EAAEiE,IAAI,EAAEZ,EAAEH,EAAElD,GAAGU,EAAEmB,EAAEwB,EAAEQ,EAAE29E,QAAQxhF,EAAE+D,EAAE/D,EAAEiE,EAAEvD,GAAG4f,EAAElS,KAAKO,IAAI2R,EAAEzc,EAAE2F,KAAKxJ,EAAE+D,GAAG+oF,KAAKzpF,GAAGvC,EAAEsN,KAAKO,IAAI7N,EAAE+C,EAAE2F,KAAKxJ,EAAEiE,GAAG+oF,IAAI3pF,EAAG,IAAG,IAAIxB,EAAE4qF,GAAG1rD,MAAMzgB,EAAExf,EAAE,GAAGkU,KAAK,WAAW,OAAO,IAAI23E,EAAG,IAAGtpF,EAAEvC,EAAE,EAAE,OAAO2rF,GAAGznF,QAAQnB,EAAE8I,kBAAkB3M,GAAG+sF,GAAGlrF,EAAEwB,EAAEQ,EAAE2F,KAAKxJ,GAAI,IAAG,CAACwgF,MAAM38E,EAAEspF,QAAQtrF,EAAEurF,QAAQ/pF,EAAE,CAA/Z,CAAiarD,EAAEkD,GAAG0pF,IAAI9rF,EAAE,SAASd,EAAEkD,EAAEW,GAAqC,IAAlC,IAAI/C,EAAEwf,EAAE,GAAGze,EAAEqB,EAAEA,EAAEnB,OAAO,GAAGsB,EAAEH,EAAE,GAAQlD,EAAE0gF,aAAa,CAAC,KAAK5/E,EAAEuC,EAAEgpF,WAAWQ,GAAG7sF,EAAEkD,EAAEW,EAAE/C,GAAG,KAAKA,EAAEe,EAAEwqF,WAAWQ,GAAG7sF,EAAEkD,EAAEW,EAAE/C,GAAG,GAAGd,EAAE0gF,YAAY,IAAI,IAAIhgF,EAAEwC,EAAEnB,OAAO,EAAErB,EAAE,IAAIA,EAAE,GAAGI,EAAEoC,EAAExC,GAAG2rF,UAAU,CAAC/rE,EAAEA,EAAErZ,OAAO4lF,GAAG7sF,EAAEkD,EAAEW,EAAE/C,GAAE,IAAK,KAAK,CAAC,CAAC,OAAOwf,CAAC,CAApP,CAAsPzc,EAAE28E,MAAM38E,EAAEspF,QAAQtpF,EAAEupF,SAAS,OAAOX,GAAGtB,QAAQsB,GAAGz3E,IAAIlU,GAAC,SAAWoC,GAAG,OAAOlD,EAAE+hF,SAAS7+E,EAAEa,EAAEb,EAAEe,EAAG,KAAG,EAAG,EAA6ZopF,GAAG,CAACC,IAAI,SAASttF,GAAG,IAAIkD,EAAE,WAAWlD,EAAEwgF,QAAQ+M,UAAUL,GAAGltF,EAAE,SAASA,GAAG,OAAO,SAASkD,GAAG,OAAOlD,EAAE+L,KAAK7I,GAAGsqF,MAAM,CAAC,CAAvD,CAAyDxtF,IAAI,SAASA,GAAG,IAAIkD,EAAE,GAAGW,EAAE,CAAA,EAAG/C,EAAE,CAAE,EAAkI,OAAOmsF,GAAGjoF,QAAQhF,EAAE2M,SAArJ,SAAS2T,EAAEze,GAAGorF,GAAGtjF,IAAI7I,EAAEe,KAAKf,EAAEe,IAAG,EAAGgC,EAAEhC,IAAG,EAAGorF,GAAGjoF,QAAQhF,EAAE+hF,SAASlgF,IAAI,SAAS7B,GAAGitF,GAAGtjF,IAAI9F,EAAE7D,EAAEiE,GAAGf,EAAEhB,KAAKlC,GAAGsgB,EAAEtgB,EAAEiE,EAAG,WAAUJ,EAAEhC,GAAG,IAAgCqB,CAAC,CAAhM,CAAkMlD,GAAGitF,GAAGjoF,QAAQ9B,GAAC,SAAWA,GAAG,IAAIW,EAAE7D,EAAE+L,KAAK7I,GAAGlD,EAAEghF,WAAW99E,GAAGW,EAAE4pF,YAAYvqF,EAAEsV,KAAK3U,EAAE6pF,UAAS,EAAG1tF,EAAEwhF,QAAQt+E,EAAEe,EAAEf,EAAEa,EAAEF,EAAEopF,GAAGrB,SAAS,OAAQ,GAAE,EAAE+B,KAAK,SAAS3tF,GAAGitF,GAAGjoF,QAAQhF,EAAE4L,kBAAkB1I,GAAG,IAAIW,EAAE7D,EAAE+L,KAAK7I,GAAG,GAAGW,EAAE6pF,SAAS,CAAC1tF,EAAEghF,WAAW99E,GAAG,IAAIpC,EAAE+C,EAAE4pF,mBAAmB5pF,EAAE6pF,gBAAgB7pF,EAAE4pF,YAAYztF,EAAEwhF,QAAQt+E,EAAEe,EAAEf,EAAEa,EAAEF,EAAE/C,EAAE,CAAE,GAAE,GAAO8sF,GAAG9B,GAAG+B,GAAGzD,GAAG1G,MAAMoK,GAAG,CAACC,aAAaC,GAAGC,SAAS,SAASjuF,GAAG,IAAIkD,GAAE,IAAK2qF,IAAItN,SAASvgF,EAAEwgF,SAAS,OAAOoN,GAAG5oF,QAAQhF,EAAE2M,kBAAkB9I,GAAGX,EAAE29E,QAAQh9E,EAAE7D,EAAEwJ,KAAK3F,GAAI,IAAG+pF,GAAG5oF,QAAQhF,EAAE4L,SAAO,SAAW/H,GAAG,IAAI/C,EAAEoC,EAAE6I,KAAKlI,EAAEE,EAAEF,EAAEI,IAAI,CAACupF,OAAO,EAAEU,OAAO,GAAG5tE,EAAEtgB,EAAE+L,KAAKlI,GAAGX,EAAEs+E,QAAQ39E,EAAEE,EAAEF,EAAEI,EAAE,CAACupF,OAAO1sF,EAAE0sF,OAAOltE,EAAEktE,OAAOU,OAAO9/E,KAAKO,IAAI7N,EAAEotF,OAAO5tE,EAAE4tE,SAAU,IAAGhrF,CAAC,EAAEirF,mBAAmB,SAASnuF,GAAG,IAAIkD,EAAE,IAAI2qF,GAAG,CAACzO,WAAWp/E,EAAEqgF,iBAAiBE,SAASvgF,EAAEwgF,SAAS,OAAOoN,GAAG5oF,QAAQhF,EAAE2M,SAAO,SAAW9I,GAAG7D,EAAEsN,SAASzJ,GAAG9B,QAAQmB,EAAE29E,QAAQh9E,EAAE7D,EAAEwJ,KAAK3F,GAAI,IAAG+pF,GAAG5oF,QAAQhF,EAAE4L,kBAAkB/H,GAAGX,EAAEs+E,QAAQ39E,EAAE7D,EAAE+L,KAAKlI,GAAI,IAAGX,CAAC,EAAEkrF,iBAAiB,SAASpuF,GAAG,IAAIkD,EAAE0qF,GAAG54E,IAAIhV,EAAE2M,SAAS,SAASzJ,GAAG,IAAIW,EAAE,CAAA,EAAG,OAAO+pF,GAAG5oF,QAAQhF,EAAE+hF,SAAS7+E,IAAE,SAAWA,GAAGW,EAAEX,EAAEe,IAAIJ,EAAEX,EAAEe,IAAI,GAAGjE,EAAE+L,KAAK7I,GAAGsqF,MAAO,IAAG3pF,CAAE,IAAG,OAAO+pF,GAAG/B,UAAU7rF,EAAE2M,QAAQzJ,EAAE,EAAEmrF,mBAAmB,SAASruF,GAAG,IAAIkD,EAAE0qF,GAAG54E,IAAIhV,EAAE2M,kBAAkBzJ,GAAG,IAAIW,EAAE,CAAE,EAAC,OAAO+pF,GAAG5oF,QAAQhF,EAAE8hF,QAAQ5+E,IAAI,SAASA,GAAGW,EAAEX,EAAEa,IAAIF,EAAEX,EAAEa,IAAI,GAAG/D,EAAE+L,KAAK7I,GAAGsqF,MAAO,IAAG3pF,CAAE,IAAG,OAAO+pF,GAAG/B,UAAU7rF,EAAE2M,QAAQzJ,EAAE,EAAEorF,cAAc,SAAStuF,EAAEkD,GAAG,IAAIW,EAAE/C,EAAEwf,EAAEtgB,EAAEwK,EAAE3I,EAAE7B,EAAEyK,EAAEpH,EAAEH,EAAEsH,EAAE8V,EAAE5f,EAAEwC,EAAEuH,EAAE5I,EAAEvC,EAAEU,EAAEqL,MAAM,EAAE5K,EAAET,EAAEsL,OAAO,EAAE,IAAIjI,IAAI3C,EAAE,MAAM,IAAIgI,MAAM,6DAA6I,OAAhF0F,KAAKE,IAAI5N,GAAGpB,EAAE8O,KAAKE,IAAIjL,GAAG5C,GAAGC,EAAE,IAAID,GAAGA,GAAGoD,EAAEpD,EAAE4C,EAAE3C,EAAEI,EAAEL,IAAI4C,EAAE,IAAI/D,GAAGA,GAAGuE,EAAEvE,EAAEwB,EAAExB,EAAEoB,EAAE2C,GAAS,CAACmH,EAAE8V,EAAEzc,EAAE4G,EAAE5I,EAAEf,EAAE,EAAEytF,iBAAiB,SAASvuF,GAAG,IAAIkD,EAAE0qF,GAAG54E,IAAI44E,GAAG7sD,MAAMytD,GAAGxuF,GAAG,IAAI,WAAW,MAAM,EAAG,IAAG,OAAO4tF,GAAG5oF,QAAQhF,EAAE2M,SAAS,SAAS9I,GAAG,IAAI/C,EAAEd,EAAEwJ,KAAK3F,GAAGyc,EAAExf,EAAE2tF,KAAKb,GAAG/O,YAAYv+D,KAAKpd,EAAEod,GAAGxf,EAAEmjB,OAAOpgB,EAAG,IAAGX,CAAC,EAAEwrF,eAAe,SAAS1uF,GAAG,IAAIkD,EAAE0qF,GAAG9+E,IAAI8+E,GAAG54E,IAAIhV,EAAE2M,kBAAkBzJ,GAAG,OAAOlD,EAAEwJ,KAAKtG,GAAGurF,IAAK,KAAIb,GAAG5oF,QAAQhF,EAAE2M,SAAS,SAAS9I,GAAG,IAAI/C,EAAEd,EAAEwJ,KAAK3F,GAAG+pF,GAAGjkF,IAAI7I,EAAE,UAAUA,EAAE2tF,MAAMvrF,EAAG,GAAE,EAAEyrF,iBAAiB,SAAS3uF,GAAG,IAAIkD,EAAE0qF,GAAG9+E,IAAI8+E,GAAG54E,IAAIhV,EAAE2M,SAAS,SAASzJ,GAAG,OAAOlD,EAAEwJ,KAAKtG,GAAGurF,IAAK,KAAI5qF,EAAE,GAAG+pF,GAAG5oF,QAAQhF,EAAE2M,SAAS,SAAS7L,GAAG,IAAIwf,EAAEtgB,EAAEwJ,KAAK1I,GAAG2tF,KAAKvrF,EAAEW,EAAEyc,KAAKzc,EAAEyc,GAAG,IAAIzc,EAAEyc,GAAGpe,KAAKpB,EAAG,IAAG,IAAIA,EAAE,EAAEwf,EAAEtgB,EAAEwgF,QAAQoO,eAAehB,GAAG5oF,QAAQnB,GAAG,SAASX,EAAEW,GAAG+pF,GAAG/O,YAAY37E,IAAIW,EAAEyc,GAAG,IAAIxf,EAAEA,GAAG8sF,GAAG5oF,QAAQ9B,GAAG,SAASA,GAAGlD,EAAEwJ,KAAKtG,GAAGurF,MAAM3tF,CAAE,GAAG,GAAE,EAAE+tF,cAAc,SAAS7uF,EAAEkD,EAAEW,EAAE/C,GAAG,IAAIwf,EAAE,CAACjV,MAAM,EAAEC,OAAO,GAA6C,OAA1CxJ,UAAUC,QAAQ,IAAIue,EAAEmuE,KAAK5qF,EAAEyc,EAAE2D,MAAMnjB,GAAUktF,GAAGhuF,EAAE,SAASsgB,EAAEpd,EAAE,EAAE4rF,QAAQN,GAAGO,UAAU,SAAS/uF,EAAEkD,GAAG,IAAIW,EAAE,CAACmrF,IAAI,GAAGC,IAAI,IAAI,OAAOrB,GAAG5oF,QAAQhF,GAAC,SAAWA,GAAGkD,EAAElD,GAAG6D,EAAEmrF,IAAI9sF,KAAKlC,GAAG6D,EAAEorF,IAAI/sF,KAAKlC,EAAG,IAAG6D,CAAC,EAAEm3B,KAAK,SAASh7B,EAAEkD,GAAG,IAAIW,EAAE+pF,GAAGtzD,MAAM,IAAI,OAAOp3B,GAAG,CAAC,QAAQwC,QAAQszB,IAAIh5B,EAAE,WAAW4tF,GAAGtzD,MAAMz2B,GAAG,KAAK,CAAC,EAAEqrF,OAAO,SAASlvF,EAAEkD,GAAG,OAAOA,GAAG,GAAG,SAAS8qF,GAAGhuF,EAAEkD,EAAEW,EAAE/C,GAAG,IAAIwf,EAAE,GAAGA,EAAEstE,GAAGhC,SAAS9qF,SAASd,EAAE8gF,QAAQxgE,IAAI,OAAOzc,EAAEsrF,MAAMjsF,EAAElD,EAAE6gF,QAAQvgE,EAAEzc,GAAGyc,CAAC,CAAC,SAASkuE,GAAGxuF,GAAG,OAAO4tF,GAAGj/E,IAAIi/E,GAAG54E,IAAIhV,EAAE2M,kBAAkBzJ,GAAG,IAAIW,EAAE7D,EAAEwJ,KAAKtG,GAAGurF,KAAK,IAAIb,GAAG/O,YAAYh7E,GAAG,OAAOA,CAAE,IAAG,CAAC,IAAIurF,GAAGtD,GAAGuD,GAAGvB,GAAGwB,GAAG,CAAChC,IAAI,SAASttF,GAAGA,EAAEwgF,QAAQ+O,YAAY,GAAGH,GAAGpqF,QAAQhF,EAAE4L,SAAO,SAAW1I,IAAI,SAASlD,EAAEkD,GAAG,IAAIW,EAAE/C,EAAEwf,EAAEze,EAAEqB,EAAEa,EAAEV,EAAErD,EAAEwJ,KAAK3H,GAAG4sF,KAAK/tF,EAAEwC,EAAEe,EAAE3E,EAAEU,EAAEwJ,KAAK9I,GAAG+tF,KAAKhuF,EAAEyC,EAAEsV,KAAKib,EAAEzzB,EAAE+L,KAAK7I,GAAGrC,EAAE4yB,EAAE+7D,UAAU,GAAGlwF,IAAI+D,EAAE,EAAT,CAAkB,IAAIrD,EAAEghF,WAAW99E,GAAGod,EAAE,IAAIjd,EAAEA,EAAE/D,IAAIghB,IAAIjd,EAAEowB,EAAEwrB,OAAO,GAAGn+C,EAAE,CAACuK,MAAM,EAAEC,OAAO,EAAEmkF,UAAUh8D,EAAEi8D,QAAQxsF,EAAEurF,KAAKprF,GAAGQ,EAAEwrF,GAAGtB,aAAa/tF,EAAE,OAAOc,EAAE,MAAMuC,IAAIxC,IAAIC,EAAEuK,MAAMooB,EAAEpoB,MAAMvK,EAAEwK,OAAOmoB,EAAEnoB,OAAOxK,EAAEquF,MAAM,aAAaruF,EAAE6uF,SAASl8D,EAAEk8D,UAAU3vF,EAAEwhF,QAAQ3/E,EAAEgC,EAAE,CAAC2pF,OAAO/5D,EAAE+5D,QAAQ/sF,GAAG,IAAI6f,GAAGtgB,EAAEwgF,QAAQ+O,YAAYrtF,KAAK2B,GAAGhC,EAAEgC,EAAE7D,EAAEwhF,QAAQ3/E,EAAEnB,EAAE,CAAC8sF,OAAO/5D,EAAE+5D,QAAQ/sF,EAA3U,CAA6U,CAAxc,CAA0cT,EAAEkD,EAAG,GAAE,EAAEyqF,KAAK,SAAS3tF,GAAGovF,GAAGpqF,QAAQhF,EAAEwgF,QAAQ+O,aAAa,SAASrsF,GAAG,IAAIW,EAAE/C,EAAEd,EAAEwJ,KAAKtG,GAAGod,EAAExf,EAAE2uF,UAAU,IAAIzvF,EAAEwhF,QAAQ1gF,EAAE4uF,QAAQpvE,GAAGxf,EAAEquF,OAAOtrF,EAAE7D,EAAEohF,WAAWl+E,GAAG,GAAGlD,EAAE+gF,WAAW79E,GAAGod,EAAE2+B,OAAO/8C,KAAK,CAACsI,EAAE1J,EAAE0J,EAAEC,EAAE3J,EAAE2J,IAAI,eAAe3J,EAAEquF,QAAQ7uE,EAAE9V,EAAE1J,EAAE0J,EAAE8V,EAAE7V,EAAE3J,EAAE2J,EAAE6V,EAAEjV,MAAMvK,EAAEuK,MAAMiV,EAAEhV,OAAOxK,EAAEwK,QAAQpI,EAAEW,EAAE/C,EAAEd,EAAEwJ,KAAKtG,EAAG,GAAE,GAAO0sF,GAAG9D,GAAG+D,GAAgB,SAAS7vF,GAAG,IAAIkD,EAAE,CAAE,EAAC0sF,GAAG5qF,QAAQhF,EAAE2gF,WAAW,SAAS98E,EAAE/C,GAAG,IAAIwf,EAAEtgB,EAAEwJ,KAAK1I,GAAG,GAAG8uF,GAAGjmF,IAAIzG,EAAEpC,GAAG,OAAOwf,EAAEmuE,KAAKvrF,EAAEpC,IAAG,EAAG,IAAIe,EAAE+tF,GAAG9gF,IAAI8gF,GAAG56E,IAAIhV,EAAE+hF,SAASjhF,aAAaoC,GAAG,OAAOW,EAAEX,EAAEe,GAAGjE,EAAE+L,KAAK7I,GAAGgrF,MAAO,KAAI,OAAOrsF,IAAIqG,OAAOE,mBAAmB,MAAMvG,IAAIA,EAAE,GAAGye,EAAEmuE,KAAK5sF,CAAE,GAAE,EAAjRguF,GAAyR,SAAS7vF,EAAEkD,GAAG,OAAOlD,EAAEwJ,KAAKtG,EAAEe,GAAGwqF,KAAKzuF,EAAEwJ,KAAKtG,EAAEa,GAAG0qF,KAAKzuF,EAAE+L,KAAK7I,GAAGgrF,MAAM,EAAO4B,GAAGhE,GAAGiE,GAAG3F,GAAG1G,MAAMsM,GAAGH,GAASI,GAAG,SAASjwF,GAAG,IAAIkD,EAAEW,EAAE/C,EAAE,IAAIivF,GAAG,CAAC7Q,UAAS,IAAK5+D,EAAEtgB,EAAE2M,QAAQ,GAAG9K,EAAE7B,EAAE0gF,YAA4B,IAAhB5/E,EAAE+/E,QAAQvgE,EAAE,CAAE,GAAO4vE,GAAGpvF,EAAEd,GAAG6B,GAAGqB,EAAEitF,GAAGrvF,EAAEd,GAAG6D,EAAE/C,EAAEggF,QAAQ59E,EAAEa,GAAGisF,GAAGhwF,EAAEkD,IAAI8sF,GAAGhwF,EAAEkD,GAAGktF,GAAGtvF,EAAEd,EAAE6D,GAAG,OAAO/C,CAAC,EAAE,SAASovF,GAAGlwF,EAAEkD,GAAG,OAAO4sF,GAAG9qF,QAAQhF,EAAE2M,SAAO,SAAW9I,EAAE/C,GAAGgvF,GAAG9qF,QAAQ9B,EAAE8+E,UAAUlhF,IAAI,SAASwf,GAAG,IAAIze,EAAEye,EAAEvc,EAAEV,EAAEvC,IAAIe,EAAEye,EAAErc,EAAEpC,EAAE7B,EAAE8gF,QAAQz9E,IAAI2sF,GAAG9sF,EAAEod,KAAKtgB,EAAE6gF,QAAQx9E,EAAE,IAAIrD,EAAEwhF,QAAQ1gF,EAAEuC,EAAE,CAAE,GAAEQ,EAAER,GAAI,GAAG,IAAGrD,EAAE0gF,WAAW,CAAC,SAASyP,GAAGnwF,EAAEkD,GAAG,OAAO4sF,GAAGvE,MAAMroF,EAAE0I,SAAS,SAAS/H,GAAG,GAAG7D,EAAE8gF,QAAQj9E,EAAEE,KAAK/D,EAAE8gF,QAAQj9E,EAAEI,GAAG,OAAO+rF,GAAG9sF,EAAEW,EAAG,GAAE,CAAC,SAASusF,GAAGpwF,EAAEkD,EAAEW,GAAGisF,GAAG9qF,QAAQhF,EAAE2M,SAAO,SAAW3M,GAAGkD,EAAEsG,KAAKxJ,GAAGyuF,MAAM5qF,CAAE,GAAE,CAAC,IAAIwsF,GAAGvE,GAAGwE,GAAGL,GAAGM,GAAGV,GAASW,GAAGX,GAAeY,GAAGrG,GAAGvG,IAAIQ,SAASqM,GAAGtG,GAAGvG,IAAIO,UAAUuM,GAAG7C,GAAGG,SAAS2C,GAAGC,GAAG,SAASA,GAAG7wF,GAAGA,EAAE2wF,GAAG3wF,GAAGwwF,GAAGxwF,GAAG,IAAIkD,EAAEW,EAAEysF,GAAGtwF,GAAG,IAAI8wF,GAAGjtF,GAAGktF,GAAGltF,EAAE7D,GAAGkD,EAAE8tF,GAAGntF,IAAIotF,GAAGptF,EAAE7D,EAAEkD,EAAEguF,GAAGrtF,EAAE7D,EAAEkD,GAAG,CAAC,SAAS6tF,GAAG/wF,EAAEkD,GAAG,IAAIW,EAAE6sF,GAAG1wF,EAAEA,EAAE2M,SAAS9I,EAAEA,EAAEsC,MAAM,EAAEtC,EAAE9B,OAAO,GAAGsuF,GAAGrrF,QAAQnB,GAAC,SAAWA,IAAI,SAAS7D,EAAEkD,EAAEW,GAAG,IAAgByc,EAAVtgB,EAAEwJ,KAAK3F,GAAOkH,OAAO/K,EAAE+L,KAAKlI,EAAEyc,GAAG6wE,SAASC,GAAGpxF,EAAEkD,EAAEW,EAAE,CAAzE,CAA2E7D,EAAEkD,EAAEW,EAAG,GAAE,CAAC,SAASutF,GAAGpxF,EAAEkD,EAAEW,GAAG,IAAI/C,EAAEd,EAAEwJ,KAAK3F,GAAGkH,OAAOuV,GAAE,EAAGze,EAAEqB,EAAE6I,KAAKlI,EAAE/C,GAAGuC,EAAE,EAAE,OAAOxB,IAAIye,GAAE,EAAGze,EAAEqB,EAAE6I,KAAKjL,EAAE+C,IAAIR,EAAExB,EAAE2rF,OAAO6C,GAAGrrF,QAAQ9B,EAAE8+E,UAAUn+E,IAAE,SAAWhC,GAAG,IAAInB,EAAEpB,EAAEmB,EAAEoB,EAAEkC,IAAIF,EAAE4vB,EAAEhzB,EAAEoB,EAAEoC,EAAEpC,EAAEkC,EAAE,GAAG0vB,IAAI3yB,EAAE,CAAC,IAAID,EAAEJ,IAAI6f,EAAEvf,EAAEmC,EAAE6I,KAAKlK,GAAG2rF,OAAO,GAAGnqF,GAAGxC,EAAEE,GAAGA,EAAEL,EAAEmD,EAAEvE,EAAEm0B,EAAEzzB,EAAE6hF,QAAQnhF,EAAEpB,GAAG,CAAC,IAAIyE,EAAE/D,EAAE+L,KAAKlI,EAAE4vB,GAAG09D,SAAS9tF,GAAGxC,GAAGkD,EAAEA,CAAC,CAAC,CAAE,IAAGV,CAAC,CAAC,SAASytF,GAAG9wF,EAAEkD,GAAGpB,UAAUC,OAAO,IAAImB,EAAElD,EAAE2M,QAAQ,IAAI0kF,GAAGrxF,EAAE,CAAE,EAAC,EAAEkD,EAAE,CAAC,SAASmuF,GAAGrxF,EAAEkD,EAAEW,EAAE/C,EAAEwf,GAAG,IAAIze,EAAEgC,EAAER,EAAErD,EAAEwJ,KAAK1I,GAAG,OAAOoC,EAAEpC,IAAG,EAAGuvF,GAAGrrF,QAAQhF,EAAEqhF,UAAUvgF,aAAawf,GAAG+vE,GAAG1mF,IAAIzG,EAAEod,KAAKzc,EAAEwtF,GAAGrxF,EAAEkD,EAAEW,EAAEyc,EAAExf,GAAI,IAAGuC,EAAEiuF,IAAIzvF,EAAEwB,EAAEkuF,IAAI1tF,IAAIyc,EAAEjd,EAAE0H,OAAOuV,SAASjd,EAAE0H,OAAOlH,CAAC,CAAC,SAASmtF,GAAGhxF,GAAG,OAAOqwF,GAAGp1E,KAAKjb,EAAE4L,kBAAkB1I,GAAG,OAAOlD,EAAE+L,KAAK7I,GAAGiuF,SAAS,CAAE,GAAE,CAAC,SAASD,GAAGlxF,EAAEkD,EAAEW,GAAG,IAAI/C,EAAE+C,EAAEE,EAAEuc,EAAEzc,EAAEI,EAAEf,EAAE2+E,QAAQ/gF,EAAEwf,KAAKxf,EAAE+C,EAAEI,EAAEqc,EAAEzc,EAAEE,GAAG,IAAIlC,EAAE7B,EAAEwJ,KAAK1I,GAAGuC,EAAErD,EAAEwJ,KAAK8W,GAAG5f,EAAEmB,EAAEvC,GAAE,EAAGuC,EAAE0vF,IAAIluF,EAAEkuF,MAAM7wF,EAAE2C,EAAE/D,GAAE,GAAI,IAAImB,EAAE4vF,GAAGz6E,OAAO1S,EAAE0I,kBAAkB1I,GAAG,OAAO5D,IAAI4P,GAAGlP,EAAEA,EAAEwJ,KAAKtG,EAAEa,GAAGrD,IAAIpB,IAAI4P,GAAGlP,EAAEA,EAAEwJ,KAAKtG,EAAEe,GAAGvD,EAAG,IAAG,OAAO2vF,GAAG9E,MAAM9qF,YAAYT,GAAG,OAAOuwF,GAAGrtF,EAAElD,EAAG,GAAE,CAAC,SAASixF,GAAGjxF,EAAEkD,EAAEW,EAAE/C,GAAG,IAAIwf,EAAEzc,EAAEE,EAAElC,EAAEgC,EAAEI,EAAEjE,EAAEghF,WAAW1gE,EAAEze,GAAG7B,EAAEwhF,QAAQ1gF,EAAEiD,EAAEjD,EAAEmD,EAAE,CAAE,GAAE6sF,GAAG9wF,GAAG+wF,GAAG/wF,EAAEkD,GAAG,SAASlD,EAAEkD,GAAG,IAAIW,EAAEwsF,GAAGp1E,KAAKjb,EAAE2M,SAAS,SAAS3M,GAAG,OAAOkD,EAAEsG,KAAKxJ,GAAG+K,MAAO,IAAGjK,EAAE2vF,GAAGzwF,EAAE6D,GAAG/C,EAAEA,EAAEqF,MAAM,GAAGkqF,GAAGrrF,QAAQlE,GAAC,SAAW+C,GAAG,IAAI/C,EAAEd,EAAEwJ,KAAK3F,GAAGkH,OAAOuV,EAAEpd,EAAE6I,KAAKlI,EAAE/C,GAAGe,GAAE,EAAGye,IAAIA,EAAEpd,EAAE6I,KAAKjL,EAAE+C,GAAGhC,GAAE,GAAIqB,EAAEsG,KAAK3F,GAAG4qF,KAAKvrF,EAAEsG,KAAK1I,GAAG2tF,MAAM5sF,EAAEye,EAAE4tE,QAAQ5tE,EAAE4tE,OAAQ,GAAE,CAAxP,CAA0PluF,EAAEkD,EAAE,CAAC,SAASgM,GAAGlP,EAAEkD,EAAEW,GAAG,OAAOA,EAAEytF,KAAKpuF,EAAEquF,KAAKruF,EAAEquF,KAAK1tF,EAAE0tF,GAAG,CAACV,GAAGW,iBAAiBV,GAAGD,GAAGY,cAAcV,GAAGF,GAAGa,aAAaN,GAAGP,GAAGc,UAAUX,GAAGH,GAAGe,UAAUV,GAAGL,GAAGgB,cAAcZ,GAAG,IAAIa,GAAGjC,GAAekC,GAAG9B,GAAG+B,GAAGpB,GAAwKqB,GAAGH,GAAwB,IAAII,GAAGpG,GAAuuBqG,GAAGrG,GAAGsG,GAAGtE,GAAGuE,GAAG,CAAC/E,IAAI,SAASttF,GAAG,IAAIkD,EAAEkvF,GAAGrE,aAAa/tF,EAAE,OAAO,CAAE,EAAC,SAAS6D,EAAE,SAAS7D,GAAG,IAAIkD,EAAE,CAAA,EAAG,SAASW,EAAE/C,EAAEwf,GAAG,IAAIze,EAAE7B,EAAEsN,SAASxM,GAAGe,GAAGA,EAAEE,QAAQowF,GAAGntF,QAAQnD,GAAG,SAAS7B,GAAG6D,EAAE7D,EAAEsgB,EAAE,EAAG,IAAGpd,EAAEpC,GAAGwf,CAAC,CAAC,OAAO6xE,GAAGntF,QAAQhF,EAAEsN,qBAAqBtN,GAAG6D,EAAE7D,EAAE,EAAG,IAAGkD,CAAC,CAA1K,CAA4KlD,GAAGc,EAAEqxF,GAAGxjF,IAAIwjF,GAAGpT,OAAOl7E,IAAI,EAAEyc,EAAE,EAAExf,EAAE,EAAEd,EAAEwgF,QAAQ8R,YAAYpvF,EAAEivF,GAAGntF,QAAQhF,EAAE4L,SAAS,SAAS1I,GAAGlD,EAAE+L,KAAK7I,GAAGgrF,QAAQ5tE,CAAE,IAAG,IAAIze,EAAE,SAAS7B,GAAG,OAAOmyF,GAAGn8E,OAAOhW,EAAE4L,kBAAkB1I,EAAEW,GAAG,OAAOX,EAAElD,EAAE+L,KAAKlI,GAAG2pF,MAAO,GAAE,EAAE,CAApF,CAAsFxtF,GAAG,EAAEmyF,GAAGntF,QAAQhF,EAAEsN,YAAU,SAAWjK,GAAGkvF,GAAGvyF,EAAEkD,EAAEod,EAAEze,EAAEf,EAAE+C,EAAER,EAAG,IAAGrD,EAAEwgF,QAAQoO,eAAetuE,CAAC,EAAEkyE,QAAQ,SAASxyF,GAAG,IAAIkD,EAAElD,EAAEwgF,QAAQxgF,EAAE+gF,WAAW79E,EAAEovF,oBAAoBpvF,EAAEovF,YAAYH,GAAGntF,QAAQhF,EAAE4L,SAAO,SAAW1I,GAAGlD,EAAE+L,KAAK7I,GAAGuvF,aAAazyF,EAAEghF,WAAW99E,EAAG,GAAE,GAAG,SAASqvF,GAAGvyF,EAAEkD,EAAEW,EAAE/C,EAAEwf,EAAEze,EAAEwB,GAAG,IAAI3C,EAAEV,EAAEsN,SAASjK,GAAG,GAAG3C,EAAEqB,OAAO,CAAC,IAAIzC,EAAE8yF,GAAGvD,cAAc7uF,EAAE,OAAOS,EAAE2xF,GAAGvD,cAAc7uF,EAAE,OAAOyzB,EAAEzzB,EAAEwJ,KAAKnG,GAAGrD,EAAEkhF,UAAU5hF,EAAE+D,GAAGowB,EAAEi/D,UAAUpzF,EAAEU,EAAEkhF,UAAUzgF,EAAE4C,GAAGowB,EAAEk/D,aAAalyF,EAAE0xF,GAAGntF,QAAQtE,GAAC,SAAWA,GAAG6xF,GAAGvyF,EAAEkD,EAAEW,EAAE/C,EAAEwf,EAAEze,EAAEnB,GAAG,IAAI+yB,EAAEzzB,EAAEwJ,KAAK9I,GAAGG,EAAE4yB,EAAEi/D,UAAUj/D,EAAEi/D,UAAUhyF,EAAEK,EAAE0yB,EAAEk/D,aAAal/D,EAAEk/D,aAAajyF,EAAEqD,EAAE0vB,EAAEi/D,UAAU5xF,EAAE,EAAEA,EAAEnB,EAAEkB,IAAIE,EAAE,EAAEuf,EAAEze,EAAEwB,GAAG,EAAErD,EAAEwhF,QAAQliF,EAAEuB,EAAE,CAAC2sF,OAAOzpF,EAAEmqF,OAAOvuF,EAAE8yF,aAAY,IAAKzyF,EAAEwhF,QAAQzgF,EAAEN,EAAE,CAAC+sF,OAAOzpF,EAAEmqF,OAAOvuF,EAAE8yF,aAAY,GAAK,IAAGzyF,EAAE+K,OAAO1H,IAAIrD,EAAEwhF,QAAQt+E,EAAE5D,EAAE,CAACkuF,OAAO,EAAEU,OAAO5tE,EAAEze,EAAEwB,IAAI,MAAMA,IAAIH,GAAGlD,EAAEwhF,QAAQt+E,EAAEG,EAAE,CAACmqF,OAAO,EAAEU,OAAOrqF,GAAG,CAAC,IAAI+uF,GAAG9G,GAAG+G,GAAG/E,GAA0R,SAASgF,GAAG9yF,EAAEkD,EAAEW,EAAE/C,EAAEwf,EAAEze,GAAG,IAAIwB,EAAE,CAACgI,MAAM,EAAEC,OAAO,EAAEmjF,KAAK5sF,EAAEkxF,WAAW7vF,GAAGxC,EAAE4f,EAAEpd,GAAGrB,EAAE,GAAGvC,EAAEuzF,GAAG9E,aAAa/tF,EAAE,SAASqD,EAAEQ,GAAGyc,EAAEpd,GAAGrB,GAAGvC,EAAEU,EAAEkhF,UAAU5hF,EAAEwB,GAAGJ,GAAGV,EAAEwhF,QAAQ9gF,EAAEpB,EAAE,CAACkuF,OAAO,GAAG,CAAC,IAAIwF,GAAGlH,GAAGmH,GAAG,CAACC,OAAO,SAASlzF,GAAG,IAAIkD,EAAElD,EAAEwgF,QAAQ2S,QAAQxgE,cAAc,OAAOzvB,GAAG,OAAOA,GAAGkwF,GAAGpzF,EAAE,EAAE2tF,KAAK,SAAS3tF,GAAG,IAAIkD,EAAElD,EAAEwgF,QAAQ2S,QAAQxgE,cAAc,OAAOzvB,GAAG,OAAOA,GAAG,SAASlD,GAAGgzF,GAAGhuF,QAAQhF,EAAE2M,SAAO,SAAWzJ,GAAGmwF,GAAGrzF,EAAEwJ,KAAKtG,GAAI,IAAG8vF,GAAGhuF,QAAQhF,EAAE4L,SAAO,SAAW1I,GAAG,IAAIW,EAAE7D,EAAE+L,KAAK7I,GAAG8vF,GAAGhuF,QAAQnB,EAAEo7C,OAAOo0C,IAAIL,GAAGrpF,IAAI9F,EAAE,MAAMwvF,GAAGxvF,EAAG,GAAE,CAAhK,CAAkK7D,GAAG,OAAOkD,GAAG,OAAOA,IAAK,SAASlD,GAAGgzF,GAAGhuF,QAAQhF,EAAE2M,kBAAkBzJ,GAAGowF,GAAGtzF,EAAEwJ,KAAKtG,GAAI,IAAG8vF,GAAGhuF,QAAQhF,EAAE4L,kBAAkB1I,GAAG,IAAIW,EAAE7D,EAAE+L,KAAK7I,GAAG8vF,GAAGhuF,QAAQnB,EAAEo7C,OAAOq0C,IAAIN,GAAGrpF,IAAI9F,EAAE,MAAMyvF,GAAGzvF,EAAG,GAAE,CAAhK,CAAkK7D,GAAGozF,GAAGpzF,GAAG,GAAG,SAASozF,GAAGpzF,GAAGgzF,GAAGhuF,QAAQhF,EAAE2M,SAAS,SAASzJ,GAAGqwF,GAAGvzF,EAAEwJ,KAAKtG,GAAI,IAAG8vF,GAAGhuF,QAAQhF,EAAE4L,SAAS,SAAS1I,GAAGqwF,GAAGvzF,EAAE+L,KAAK7I,GAAI,GAAE,CAAC,SAASqwF,GAAGvzF,GAAG,IAAIkD,EAAElD,EAAEqL,MAAMrL,EAAEqL,MAAMrL,EAAEsL,OAAOtL,EAAEsL,OAAOpI,CAAC,CAAC,SAASmwF,GAAGrzF,GAAGA,EAAEyK,GAAGzK,EAAEyK,CAAC,CAAC,SAAS6oF,GAAGtzF,GAAG,IAAIkD,EAAElD,EAAEwK,EAAExK,EAAEwK,EAAExK,EAAEyK,EAAEzK,EAAEyK,EAAEvH,CAAC,CAAC,IAAIswF,GAAG1H,GAAmY2H,GAAG3H,GAAkF,SAAS4H,GAAG1zF,EAAEkD,EAAEW,GAAG,IAAI,IAAI/C,EAAE2yF,GAAG5H,UAAUhoF,EAAE4vF,GAAGz+E,IAAInR,YAAY7D,EAAEkD,GAAG,OAAOA,CAAE,KAAIod,EAAEmzE,GAAGtI,QAAQsI,GAAGz+E,IAAI9R,GAAC,SAAWA,GAAG,OAAOuwF,GAAG9H,OAAO8H,GAAGz+E,IAAIhV,EAAE+hF,SAAS7+E,IAAE,SAAWA,GAAG,MAAM,CAAC6O,IAAIjR,EAAEoC,EAAEe,GAAGupF,OAAOxtF,EAAE+L,KAAK7I,GAAGsqF,OAAQ,IAAG,MAAO,KAAG,GAAI3rF,EAAE,EAAEA,EAAEgC,EAAE9B,QAAQF,IAAI,EAAE,IAAIwB,EAAE,EAAExB,EAAE,EAAEA,GAAG,EAAE,IAAInB,EAAE+yF,GAAGz+E,IAAI,IAAI7S,MAAMkB,IAAI,WAAW,OAAO,CAAE,IAAG/D,EAAE,EAAE,OAAOm0F,GAAGzuF,QAAQsb,EAAEtb,SAAS,SAAShF,GAAG,IAAIkD,EAAElD,EAAE+R,IAAIlQ,EAAEnB,EAAEwC,IAAIlD,EAAEwtF,OAAO,IAAI,IAAI3pF,EAAE,EAAEX,EAAE,GAAGA,EAAE,IAAIW,GAAGnD,EAAEwC,EAAE,IAAIxC,EAAEwC,EAAEA,EAAE,GAAG,IAAIlD,EAAEwtF,OAAOluF,GAAGU,EAAEwtF,OAAO3pF,CAAE,KAAIvE,CAAC,CAAC,IAAIq0F,GAAG7H,GAAO8H,GAAG9H,GAAO+H,GAAG/H,GAAGgI,GAAGhG,GAAG,SAASiG,GAAG/zF,EAAEkD,EAAEW,GAAG,IAAI,IAAI/C,EAAEoC,EAAEnB,SAASjB,EAAE+yF,GAAGxI,KAAKnoF,IAAIrB,GAAGgC,GAAGX,EAAE4zB,MAAM92B,EAAEkC,KAAKpB,EAAEomF,IAAIrjF,IAAI,OAAOA,CAAC,CAAC,IAAImwF,GAAGlI,GAAmoFmI,GAAGnI,GAAGoI,GAAG9J,GAAG1G,MAAklByQ,GAAGrI,GAAOsI,GAAGtI,GAAGuI,GAA9xI,SAASr0F,GAAG,IAAIkD,EAAE,CAAE,EAACW,EAAE2vF,GAAG59E,OAAO5V,EAAE2M,kBAAkBzJ,GAAG,OAAOlD,EAAEsN,SAASpK,GAAGnB,MAAO,IAAGjB,EAAE0yF,GAAG7kF,IAAI6kF,GAAGx+E,IAAInR,GAAC,SAAWX,GAAG,OAAOlD,EAAEwJ,KAAKtG,GAAGurF,IAAK,KAAInuE,EAAEkzE,GAAGx+E,IAAIw+E,GAAGzyD,MAAMjgC,EAAE,IAAI,WAAW,MAAM,EAAG,IAA2G,IAAIuC,EAAEmwF,GAAG7H,OAAO9nF,YAAYX,GAAG,OAAOlD,EAAEwJ,KAAKtG,GAAGurF,IAAK,IAAG,OAAO+E,GAAGxuF,QAAQ3B,GAAlL,SAASxB,EAAEgC,GAAG,IAAI2vF,GAAG7pF,IAAIzG,EAAEW,GAAG,CAACX,EAAEW,IAAG,EAAG,IAAI/C,EAAEd,EAAEwJ,KAAK3F,GAAGyc,EAAExf,EAAE2tF,MAAMvsF,KAAK2B,GAAG2vF,GAAGxuF,QAAQhF,EAAEohF,WAAWv9E,GAAGhC,EAAE,CAAC,IAAgFye,CAAC,EAA66Hg0E,GAA95H,SAASt0F,EAAEkD,GAAG,IAAI,IAAIW,EAAE,EAAE/C,EAAE,EAAEA,EAAEoC,EAAEnB,SAASjB,EAAE+C,GAAG6vF,GAAG1zF,EAAEkD,EAAEpC,EAAE,GAAGoC,EAAEpC,IAAI,OAAO+C,CAAC,EAA01H0wF,GAA1/C,SAASv0F,EAAEkD,EAAEW,EAAE/C,EAAEwf,GAAG,IAAIze,EAAEqB,EAAEoK,SAASzJ,GAAGR,EAAEH,EAAEsG,KAAK3F,GAAGnD,EAAE2C,EAAEA,EAAEmxF,gBAAW,EAAOl1F,EAAE+D,EAAEA,EAAEoxF,iBAAY,EAAOh0F,EAAE,GAAGC,IAAImB,EAAEmyF,GAAGp+E,OAAO/T,GAAG,SAAS7B,GAAG,OAAOA,IAAIU,GAAGV,IAAIV,CAAE,KAAI,IAAIm0B,EAAl6D,SAASzzB,EAAEkD,GAAG,OAAOywF,GAAG3+E,IAAI9R,GAAG,SAASA,GAAG,IAAIW,EAAE7D,EAAE8hF,QAAQ5+E,GAAG,GAAGW,EAAE9B,OAAO,CAAC,IAAIjB,EAAE6yF,GAAG39E,OAAOnS,YAAYX,EAAEW,GAAG,IAAI/C,EAAEd,EAAE+L,KAAKlI,GAAGyc,EAAEtgB,EAAEwJ,KAAK3F,EAAEE,GAAG,MAAM,CAAC2wF,IAAIxxF,EAAEwxF,IAAI5zF,EAAE0sF,OAAOltE,EAAE2D,MAAMupE,OAAOtqF,EAAEsqF,OAAO1sF,EAAE0sF,OAAQ,GAAE,CAACkH,IAAI,EAAElH,OAAO,IAAI,MAAM,CAACzpF,EAAEb,EAAEyxF,WAAW7zF,EAAE4zF,IAAI5zF,EAAE0sF,OAAOA,OAAO1sF,EAAE0sF,OAAO,CAAC,MAAM,CAACzpF,EAAEb,EAAG,GAAE,CAAsoD0xF,CAAG1xF,EAAErB,GAAGmyF,GAAGhvF,QAAQyuB,GAAG,SAAS5vB,GAAG,GAAGX,EAAEoK,SAASzJ,EAAEE,GAAGhC,OAAO,CAAC,IAAIF,EAAE7B,EAAEkD,EAAEW,EAAEE,EAAEjD,EAAEwf,GAAG7f,EAAEoD,EAAEE,GAAGlC,EAAEmyF,GAAGrqF,IAAI9H,EAAE,gBAAgBwB,EAAEQ,EAAEnD,EAAEmB,EAAEmyF,GAAGnV,YAAYx7E,EAAEsxF,aAAatxF,EAAEsxF,WAAWj0F,EAAEi0F,WAAWtxF,EAAEmqF,OAAO9sF,EAAE8sF,SAASnqF,EAAEsxF,YAAYtxF,EAAEsxF,WAAWtxF,EAAEmqF,OAAO9sF,EAAEi0F,WAAWj0F,EAAE8sF,SAASnqF,EAAEmqF,OAAO9sF,EAAE8sF,QAAQnqF,EAAEmqF,QAAQ9sF,EAAE8sF,QAAQ,CAAC,IAAInqF,EAAE3C,CAAE,IAAG,IAAIG,EAA17D,SAASb,EAAEkD,GAAG,IAAIW,EAAE,CAAE,EAAC,OAAO+vF,GAAG5uF,QAAQhF,GAAC,SAAWA,EAAEkD,GAAG,IAAIpC,EAAE+C,EAAE7D,EAAE+D,GAAG,CAAC8wF,SAAS,EAAE7H,GAAG,GAAGF,IAAI,GAAG5F,GAAG,CAAClnF,EAAE+D,GAAGlC,EAAEqB,GAAG0wF,GAAG/U,YAAY7+E,EAAE20F,cAAc7zF,EAAE6zF,WAAW30F,EAAE20F,WAAW7zF,EAAE0sF,OAAOxtF,EAAEwtF,OAAQ,IAAGoG,GAAG5uF,QAAQ9B,EAAE0I,SAAS,SAAS5L,GAAG,IAAIkD,EAAEW,EAAE7D,EAAE+D,GAAGjD,EAAE+C,EAAE7D,EAAEiE,GAAG2vF,GAAG/U,YAAY37E,IAAI0wF,GAAG/U,YAAY/9E,KAAKA,EAAE+zF,WAAW3xF,EAAE4pF,IAAI5qF,KAAK2B,EAAE7D,EAAEiE,IAAK,IAAG,SAASjE,GAAG,IAAIkD,EAAE,GAAG,SAASW,EAAE7D,GAAG,OAAO,SAASkD,GAAGA,EAAE4xF,SAASlB,GAAG/U,YAAY37E,EAAEyxF,aAAaf,GAAG/U,YAAY7+E,EAAE20F,aAAazxF,EAAEyxF,YAAY30F,EAAE20F,aAAa,SAAS30F,EAAEkD,GAAG,IAAIW,EAAE,EAAE/C,EAAE,EAAEd,EAAEwtF,SAAS3pF,GAAG7D,EAAE20F,WAAW30F,EAAEwtF,OAAO1sF,GAAGd,EAAEwtF,QAAQtqF,EAAEsqF,SAAS3pF,GAAGX,EAAEyxF,WAAWzxF,EAAEsqF,OAAO1sF,GAAGoC,EAAEsqF,QAAQxtF,EAAEknF,GAAGhkF,EAAEgkF,GAAGjgF,OAAOjH,EAAEknF,IAAIlnF,EAAE20F,WAAW9wF,EAAE/C,EAAEd,EAAEwtF,OAAO1sF,EAAEd,EAAE6B,EAAEuM,KAAKU,IAAI5L,EAAErB,EAAE7B,EAAE6B,GAAGqB,EAAE4xF,QAAO,CAAE,CAAhN,CAAkN90F,EAAEkD,EAAE,CAAC,CAAC,SAASpC,EAAEoC,GAAG,OAAO,SAASW,GAAGA,EAAEmpF,GAAG9qF,KAAKgB,GAAG,KAAKW,EAAEgxF,UAAU70F,EAAEkC,KAAK2B,EAAE,CAAC,CAAC,KAAK7D,EAAE+B,QAAQ,CAAC,IAAIue,EAAEtgB,EAAE82B,MAAM5zB,EAAEhB,KAAKoe,GAAGszE,GAAG5uF,QAAQsb,EAAE0sE,GAAG+H,UAAUlxF,EAAEyc,IAAIszE,GAAG5uF,QAAQsb,EAAEwsE,IAAIhsF,EAAEwf,GAAG,CAAC,OAAOszE,GAAG5+E,IAAI4+E,GAAGh+E,OAAO1S,GAAC,SAAWlD,GAAG,OAAOA,EAAE80F,MAAO,KAAE,SAAW90F,GAAG,OAAO4zF,GAAGpI,KAAKxrF,EAAE,CAAC,KAAK,IAAI,aAAa,UAAW,GAAE,CAAvpB,CAAypB4zF,GAAGh+E,OAAO/R,YAAY7D,GAAG,OAAOA,EAAE60F,QAAS,IAAG,CAAq7BG,CAAGvhE,EAAE3yB,IAAI,SAASd,EAAEkD,GAAG8wF,GAAGhvF,QAAQhF,GAAG,SAASA,GAAGA,EAAEknF,GAAG8M,GAAG7I,QAAQnrF,EAAEknF,GAAGlyE,KAAG,SAAWhV,GAAG,OAAOkD,EAAElD,GAAGkD,EAAElD,GAAGknF,GAAGlnF,CAAE,KAAG,EAAI,GAAE,CAA7G,CAA+Ga,EAAEJ,GAAG,IAAIM,EAAjjC,SAASf,EAAEkD,GAAG,IAAoXzC,EAAhXoD,EAAEiwF,GAAG/E,UAAU/uF,GAAG,SAASA,GAAG,OAAO6zF,GAAGlqF,IAAI3J,EAAE,aAAc,IAAGc,EAAE+C,EAAEmrF,IAAI1uE,EAAEuzE,GAAGlI,OAAO9nF,EAAEorF,KAAK,SAASjvF,GAAG,OAAOA,EAAE6B,CAAE,IAAGA,EAAE,GAAGwB,EAAE,EAAE3C,EAAE,EAAEpB,EAAE,EAAEwB,EAAE6jB,MAAMlkB,IAAIyC,EAAE,SAASlD,EAAEkD,GAAG,OAAOlD,EAAE20F,WAAWzxF,EAAEyxF,YAAY,EAAE30F,EAAE20F,WAAWzxF,EAAEyxF,WAAW,EAAEl0F,EAAEyC,EAAErB,EAAE7B,EAAE6B,EAAE7B,EAAE6B,EAAEqB,EAAErB,CAAC,IAAIvC,EAAEy0F,GAAGlyF,EAAEye,EAAEhhB,GAAGu0F,GAAG7uF,QAAQlE,GAAG,SAASd,GAAGV,GAAGU,EAAEknF,GAAGnlF,OAAOF,EAAEK,KAAKlC,EAAEknF,IAAI7jF,GAAGrD,EAAE20F,WAAW30F,EAAEwtF,OAAO9sF,GAAGV,EAAEwtF,OAAOluF,EAAEy0F,GAAGlyF,EAAEye,EAAEhhB,EAAG,IAAS,IAAIm0B,EAAE,CAACyzD,GAAG2M,GAAG1I,QAAQtpF,GAAE,IAAsC,OAAjCnB,IAAI+yB,EAAEkhE,WAAWtxF,EAAE3C,EAAE+yB,EAAE+5D,OAAO9sF,GAAU+yB,CAAC,CAA0mBwhE,CAAGp0F,EAAEyf,GAAG,GAAG5f,IAAIK,EAAEmmF,GAAG8M,GAAG7I,QAAQ,CAACzqF,EAAEK,EAAEmmF,GAAG5nF,IAAG,GAAI4D,EAAEi+E,aAAazgF,GAAGqB,QAAQ,CAAC,IAAIgC,EAAEb,EAAEsG,KAAKtG,EAAEi+E,aAAazgF,GAAG,IAAIf,EAAEuD,EAAEsG,KAAKtG,EAAEi+E,aAAa7hF,GAAG,IAAI00F,GAAGrqF,IAAI5I,EAAE,gBAAgBA,EAAE4zF,WAAW,EAAE5zF,EAAEysF,OAAO,GAAGzsF,EAAE4zF,YAAY5zF,EAAE4zF,WAAW5zF,EAAEysF,OAAOzpF,EAAEkgB,MAAMtkB,EAAEskB,QAAQljB,EAAEysF,OAAO,GAAGzsF,EAAEysF,QAAQ,CAAC,CAAC,OAAOzsF,CAAC,EAAsoBm0F,GAA3mB,SAASl1F,EAAEkD,EAAEW,GAAG,IAAI/C,EAAE,SAASd,GAAS,IAAN,IAAIkD,EAAOlD,EAAE8gF,QAAQ59E,EAAE+wF,GAAGrI,SAAS,YAAY,OAAO1oF,CAAC,CAAnE,CAAqElD,GAAGsgB,EAAE,IAAI4zE,GAAG,CAAC5U,UAAS,IAAKiB,SAAS,CAACj/D,KAAKxgB,IAAI2/E,qBAAqB,SAASv9E,GAAG,OAAOlD,EAAEwJ,KAAKtG,EAAG,IAAG,OAAO+wF,GAAGjvF,QAAQhF,EAAE2M,kBAAkB9K,GAAG,IAAIwB,EAAErD,EAAEwJ,KAAK3H,GAAGnB,EAAEV,EAAE+K,OAAOlJ,IAAIwB,EAAEorF,OAAOvrF,GAAGG,EAAE8xF,SAASjyF,GAAGA,GAAGG,EAAEyrF,WAAWxuE,EAAEugE,QAAQh/E,GAAGye,EAAE4gE,UAAUr/E,EAAEnB,GAAGI,GAAGmzF,GAAGjvF,QAAQhF,EAAE6D,GAAGhC,IAAE,SAAWqB,GAAG,IAAIW,EAAEX,EAAEa,IAAIlC,EAAEqB,EAAEe,EAAEf,EAAEa,EAAEjD,EAAEwf,EAAEvU,KAAKlI,EAAEhC,GAAGwB,EAAE4wF,GAAGpV,YAAY/9E,GAAG,EAAEA,EAAE0sF,OAAOltE,EAAEkhE,QAAQ39E,EAAEhC,EAAE,CAAC2rF,OAAOxtF,EAAE+L,KAAK7I,GAAGsqF,OAAOnqF,GAAI,IAAG4wF,GAAGtqF,IAAItG,EAAE,YAAYid,EAAEugE,QAAQh/E,EAAE,CAAC2yF,WAAWnxF,EAAEmxF,WAAWtxF,GAAGuxF,YAAYpxF,EAAEoxF,YAAYvxF,KAAM,IAAGod,CAAC,EAA8N80E,GAAGhL,GAAG1G,MAAM2R,GAAGvH,GAA6R,SAASwH,GAAGt1F,EAAEkD,EAAEW,GAAG,OAAOuwF,GAAGp/E,IAAI9R,GAAC,SAAWA,GAAG,OAAOgyF,GAAGl1F,EAAEkD,EAAEW,EAAG,GAAE,CAAC,SAAS0xF,GAAGv1F,EAAEkD,GAAG,IAAIW,EAAE,IAAIuxF,GAAGhB,GAAGpvF,QAAQhF,GAAG,SAASA,GAAG,IAAIc,EAAEd,EAAEwgF,QAAQl/D,KAAKhB,EAAEi0E,GAAGv0F,EAAEc,EAAE+C,EAAEX,GAAGkxF,GAAGpvF,QAAQsb,EAAE4mE,IAAI,SAAShkF,EAAEW,GAAG7D,EAAEwJ,KAAKtG,GAAG+gB,MAAMpgB,CAAE,IAAzqB,SAAS7D,EAAEkD,EAAEW,GAAG,IAAI/C,EAAEwf,EAAE,CAAA,EAAG6zE,GAAGnvF,QAAQnB,GAAG,SAASA,GAAG,IAAI,IAAIhC,EAAEwB,EAAE3C,EAAEV,EAAE+K,OAAOlH,GAAGnD,GAAG,CAAC,IAAImB,EAAE7B,EAAE+K,OAAOrK,KAAK2C,EAAEid,EAAEze,GAAGye,EAAEze,GAAGnB,IAAI2C,EAAEvC,EAAEA,EAAEJ,GAAG2C,GAAGA,IAAI3C,EAAE,YAAYwC,EAAEs+E,QAAQn+E,EAAE3C,GAAGA,EAAEmB,CAAC,CAAE,GAAE,CAAigB2zF,CAAGx1F,EAAE6D,EAAEyc,EAAE4mE,GAAI,GAAE,CAAC,SAASuO,GAAGz1F,EAAEkD,GAAGkxF,GAAGpvF,QAAQ9B,GAAC,SAAWA,GAAGkxF,GAAGpvF,QAAQ9B,GAAC,SAAWA,EAAEW,GAAG7D,EAAEwJ,KAAKtG,GAAG+gB,MAAMpgB,CAAE,GAAG,GAAE,CAAC,IAAI6xF,GAAG5J,GAAG6J,GAAGvL,GAAG1G,MAAMkS,GAAG9H,GAA+2C,SAAS+H,GAAG71F,EAAEkD,EAAEW,GAAG,GAAGX,EAAEW,EAAE,CAAC,IAAI/C,EAAEoC,EAAEA,EAAEW,EAAEA,EAAE/C,CAAC,CAAC,IAAIwf,EAAEtgB,EAAEkD,GAAGod,IAAItgB,EAAEkD,GAAGod,EAAE,CAAE,GAAEA,EAAEzc,IAAG,CAAE,CAAC,SAASiyF,GAAG91F,EAAEkD,EAAEW,GAAG,GAAGX,EAAEW,EAAE,CAAC,IAAI/C,EAAEoC,EAAEA,EAAEW,EAAEA,EAAE/C,CAAC,CAAC,OAAO40F,GAAG/rF,IAAI3J,EAAEkD,GAAGW,EAAE,CAA2vE,IAAIkyF,GAAGjK,GAAGkK,GAAGlI,GAAGmI,GAAjwH,SAASj2F,GAAG,IAAIkD,EAAEW,EAAE+xF,GAAGrH,iBAAiBvuF,GAAGc,EAAE40F,GAAG1xE,MAAka,SAAYhkB,EAAEkD,GAAG,IAAIW,EAAE,CAAA,EAAG,OAAO6xF,GAAG1/E,OAAO9S,YAAYA,EAAEpC,GAAG,IAAIwf,EAAE,EAAEze,EAAE,EAAEwB,EAAEH,EAAEnB,OAAOrB,EAAEg1F,GAAGrK,KAAKvqF,GAAG,OAAO40F,GAAG1wF,QAAQlE,GAAG,SAASoC,EAAE5D,GAAG,IAAImB,EAAE,SAAST,EAAEkD,GAAG,GAAGlD,EAAEwJ,KAAKtG,GAAGisF,MAAM,OAAOuG,GAAGz6E,KAAKjb,EAAEmhF,aAAaj+E,IAAI,SAASA,GAAG,OAAOlD,EAAEwJ,KAAKtG,GAAGisF,KAAM,GAAE,CAAxG,CAA0GnvF,EAAEkD,GAAGuwB,EAAEhzB,EAAET,EAAEwJ,KAAK/I,GAAGwjB,MAAM5gB,GAAG5C,GAAGyC,IAAIxC,KAAKg1F,GAAG1wF,QAAQlE,EAAEqF,MAAMtE,EAAEvC,EAAE,IAAE,SAAW4D,GAAGwyF,GAAG1wF,QAAQhF,EAAEmhF,aAAaj+E,IAAE,SAAWpC,GAAG,IAAIe,EAAE7B,EAAEwJ,KAAK1I,GAAGuC,EAAExB,EAAEoiB,QAAQ5gB,EAAEid,GAAGmT,EAAEpwB,IAAIxB,EAAEstF,OAAOnvF,EAAEwJ,KAAKtG,GAAGisF,OAAO0G,GAAGhyF,EAAE/C,EAAEoC,EAAG,GAAG,IAAGrB,EAAEvC,EAAE,EAAEghB,EAAEmT,EAAG,IAAG3yB,CAAE,IAAG+C,CAAC,CAA72BqyF,CAAGl2F,EAAE6D,GAAy2B,SAAY7D,EAAEkD,GAAG,IAAIW,EAAE,CAAA,EAAG,SAAS/C,EAAEoC,EAAEpC,EAAEwf,EAAEze,EAAEwB,GAAG,IAAI3C,EAAEg1F,GAAG1wF,QAAQ0wF,GAAG30D,MAAMjgC,EAAEwf,aAAaxf,GAAGJ,EAAEwC,EAAEpC,GAAGd,EAAEwJ,KAAK9I,GAAGyuF,OAAOuG,GAAG1wF,QAAQhF,EAAEmhF,aAAazgF,IAAI,SAASwC,GAAG,IAAIpC,EAAEd,EAAEwJ,KAAKtG,GAAGpC,EAAEquF,QAAQruF,EAAEmjB,MAAMpiB,GAAGf,EAAEmjB,MAAM5gB,IAAIwyF,GAAGhyF,EAAEX,EAAExC,EAAG,GAAG,GAAE,CAAC,OAAOg1F,GAAG1/E,OAAO9S,GAAC,SAAWA,EAAEW,GAAG,IAAIyc,EAAEze,GAAG,EAAEwB,EAAE,EAAE,OAAOqyF,GAAG1wF,QAAQnB,GAAC,SAAWnD,EAAEpB,GAAG,GAAG,WAAWU,EAAEwJ,KAAK9I,GAAGyuF,MAAM,CAAC,IAAI1uF,EAAET,EAAEmhF,aAAazgF,GAAGD,EAAEsB,SAASue,EAAEtgB,EAAEwJ,KAAK/I,EAAE,IAAIwjB,MAAMnjB,EAAE+C,EAAER,EAAE/D,EAAEuC,EAAEye,GAAGjd,EAAE/D,EAAEuC,EAAEye,EAAE,CAACxf,EAAE+C,EAAER,EAAEQ,EAAE9B,OAAOue,EAAEpd,EAAEnB,OAAQ,IAAG8B,CAAE,IAAGA,CAAC,CAA1yCsyF,CAAGn2F,EAAE6D,IAAIyc,EAAE,CAAE,EAACo1E,GAAG1wF,QAAQ,CAAC,IAAI,MAAI,SAAWnD,GAAGqB,EAAE,MAAMrB,EAAEgC,EAAE6xF,GAAG3W,OAAOl7E,GAAGkxF,UAAUW,GAAG1wF,QAAQ,CAAC,IAAI,MAAI,SAAWnB,GAAG,MAAMA,IAAIX,EAAEwyF,GAAG1gF,IAAI9R,YAAYlD,GAAG,OAAO01F,GAAG3W,OAAO/+E,GAAG+0F,SAAU,KAAI,IAAI1xF,GAAG,MAAMxB,EAAE7B,EAAEmhF,aAAanhF,EAAEohF,YAAYj+D,KAAKnjB,GAAGU,EAA4sC,SAAYV,EAAEkD,EAAEW,EAAE/C,GAAG,IAAIwf,EAAE,CAAE,EAACze,EAAE,GAAGwB,EAAE,CAAA,EAAG,OAAOqyF,GAAG1wF,QAAQ9B,GAAC,SAAWlD,GAAG01F,GAAG1wF,QAAQhF,GAAC,SAAWA,EAAEkD,GAAGod,EAAEtgB,GAAGA,EAAE6B,EAAE7B,GAAGA,EAAEqD,EAAErD,GAAGkD,CAAE,GAAG,IAAGwyF,GAAG1wF,QAAQ9B,GAAC,SAAWlD,GAAG,IAAIkD,GAAG,EAAEwyF,GAAG1wF,QAAQhF,YAAYA,GAAG,IAAIU,EAAEI,EAAEd,GAAG,GAAGU,EAAEqB,OAAO,CAACrB,EAAEg1F,GAAG/J,OAAOjrF,YAAYV,GAAG,OAAOqD,EAAErD,EAAG,IAAG,IAAI,IAAIV,GAAGoB,EAAEqB,OAAO,GAAG,EAAEtB,EAAE2N,KAAKgoF,MAAM92F,GAAGm0B,EAAErlB,KAAK6C,KAAK3R,GAAGmB,GAAGgzB,IAAIhzB,EAAE,CAAC,IAAII,EAAEH,EAAED,GAAGoB,EAAE7B,KAAKA,GAAGkD,EAAEG,EAAExC,KAAKi1F,GAAGjyF,EAAE7D,EAAEa,KAAKgB,EAAEhB,GAAGb,EAAE6B,EAAE7B,GAAGsgB,EAAEtgB,GAAGsgB,EAAEzf,GAAGqC,EAAEG,EAAExC,GAAG,CAAC,CAAE,GAAG,IAAG,CAACygB,KAAKhB,EAAE+1E,MAAMx0F,EAAE,CAA3mDy0F,CAAGt2F,EAAEkD,EAAEpC,EAAEuC,GAAG/D,EAAgmD,SAAYU,EAAEkD,EAAEW,EAAE/C,EAAEwf,GAAG,IAAIze,EAAE,CAAA,EAAGwB,EAAE,SAASrD,EAAEkD,EAAEW,EAAE/C,GAAG,IAAIwf,EAAE,IAAIq1E,GAAG9zF,EAAE7B,EAAEwgF,QAAQn9E,EAAE,SAASrD,EAAEkD,EAAEW,GAAG,OAAO,SAAS/C,EAAEwf,EAAEze,GAAG,IAAIwB,EAAE3C,EAAEI,EAAE0I,KAAK8W,GAAGhhB,EAAEwB,EAAE0I,KAAK3H,GAAGpB,EAAE,EAAE,GAAGA,GAAGC,EAAE2K,MAAM,EAAEqqF,GAAG/rF,IAAIjJ,EAAE,YAAY,OAAOA,EAAEivF,SAASh9D,eAAe,IAAI,IAAItvB,GAAG3C,EAAE2K,MAAM,EAAE,MAAM,IAAI,IAAIhI,EAAE3C,EAAE2K,MAAM,EAAE,GAAGhI,IAAI5C,GAAGoD,EAAER,GAAGA,GAAGA,EAAE,EAAE5C,IAAIC,EAAEyuF,MAAMjsF,EAAElD,GAAG,EAAES,IAAInB,EAAE6vF,MAAMjsF,EAAElD,GAAG,EAAES,GAAGnB,EAAE+L,MAAM,EAAEqqF,GAAG/rF,IAAIrK,EAAE,YAAY,OAAOA,EAAEqwF,SAASh9D,eAAe,IAAI,IAAItvB,EAAE/D,EAAE+L,MAAM,EAAE,MAAM,IAAI,IAAIhI,GAAG/D,EAAE+L,MAAM,EAAE,OAAOhI,IAAI5C,GAAGoD,EAAER,GAAGA,GAAGA,EAAE,EAAE5C,CAAC,CAAC,CAAxY,CAA0YoB,EAAE00F,QAAQ10F,EAAE20F,QAAQ11F,GAAG,OAAO40F,GAAG1wF,QAAQ9B,GAAG,SAASA,GAAG,IAAIpC,EAAE40F,GAAG1wF,QAAQ9B,GAAG,SAASA,GAAG,IAAIrB,EAAEgC,EAAEX,GAAG,GAAGod,EAAEugE,QAAQh/E,GAAGf,EAAE,CAAC,IAAIJ,EAAEmD,EAAE/C,GAAGxB,EAAEghB,EAAEvU,KAAKrL,EAAEmB,GAAGye,EAAEkhE,QAAQ9gF,EAAEmB,EAAEuM,KAAKO,IAAItL,EAAErD,EAAEkD,EAAEpC,GAAGxB,GAAG,GAAG,CAACwB,EAAEoC,CAAE,GAAG,IAAGod,CAAC,CAAxnB,CAA0nBtgB,EAAEkD,EAAEW,EAAEyc,GAAG5f,EAAE4f,EAAE,aAAa,cAAc,SAAShhB,EAAEU,EAAEkD,GAAG,IAAI,IAAIW,EAAER,EAAEsJ,QAAQ7L,EAAE+C,EAAEizB,MAAMxW,EAAE,GAAGxf,GAAGwf,EAAExf,GAAGd,EAAEc,IAAIwf,EAAExf,IAAG,EAAG+C,EAAE3B,KAAKpB,GAAG+C,EAAEA,EAAEoD,OAAO/D,EAAEpC,KAAKA,EAAE+C,EAAEizB,KAAK,CAAC,OAAOx3B,GAAG,SAASU,GAAG6B,EAAE7B,GAAGqD,EAAEy+E,QAAQ9hF,GAAGgW,QAAM,SAAWhW,EAAEkD,GAAG,OAAOkL,KAAKO,IAAI3O,EAAE6B,EAAEqB,EAAEa,GAAGV,EAAE0I,KAAK7I,GAAI,GAAE,EAAG,GAAEG,EAAE89E,aAAah+D,KAAK9f,IAAI/D,GAAG,SAAS4D,GAAG,IAAIW,EAAER,EAAE0+E,SAAS7+E,GAAG8S,QAAM,SAAWhW,EAAEkD,GAAG,OAAOkL,KAAKU,IAAI9O,EAAE6B,EAAEqB,EAAEe,GAAGZ,EAAE0I,KAAK7I,GAAI,GAAEgF,OAAOE,mBAAmBtH,EAAEd,EAAEwJ,KAAKtG,GAAGW,IAAIqE,OAAOE,mBAAmBtH,EAAEiyF,aAAaryF,IAAImB,EAAEqB,GAAGkL,KAAKO,IAAI9M,EAAEqB,GAAGW,GAAI,GAAER,EAAE+9E,WAAWj+D,KAAK9f,IAAIqyF,GAAG1wF,QAAQlE,GAAC,SAAWd,GAAG6B,EAAE7B,GAAG6B,EAAEgC,EAAE7D,GAAI,IAAG6B,CAAC,CAAlyF40F,CAAGz2F,EAAEkD,EAAExC,EAAE4gB,KAAK5gB,EAAE21F,MAAM,MAAMxyF,GAAG,MAAMA,IAAIvE,EAAEo2F,GAAGpK,UAAUhsF,YAAYU,GAAG,OAAOA,CAAE,KAAIsgB,EAAEze,EAAEgC,GAAGvE,CAAE,GAAG,IAAG,IAAIuC,EAA4rF,SAAY7B,EAAEkD,GAAG,OAAOwyF,GAAGnK,MAAMmK,GAAG3W,OAAO77E,aAAaA,GAAG,IAAIW,EAAEqE,OAAOC,kBAAkBrH,EAAEoH,OAAOE,kBAAkB,OAAOstF,GAAGtK,MAAMloF,GAAC,SAAWA,EAAEod,GAAG,IAAIze,EAAE,SAAS7B,EAAEkD,GAAG,OAAOlD,EAAEwJ,KAAKtG,GAAGmI,KAAK,CAApC,CAAsCrL,EAAEsgB,GAAG,EAAEzc,EAAEuK,KAAKO,IAAIzL,EAAErB,EAAEgC,GAAG/C,EAAEsN,KAAKU,IAAI5L,EAAErB,EAAEf,EAAG,IAAG+C,EAAE/C,CAAE,GAAE,CAAh7F41F,CAAG12F,EAAEsgB,GAAG,OAAy6F,SAAYtgB,EAAEkD,GAAG,IAAIW,EAAE6xF,GAAG3W,OAAO77E,GAAGpC,EAAE40F,GAAG5mF,IAAIjL,GAAGyc,EAAEo1E,GAAG/mF,IAAI9K,GAAG6xF,GAAG1wF,QAAQ,CAAC,IAAI,MAAI,SAAWnB,GAAG6xF,GAAG1wF,QAAQ,CAAC,IAAI,MAAM,SAASnD,GAAG,IAAIwB,EAAE3C,EAAEmD,EAAEhC,EAAEvC,EAAEU,EAAEU,GAAG,GAAGpB,IAAI4D,EAAE,CAAC,IAAIzC,EAAEi1F,GAAG3W,OAAOz/E,IAAI+D,EAAE,MAAMxB,EAAEf,EAAE40F,GAAG5mF,IAAIrO,GAAG6f,EAAEo1E,GAAG/mF,IAAIlO,MAAMT,EAAEU,GAAGg1F,GAAGpK,UAAUhsF,GAAG,SAASU,GAAG,OAAOA,EAAEqD,CAAE,IAAG,CAAE,GAAG,GAAE,CAA9qGszF,CAAGr2E,EAAEze,GAA0qG,SAAY7B,EAAEkD,GAAG,OAAOwyF,GAAGpK,UAAUtrF,EAAE42F,IAAE,SAAW/yF,EAAE/C,GAAG,GAAGoC,EAAE,OAAOlD,EAAEkD,EAAEyvB,eAAe7xB,GAAG,IAAIwf,EAAEo1E,GAAG/J,OAAO+J,GAAG1gF,IAAIhV,EAAEc,IAAI,OAAOwf,EAAE,GAAGA,EAAE,IAAI,CAAE,GAAE,CAArzGu2E,CAAGv2E,EAAEtgB,EAAEwgF,QAAQ6V,MAAM,EAA2zGS,GAAGhL,GAAGiL,GAAG1J,GAAG2J,GAAG1H,GAAG2H,GAAvxY,SAASj3F,GAAG,OAAOA,EAAEwgF,QAAQ0W,QAAQ,IAAI,kBAAkB,SAA6G,SAAYl3F,GAAGgyF,GAAGhyF,EAAE,CAAzHm3F,CAAGn3F,GAAG,MAAM,IAAI,cAAc,SAASA,GAAG8xF,GAAG9xF,GAAG+xF,GAAG/xF,EAAE,CAAvB,CAAyBA,GAAG,MAAM,IAAI,eAAeiyF,GAAGjyF,GAAG,EAAioYo3F,GAAGtJ,GAAGY,eAAe2I,GAAxmY,SAASr3F,GAAG,IAAIkD,EAAE,SAASlD,GAAG,IAAIkD,EAAE,CAAE,EAACW,EAAE,EAAyE,OAAOquF,GAAGltF,QAAQhF,EAAEsN,YAA3F,SAASxM,EAAEwf,GAAG,IAAIze,EAAEgC,EAAEquF,GAAGltF,QAAQhF,EAAEsN,SAASgT,GAAGxf,GAAGoC,EAAEod,GAAG,CAACgxE,IAAIzvF,EAAE0vF,IAAI1tF,IAAI,IAAmCX,CAAC,CAAnI,CAAqIlD,GAAGkyF,GAAGltF,QAAQhF,EAAEwgF,QAAQ+O,aAAW,SAAW1rF,GAAG,IAAI,IAAI/C,EAAEd,EAAEwJ,KAAK3F,GAAGyc,EAAExf,EAAE4uF,QAAQ7tF,EAAE,SAAS7B,EAAEkD,EAAEW,EAAE/C,GAAG,IAAIwf,EAAEze,EAAEwB,EAAE,GAAG3C,EAAE,GAAGpB,EAAE8O,KAAKU,IAAI5L,EAAEW,GAAGytF,IAAIpuF,EAAEpC,GAAGwwF,KAAK7wF,EAAE2N,KAAKO,IAAIzL,EAAEW,GAAG0tF,IAAIruF,EAAEpC,GAAGywF,KAAKjxE,EAAEzc,EAAE,GAAGyc,EAAEtgB,EAAE+K,OAAOuV,GAAGjd,EAAEnB,KAAKoe,SAASA,IAAIpd,EAAEod,GAAGgxE,IAAIhyF,GAAGmB,EAAEyC,EAAEod,GAAGixE,MAAc,IAAR1vF,EAAEye,EAAEA,EAAExf,GAAQwf,EAAEtgB,EAAE+K,OAAOuV,MAAMze,GAAGnB,EAAEwB,KAAKoe,GAAG,MAAM,CAACigC,KAAKl9C,EAAE4D,OAAOvG,EAAEq0F,WAAWuC,IAAIz1F,EAAE,CAAtP,CAAwP7B,EAAEkD,EAAEod,EAAEvc,EAAEuc,EAAErc,GAAGZ,EAAExB,EAAE0+C,KAAK7/C,EAAEmB,EAAEy1F,IAAIh4F,EAAE,EAAEmB,EAAE4C,EAAE/D,GAAGm0B,GAAE,EAAG5vB,IAAIyc,EAAErc,GAAG,CAAC,GAAGnD,EAAEd,EAAEwJ,KAAK3F,GAAG4vB,EAAE,CAAC,MAAMhzB,EAAE4C,EAAE/D,MAAMoB,GAAGV,EAAEwJ,KAAK/I,GAAGquF,QAAQhuF,EAAE2tF,MAAMnvF,IAAImB,IAAIC,IAAI+yB,GAAE,EAAG,CAAC,IAAIA,EAAE,CAAC,KAAKn0B,EAAE+D,EAAEtB,OAAO,GAAG/B,EAAEwJ,KAAK/I,EAAE4C,EAAE/D,EAAE,IAAI61F,SAASr0F,EAAE2tF,MAAMnvF,IAAImB,EAAE4C,EAAE/D,EAAE,CAACU,EAAEkhF,UAAUr9E,EAAEpD,GAAGoD,EAAE7D,EAAEohF,WAAWv9E,GAAG,EAAE,CAAE,GAAE,EAAm5W0zF,GAAGzJ,GAAGa,iBAAiB6I,GAAGnF,GAAGoF,GAA9pU,SAASz3F,GAAG4yF,GAAG5tF,QAAQhF,EAAEsN,qBAAqBpK,EAAEW,GAAG,IAAI/C,EAAEd,EAAEsN,SAASzJ,GAAGyc,EAAEtgB,EAAEwJ,KAAK3F,GAAG,GAAG/C,EAAEiB,QAAQ6wF,GAAG5tF,QAAQlE,EAAEoC,GAAG0vF,GAAGjpF,IAAI2W,EAAE,WAAW,CAACA,EAAEk0E,WAAW,GAAGl0E,EAAEm0E,YAAY,GAAG,IAAI,IAAI5yF,EAAEye,EAAE60E,QAAQ9xF,EAAEid,EAAEwuE,QAAQ,EAAEjtF,EAAEwB,IAAIxB,EAAEixF,GAAG9yF,EAAE,aAAa,MAAM6D,EAAEyc,EAAEze,GAAGixF,GAAG9yF,EAAE,cAAc,MAAM6D,EAAEyc,EAAEze,EAAE,CAAE,GAAE,EAAk5T61F,GAAGzE,GAAG0E,GAA/9I,SAAS33F,GAAG,IAAIkD,EAAEmyF,GAAGvG,QAAQ9uF,GAAG6D,EAAEyxF,GAAGt1F,EAAEo0F,GAAGrzD,MAAM,EAAE79B,EAAE,GAAG,WAAWpC,EAAEw0F,GAAGt1F,EAAEo0F,GAAGrzD,MAAM79B,EAAE,GAAG,GAAG,GAAG,YAAYod,EAAE+zE,GAAGr0F,GAAGy1F,GAAGz1F,EAAEsgB,GAAG,IAAI,IAAIze,EAAEwB,EAAE6E,OAAOE,kBAAkB1H,EAAE,EAAEpB,EAAE,EAAEA,EAAE,IAAIoB,IAAIpB,EAAE,CAACi2F,GAAG70F,EAAE,EAAEmD,EAAE/C,EAAEJ,EAAE,GAAG,GAAG4f,EAAE+0E,GAAG9G,iBAAiBvuF,GAAG,IAAIS,EAAE6zF,GAAGt0F,EAAEsgB,GAAG7f,EAAE4C,IAAI/D,EAAE,EAAEuC,EAAEuyF,GAAGnJ,UAAU3qE,GAAGjd,EAAE5C,EAAE,CAACg1F,GAAGz1F,EAAE6B,EAAE,EAAmgJ+1F,GAAG9J,GAAG+J,GAAGzN,GAAG1G,MAA6wKoU,GAAG,CAAC,UAAU,UAAU,UAAU,UAAU,WAAWC,GAAG,CAACC,QAAQ,GAAGxB,QAAQ,GAAGD,QAAQ,GAAGpD,QAAQ,MAAM8E,GAAG,CAAC,YAAY,SAAS,UAAU,SAASC,GAAG,CAAC,QAAQ,UAAUC,GAAG,CAAC9sF,MAAM,EAAEC,OAAO,GAAG8sF,GAAG,CAAC,SAAS,SAAS,QAAQ,SAAS,eAAehyC,GAAG,CAAC8nC,OAAO,EAAEV,OAAO,EAAEniF,MAAM,EAAEC,OAAO,EAAE+sF,YAAY,GAAG1I,SAAS,KAAK2I,GAAG,CAAC,YAAY,SAASC,GAAGv4F,EAAEkD,GAAG,OAAO4zF,GAAGxL,UAAUwL,GAAGtL,KAAKxrF,EAAEkD,GAAGgF,OAAO,CAAC,SAAS0uF,GAAG52F,GAAG,IAAIkD,EAAE,CAAE,EAAC,OAAO4zF,GAAG9xF,QAAQhF,GAAC,SAAWA,EAAE6D,GAAGX,EAAEW,EAAE8uB,eAAe3yB,CAAE,IAAGkD,CAAC,CAAC,IAAIs1F,GAAG1M,GAAG2M,GAAG3K,GAAG4K,GAAGtO,GAAG1G,MAAUiV,GAAh8iF,SAAY34F,GAAG,OAAOA,GAAGA,EAAE44F,YAAY/4F,OAAOC,UAAUC,eAAeiB,KAAKhB,EAAE,WAAWA,EAAE0C,QAAQ1C,CAAC,CAA+1iF64F,CAAG,CAACpU,SAAS2F,GAAG0O,OAAlxL,SAAS94F,EAAEkD,GAAG,IAAIW,EAAEX,GAAGA,EAAE61F,YAAYnB,GAAG58D,KAAK48D,GAAG1I,OAAOrrF,EAAE,qBAAqB,IAAIX,EAAEW,EAAE,sBAAoB,WAAa,OAAO,SAAS7D,GAAG,IAAIkD,EAAE,IAAI20F,GAAG,CAACzY,YAAW,EAAGE,UAAS,IAAKz7E,EAAE+yF,GAAG52F,EAAEwgF,SAAS,OAAOt9E,EAAEq9E,SAASuW,GAAG9yE,MAAM,GAAG+zE,GAAGQ,GAAG10F,EAAEi0F,IAAIhB,GAAGtL,KAAK3nF,EAAEo0F,MAAMnB,GAAG9xF,QAAQhF,EAAE2M,kBAAkB9I,GAAG,IAAI/C,EAAE81F,GAAG52F,EAAEwJ,KAAK3F,IAAIX,EAAE29E,QAAQh9E,EAAEizF,GAAG5tF,SAASqvF,GAAGz3F,EAAEo3F,IAAIC,KAAKj1F,EAAEg+E,UAAUr9E,EAAE7D,EAAE+K,OAAOlH,GAAI,IAAGizF,GAAG9xF,QAAQhF,EAAE4L,SAAS,SAAS/H,GAAG,IAAI/C,EAAE81F,GAAG52F,EAAE+L,KAAKlI,IAAIX,EAAEs+E,QAAQ39E,EAAEizF,GAAG9yE,MAAM,CAAE,EAACoiC,GAAGmyC,GAAGz3F,EAAEs3F,IAAItB,GAAGtL,KAAK1qF,EAAEw3F,KAAM,IAAGp1F,CAAC,CAAxW,CAA0WlD,EAAG,IAAG6D,EAAE,eAAe,YAAY,SAAS7D,EAAEkD,GAAGA,EAAE,8BAA4B,YAAc,SAASlD,GAAG,IAAIkD,EAAElD,EAAEwgF,QAAQt9E,EAAE80F,SAAS,EAAElB,GAAG9xF,QAAQhF,EAAE4L,SAAO,SAAW/H,GAAG,IAAI/C,EAAEd,EAAE+L,KAAKlI,GAAG/C,EAAEotF,QAAQ,EAAE,MAAMptF,EAAE6uF,SAASh9D,gBAAgB,OAAOzvB,EAAEiwF,SAAS,OAAOjwF,EAAEiwF,QAAQryF,EAAEuK,OAAOvK,EAAEu3F,YAAYv3F,EAAEwK,QAAQxK,EAAEu3F,YAAa,GAAE,CAA7N,CAA+Nr4F,EAAG,IAAGkD,EAAE,uBAAqB,YAAc,SAASlD,GAAG82F,GAAG9xF,QAAQhF,EAAE4L,kBAAkB1I,GAAG,GAAGA,EAAEa,IAAIb,EAAEe,EAAE,CAAC,IAAIJ,EAAE7D,EAAEwJ,KAAKtG,EAAEa,GAAGF,EAAEm1F,YAAYn1F,EAAEm1F,UAAU,IAAIn1F,EAAEm1F,UAAU92F,KAAK,CAACpB,EAAEoC,EAAEykD,MAAM3nD,EAAE+L,KAAK7I,KAAKlD,EAAEghF,WAAW99E,EAAE,CAAE,GAAE,CAAvK,CAAyKlD,EAAG,IAAGkD,EAAE,eAAa,WAAa6zF,GAAGzJ,IAAIttF,EAAG,IAAGkD,EAAE,wBAAsB,WAAas0F,GAAGlK,IAAIttF,EAAG,IAAGkD,EAAE,YAAU,WAAa+zF,GAAGW,GAAGzJ,mBAAmBnuF,GAAI,IAAGkD,EAAE,8BAA4B,YAAc,SAASlD,GAAG82F,GAAG9xF,QAAQhF,EAAE4L,SAAS,SAAS1I,GAAG,IAAIW,EAAE7D,EAAE+L,KAAK7I,GAAG,GAAGW,EAAEwH,OAAOxH,EAAEyH,OAAO,CAAC,IAAIxK,EAAEd,EAAEwJ,KAAKtG,EAAEa,GAAGuc,EAAE,CAACmuE,MAAMzuF,EAAEwJ,KAAKtG,EAAEe,GAAGwqF,KAAK3tF,EAAE2tF,MAAM,EAAE3tF,EAAE2tF,KAAK3tF,EAAEoC,GAAG00F,GAAG7J,aAAa/tF,EAAE,aAAasgB,EAAE,MAAM,CAAE,GAAE,CAAjM,CAAmMtgB,EAAG,IAAGkD,EAAE,wBAAwB,WAAWq0F,GAAGv3F,EAAG,IAAGkD,EAAE,4BAA0B,WAAas0F,GAAGhF,QAAQxyF,EAAG,IAAGkD,EAAE,sBAAoB,WAAak0F,GAAGp3F,EAAG,IAAGkD,EAAE,wBAAsB,YAAc,SAASlD,GAAG,IAAIkD,EAAE,EAAE4zF,GAAG9xF,QAAQhF,EAAE2M,SAAS,SAAS9I,GAAG,IAAI/C,EAAEd,EAAEwJ,KAAK3F,GAAG/C,EAAE4xF,YAAY5xF,EAAEq0F,QAAQn1F,EAAEwJ,KAAK1I,EAAE4xF,WAAWjE,KAAK3tF,EAAEguF,QAAQ9uF,EAAEwJ,KAAK1I,EAAE6xF,cAAclE,KAAKvrF,EAAE4zF,GAAGnoF,IAAIzL,EAAEpC,EAAEguF,SAAU,IAAG9uF,EAAEwgF,QAAQsO,QAAQ5rF,CAAC,CAA1M,CAA4MlD,EAAG,IAAGkD,EAAE,8BAA8B,YAAY,SAASlD,GAAG82F,GAAG9xF,QAAQhF,EAAE2M,SAAO,SAAWzJ,GAAG,IAAIW,EAAE7D,EAAEwJ,KAAKtG,GAAG,eAAeW,EAAEsrF,QAAQnvF,EAAE+L,KAAKlI,EAAE/C,GAAG0uF,UAAU3rF,EAAE4qF,KAAKzuF,EAAE+gF,WAAW79E,GAAI,GAAE,CAAvI,CAAyIlD,EAAG,IAAGkD,EAAE,qBAAmB,WAAa8zF,GAAG1J,IAAIttF,EAAG,IAAGkD,EAAE,yBAAuB,WAAam0F,GAAGr3F,EAAG,IAAGkD,EAAE,oCAAoCu0F,GAAGz3F,EAAG,IAAGkD,EAAE,aAAa,WAAWy0F,GAAG33F,EAAG,IAAGkD,EAAE,uBAAuB,YAAY,SAASlD,GAAG,IAAIkD,EAAE00F,GAAGrJ,iBAAiBvuF,GAAG82F,GAAG9xF,QAAQ9B,GAAC,SAAWA,GAAG,IAAIW,EAAE,EAAEizF,GAAG9xF,QAAQ9B,GAAC,SAAWA,EAAEpC,GAAG,IAAIwf,EAAEtgB,EAAEwJ,KAAKtG,GAAGod,EAAE2D,MAAMnjB,EAAE+C,EAAEizF,GAAG9xF,QAAQsb,EAAE04E,WAAW,SAAS91F,GAAG00F,GAAG7J,aAAa/tF,EAAE,WAAW,CAACqL,MAAMnI,EAAEykD,MAAMt8C,MAAMC,OAAOpI,EAAEykD,MAAMr8C,OAAOmjF,KAAKnuE,EAAEmuE,KAAKxqE,MAAMnjB,KAAK+C,EAAE/C,EAAEoC,EAAEpC,EAAE6mD,MAAMzkD,EAAEykD,OAAO,MAAO,WAAUrnC,EAAE04E,SAAU,GAAG,GAAE,CAA/T,CAAiUh5F,EAAG,IAAGkD,EAAE,yCAAyCw0F,GAAGxE,OAAOlzF,EAAG,IAAGkD,EAAE,4BAA52F,SAASlD,IAAG,SAAUA,GAAG,IAAIkD,EAAE8yF,GAAGzH,iBAAiBvuF,GAAG6D,EAAE7D,EAAEwgF,QAAQwX,QAAQl3F,EAAE,EAAEi1F,GAAG/wF,QAAQ9B,GAAG,SAASA,GAAG,IAAIod,EAAEy1E,GAAGpnF,IAAIonF,GAAG/gF,IAAI9R,YAAYA,GAAG,OAAOlD,EAAEwJ,KAAKtG,GAAGoI,MAAO,KAAIyqF,GAAG/wF,QAAQ9B,GAAG,SAASA,GAAGlD,EAAEwJ,KAAKtG,GAAGuH,EAAE3J,EAAEwf,EAAE,CAAE,IAAGxf,GAAGwf,EAAEzc,CAAE,GAAG,EAApN,CAAsN7D,EAAEg2F,GAAG7H,mBAAmBnuF,IAAI+1F,GAAG/wF,QAAQixF,GAAGj2F,IAAI,SAASkD,EAAEW,GAAG7D,EAAEwJ,KAAK3F,GAAG2G,EAAEtH,CAAE,GAAE,CAAylF+1F,CAAGj5F,EAAG,IAAGkD,EAAE,yBAAyB,YAAY,SAASlD,GAAG82F,GAAG9xF,QAAQhF,EAAE2M,SAAO,SAAWzJ,GAAG,IAAIW,EAAE7D,EAAEwJ,KAAKtG,GAAG,GAAG,aAAaW,EAAEsrF,MAAM,CAAC,IAAIruF,EAAEd,EAAEwJ,KAAK3F,EAAE/C,EAAEiD,GAAGuc,EAAExf,EAAE0J,EAAE1J,EAAEuK,MAAM,EAAExJ,EAAEf,EAAE2J,EAAEpH,EAAEQ,EAAE2G,EAAE8V,EAAE5f,EAAEI,EAAEwK,OAAO,EAAEtL,EAAEwhF,QAAQ39E,EAAE/C,EAAE+C,EAAE8jD,OAAO3nD,EAAE+gF,WAAW79E,GAAGW,EAAE8jD,MAAM1I,OAAO,CAAC,CAACz0C,EAAE8V,EAAE,EAAEjd,EAAE,EAAEoH,EAAE5I,EAAEnB,GAAG,CAAC8J,EAAE8V,EAAE,EAAEjd,EAAE,EAAEoH,EAAE5I,EAAEnB,GAAG,CAAC8J,EAAE8V,EAAEjd,EAAEoH,EAAE5I,GAAG,CAAC2I,EAAE8V,EAAE,EAAEjd,EAAE,EAAEoH,EAAE5I,EAAEnB,GAAG,CAAC8J,EAAE8V,EAAE,EAAEjd,EAAE,EAAEoH,EAAE5I,EAAEnB,IAAImD,EAAE8jD,MAAMn9C,EAAE3G,EAAE2G,EAAE3G,EAAE8jD,MAAMl9C,EAAE5G,EAAE4G,CAAC,CAAE,GAAE,CAAjU,CAAmUzK,EAAG,IAAGkD,EAAE,yBAAyB,YAAY,SAASlD,GAAG82F,GAAG9xF,QAAQhF,EAAE2M,SAAO,SAAWzJ,GAAG,GAAGlD,EAAEsN,SAASpK,GAAGnB,OAAO,CAAC,IAAI8B,EAAE7D,EAAEwJ,KAAKtG,GAAGpC,EAAEd,EAAEwJ,KAAK3F,EAAE6uF,WAAWpyE,EAAEtgB,EAAEwJ,KAAK3F,EAAE8uF,cAAc9wF,EAAE7B,EAAEwJ,KAAKstF,GAAGzL,KAAKxnF,EAAE2wF,aAAanxF,EAAErD,EAAEwJ,KAAKstF,GAAGzL,KAAKxnF,EAAE4wF,cAAc5wF,EAAEwH,MAAM+C,KAAKE,IAAIjL,EAAEmH,EAAE3I,EAAE2I,GAAG3G,EAAEyH,OAAO8C,KAAKE,IAAIgS,EAAE7V,EAAE3J,EAAE2J,GAAG5G,EAAE2G,EAAE3I,EAAE2I,EAAE3G,EAAEwH,MAAM,EAAExH,EAAE4G,EAAE3J,EAAE2J,EAAE5G,EAAEyH,OAAO,CAAC,CAAE,IAAGwrF,GAAG9xF,QAAQhF,EAAE2M,SAAO,SAAWzJ,GAAG,WAAWlD,EAAEwJ,KAAKtG,GAAGisF,OAAOnvF,EAAE+gF,WAAW79E,EAAG,GAAE,CAArX,CAAuXlD,EAAG,IAAGkD,EAAE,sBAAsB,WAAW8zF,GAAGrJ,KAAK3tF,EAAG,IAAGkD,EAAE,4BAA4B,YAAY,SAASlD,GAAG82F,GAAG9xF,QAAQhF,EAAE4L,SAAO,SAAW1I,GAAG,IAAIW,EAAE7D,EAAE+L,KAAK7I,GAAG,GAAG4zF,GAAGntF,IAAI9F,EAAE,KAAK,OAAO,MAAMA,EAAE8rF,UAAU,MAAM9rF,EAAE8rF,WAAW9rF,EAAEwH,OAAOxH,EAAEw0F,aAAax0F,EAAE8rF,UAAU,IAAI,IAAI9rF,EAAE2G,GAAG3G,EAAEwH,MAAM,EAAExH,EAAEw0F,YAAY,MAAM,IAAI,IAAIx0F,EAAE2G,GAAG3G,EAAEwH,MAAM,EAAExH,EAAEw0F,YAAa,GAAE,CAAlP,CAAoPr4F,EAAG,IAAGkD,EAAE,uCAAuCw0F,GAAG/J,KAAK3tF,EAAG,IAAGkD,EAAE,kCAAkC,SAASlD,GAAG,IAAIkD,EAAEgF,OAAOE,kBAAkBvE,EAAE,EAAE/C,EAAEoH,OAAOE,kBAAkBkY,EAAE,EAAEze,EAAE7B,EAAEwgF,QAAQn9E,EAAExB,EAAEq3F,SAAS,EAAEx4F,EAAEmB,EAAEs3F,SAAS,EAAE,SAAS75F,EAAEU,GAAG,IAAI6B,EAAE7B,EAAEwK,EAAEnH,EAAErD,EAAEyK,EAAE/J,EAAEV,EAAEqL,MAAM/L,EAAEU,EAAEsL,OAAOpI,EAAEkL,KAAKU,IAAI5L,EAAErB,EAAEnB,EAAE,GAAGmD,EAAEuK,KAAKO,IAAI9K,EAAEhC,EAAEnB,EAAE,GAAGI,EAAEsN,KAAKU,IAAIhO,EAAEuC,EAAE/D,EAAE,GAAGghB,EAAElS,KAAKO,IAAI2R,EAAEjd,EAAE/D,EAAE,EAAE,CAACw3F,GAAG9xF,QAAQhF,EAAE2M,SAAS,SAASzJ,GAAG5D,EAAEU,EAAEwJ,KAAKtG,GAAI,IAAG4zF,GAAG9xF,QAAQhF,EAAE4L,SAAS,SAAS1I,GAAG,IAAIW,EAAE7D,EAAE+L,KAAK7I,GAAG4zF,GAAGntF,IAAI9F,EAAE,MAAMvE,EAAEuE,EAAG,IAAGX,GAAGG,EAAEvC,GAAGJ,EAAEo2F,GAAG9xF,QAAQhF,EAAE2M,SAAS,SAAS9I,GAAG,IAAIyc,EAAEtgB,EAAEwJ,KAAK3F,GAAGyc,EAAE9V,GAAGtH,EAAEod,EAAE7V,GAAG3J,CAAE,IAAGg2F,GAAG9xF,QAAQhF,EAAE4L,SAAO,SAAW/H,GAAG,IAAIyc,EAAEtgB,EAAE+L,KAAKlI,GAAGizF,GAAG9xF,QAAQsb,EAAE2+B,QAAQ,SAASj/C,GAAGA,EAAEwK,GAAGtH,EAAElD,EAAEyK,GAAG3J,CAAE,IAAGg2F,GAAGntF,IAAI2W,EAAE,OAAOA,EAAE9V,GAAGtH,GAAG4zF,GAAGntF,IAAI2W,EAAE,OAAOA,EAAE7V,GAAG3J,EAAG,IAAGe,EAAEwJ,MAAMxH,EAAEX,EAAEG,EAAExB,EAAEyJ,OAAOgV,EAAExf,EAAEJ,CAAC,CAAtnB,CAAwnBV,EAAG,IAAGkD,EAAE,4BAA4B,YAAY,SAASlD,GAAG82F,GAAG9xF,QAAQhF,EAAE4L,SAAO,SAAW1I,GAAG,IAAIW,EAAE/C,EAAEwf,EAAEtgB,EAAE+L,KAAK7I,GAAGrB,EAAE7B,EAAEwJ,KAAKtG,EAAEa,GAAGV,EAAErD,EAAEwJ,KAAKtG,EAAEe,GAAGqc,EAAE2+B,QAAQp7C,EAAEyc,EAAE2+B,OAAO,GAAGn+C,EAAEwf,EAAE2+B,OAAO3+B,EAAE2+B,OAAOl9C,OAAO,KAAKue,EAAE2+B,OAAO,GAAGp7C,EAAER,EAAEvC,EAAEe,GAAGye,EAAE2+B,OAAOm6C,QAAQxB,GAAGtJ,cAAczsF,EAAEgC,IAAIyc,EAAE2+B,OAAO/8C,KAAK01F,GAAGtJ,cAAcjrF,EAAEvC,GAAI,GAAE,CAA1P,CAA4Pd,EAAG,IAAGkD,EAAE,qBAAqB,YAAY,SAASlD,GAAG82F,GAAG9xF,QAAQhF,EAAE4L,SAAO,SAAW1I,GAAG,IAAIW,EAAE7D,EAAE+L,KAAK7I,GAAGW,EAAE6pF,UAAU7pF,EAAEo7C,OAAO81C,SAAU,GAAE,CAA/F,CAAiG/0F,EAAG,IAAGkD,EAAE,oBAAkB,WAAa6zF,GAAGpJ,KAAK3tF,EAAG,GAAE,CAAt2I,CAAw2IkD,EAAEW,EAAG,IAAGA,EAAE,sBAAoB,YAAc,SAAS7D,EAAEkD,GAAG4zF,GAAG9xF,QAAQhF,EAAE2M,kBAAkB9I,GAAG,IAAI/C,EAAEd,EAAEwJ,KAAK3F,GAAGyc,EAAEpd,EAAEsG,KAAK3F,GAAG/C,IAAIA,EAAE0J,EAAE8V,EAAE9V,EAAE1J,EAAE2J,EAAE6V,EAAE7V,EAAEvH,EAAEoK,SAASzJ,GAAG9B,SAASjB,EAAEuK,MAAMiV,EAAEjV,MAAMvK,EAAEwK,OAAOgV,EAAEhV,QAAS,IAAGwrF,GAAG9xF,QAAQhF,EAAE4L,SAAO,SAAW/H,GAAG,IAAI/C,EAAEd,EAAE+L,KAAKlI,GAAGyc,EAAEpd,EAAE6I,KAAKlI,GAAG/C,EAAEm+C,OAAO3+B,EAAE2+B,OAAO63C,GAAGntF,IAAI2W,EAAE,OAAOxf,EAAE0J,EAAE8V,EAAE9V,EAAE1J,EAAE2J,EAAE6V,EAAE7V,EAAG,IAAGzK,EAAEwgF,QAAQn1E,MAAMnI,EAAEs9E,QAAQn1E,MAAMrL,EAAEwgF,QAAQl1E,OAAOpI,EAAEs9E,QAAQl1E,MAAM,CAAnV,CAAqVtL,EAAEkD,EAAG,GAAG,GAAE,EAA8hB81D,MAAM,CAACqgC,cAAc,SAASr5F,GAAG,IAAIkD,EAAEu1F,GAAGlK,iBAAiBvuF,GAAG6D,EAAE,IAAI60F,GAAG,CAACpZ,UAAS,EAAGF,YAAW,IAAKmB,SAAS,CAAE,GAAE,OAAOiY,GAAGxzF,QAAQhF,EAAE2M,kBAAkBzJ,GAAGW,EAAEg9E,QAAQ39E,EAAE,CAACykD,MAAMzkD,IAAIW,EAAEq9E,UAAUh+E,EAAE,QAAQlD,EAAEwJ,KAAKtG,GAAGurF,KAAM,IAAG+J,GAAGxzF,QAAQhF,EAAE4L,SAAS,SAAS5L,GAAG6D,EAAE29E,QAAQxhF,EAAE+D,EAAE/D,EAAEiE,EAAE,CAAE,EAACjE,EAAEwY,KAAM,IAAGggF,GAAGxzF,QAAQ9B,GAAC,SAAWlD,EAAEkD,GAAG,IAAIpC,EAAE,QAAQoC,EAAEW,EAAEg9E,QAAQ//E,EAAE,CAAC2tF,KAAK,SAAS+J,GAAGxiF,OAAOhW,GAAC,SAAWA,EAAEkD,GAAG,OAAOW,EAAE29E,QAAQxhF,EAAEkD,EAAE,CAACma,MAAM,UAAUna,CAAE,GAAG,IAAGW,CAAC,GAAGy1F,KAAK,CAACt+D,KAAK8yD,GAAG9yD,KAAKk0D,OAAOpB,GAAGoB,QAAQvL,QAAQ,wHAAU,SAAY3jF,EAAEkD,EAAEW,QAAG,IAASA,IAAIA,EAAE,CAACsvF,QAAQ,OAAO,IAAIryF,EAAE+C,EAAEsvF,QAAQ7yE,EAAE,IAAIq4E,GAAGlU,SAASf,MAAM,OAAOpjE,EAAEmhE,qBAAmB,WAAa,MAAM,CAAE,CAAC,IAAGnhE,EAAEigE,SAAS,CAAC4S,QAAQryF,IAAId,EAAEgF,SAAO,SAAWhF,GAAG,IAAIkD,EAAEW,EAAE,IAAI7D,EAAEsH,GAAG,MAAM,IAAIoB,MAAM,4BAA4B,IAAI5H,GAAG,QAAQoC,EAAElD,EAAE+b,YAAO,IAAS7Y,OAAE,EAAOA,EAAEmI,QAAQ,IAAIxJ,GAAG,QAAQgC,EAAE7D,EAAE+b,YAAO,IAASlY,OAAE,EAAOA,EAAEyH,SAAS,GAAGgV,EAAEugE,QAAQ7gF,EAAEsH,GAAG,CAAC+D,MAAMvK,EAAEwK,OAAOzJ,GAAI,IAAGqB,EAAE8B,SAAO,SAAWhF,GAAGsgB,EAAEkhE,QAAQxhF,EAAEgM,OAAOhM,EAAEiM,OAAQ,IAAG0sF,GAAGG,OAAOx4E,GAAGtgB,EAAEgF,SAAO,SAAWhF,GAAG,IAAIkD,EAAEod,EAAE9W,KAAKxJ,EAAEsH,IAAIzD,EAAE,SAAShC,EAAE,MAAM,OAAOf,GAAG,IAAI,KAAK+C,EAAE,SAAShC,EAAE,MAAM,MAAM,IAAI,KAAKgC,EAAE,MAAMhC,EAAE,SAAS,MAAM,IAAI,KAAK,IAAI,KAAKgC,EAAE,QAAQhC,EAAE,OAAO7B,EAAEs+C,eAAez8C,EAAE7B,EAAEo+C,eAAev6C,EAAE7D,EAAEiK,SAAS,CAACO,EAAEtH,EAAEsH,EAAEtH,EAAEmI,MAAM,EAAEZ,EAAEvH,EAAEuH,EAAEvH,EAAEoI,OAAO,EAAG,IAAG,CAACqB,MAAM3M,EAAE4L,MAAM1I,EAAE,2CCS/kmF,SACJu3D,GAEM,IAAA/yD,EAAA+B,EAAoB3G,EAAQA,SAAC23D,GAAa,GAAzC7uD,EAAKlE,EAAA,GAAE+vC,OACRE,EAAyCX,EAAAA,aAC7C,SAACzpC,GAAY,OAAAkqC,GAAS,SAAC8hD,GAAQ,OAAA3sD,GAAiBr/B,EAASgsF,EAAI,GAAC,GAC9D,IAGF,MAAO,CAAC3tF,EAAO6rC,EAAUE,EAC3B,8CCVM,SACJ6iB,GAEM,IAAA9yD,EAAA+B,EAAoB3G,EAAQA,SAAC03D,GAAa,GAAzC7tD,EAAKjF,EAAA,GAAEuvC,OACRE,EAAyCH,EAAAA,aAC7C,SAACzpC,GAAY,OAAA0pC,GAAS,SAACuiD,GAAQ,OAAA3sD,GAAiBt/B,EAASisF,EAAI,GAAC,GAC9D,IAGF,MAAO,CAAC7sF,EAAOsqC,EAAUE,EAC3B","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/classnames/index.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/shim/index.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/shim/with-selector.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/vanilla.mjs","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/traditional.mjs","../src/contexts/StoreContext.ts","../src/constants/errorMessages.ts","../src/hooks/useStore.ts","../src/utils/store.ts","../src/utils/general.ts","../src/utils/dom.ts","../src/hooks/useKeyPress.ts","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/shallow.mjs","../src/styles/utils.ts","../src/types/system/general.ts","../src/types/system/edges.ts","../src/types/system/utils.ts","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/array.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/pointer.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-interpolate/src/zoom.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-zoom/src/constant.js","../../../node_modules/d3-zoom/src/event.js","../../../node_modules/d3-zoom/src/transform.js","../../../node_modules/d3-zoom/src/noevent.js","../../../node_modules/d3-zoom/src/zoom.js","../src/utils/xypanzoom/utils.ts","../src/utils/xypanzoom/XYPanZoom.ts","../src/utils/xypanzoom/eventhandler.ts","../src/utils/xypanzoom/filter.ts","../src/container/ZoomPane/index.tsx","../src/hooks/useResizeHandler.ts","../src/hooks/useGlobalKeyHandler.ts","../src/utils/changes.ts","../src/utils/graph.ts","../src/components/UserSelection/index.tsx","../src/container/Pane/index.tsx","../src/container/FlowRenderer/index.tsx","../src/hooks/useIsomorphicLayoutEffect.ts","../src/components/BatchProvider/useQueue.ts","../src/components/BatchProvider/index.tsx","../src/hooks/useViewportHelper.ts","../src/hooks/useInkFlow.ts","../src/container/NodeRenderer/useResizeObserver.ts","../src/hooks/useVisibleNodeIds.ts","../src/contexts/NodeIdContext.ts","../src/components/A11yDescriptions/index.tsx","../src/utils/edges/bezier-edge.ts","../src/utils/edges/general.ts","../src/utils/edges/smoothstep-edge.ts","../src/utils/xyhandle/utils.ts","../src/utils/xyhandle/XYHandle.ts","../src/components/Handle/index.tsx","../src/components/NodeWrapper/utils.tsx","../src/components/Nodes/InputNode.tsx","../src/components/Nodes/DefaultNode.tsx","../src/components/Nodes/OutputNode.tsx","../src/components/Nodes/GroupNode.tsx","../src/components/Nodes/utils.ts","../src/utils/xydrag/utils.ts","../src/utils/xydrag/XYDrag.ts","../src/hooks/useMoveSelectedNodes.ts","../src/components/NodeWrapper/index.tsx","../src/components/NodeWrapper/useNodeObserver.ts","../src/hooks/useDrag.ts","../src/container/NodeRenderer/index.tsx","../src/container/EdgeRenderer/MarkerSymbols.tsx","../src/utils/marker.ts","../src/container/EdgeRenderer/MarkerDefinitions.tsx","../src/components/Edges/EdgeText.tsx","../src/components/Edges/BaseEdge.tsx","../src/components/Edges/SimpleBezierEdge.tsx","../src/components/Edges/SmoothStepEdge.tsx","../src/components/Edges/StepEdge.tsx","../src/components/Edges/StraightEdge.tsx","../src/utils/edges/straight-edge.ts","../src/components/Edges/BezierEdge.tsx","../src/components/EdgeWrapper/utils.ts","../src/components/Edges/EdgeAnchor.tsx","../src/components/EdgeWrapper/EdgeUpdateAnchors.tsx","../src/utils/positions.ts","../src/components/EdgeWrapper/index.tsx","../src/container/EdgeRenderer/index.tsx","../src/hooks/useVisibleEdgeIds.ts","../src/container/Viewport/index.tsx","../src/container/GraphView/index.tsx","../src/store/initialState.ts","../src/store/index.ts","../src/components/InkFlowProvider/index.tsx","../src/container/InkFlow/Wrapper.tsx","../src/container/InkFlow/init-values.ts","../src/components/StoreUpdater/index.tsx","../src/container/InkFlow/index.tsx","../src/plugins/Controls/Icons/Plus.tsx","../src/plugins/Controls/Icons/Minus.tsx","../src/plugins/Controls/Icons/FitView.tsx","../src/plugins/Controls/Icons/Lock.tsx","../src/plugins/Controls/Icons/Unlock.tsx","../src/plugins/Controls/ControlButton.tsx","../src/components/Panel/index.tsx","../src/plugins/Controls/Controls.tsx","../src/types/index.ts","../../ink-core/dist/index.esm.js","../src/hooks/useEdgesState.ts","../src/hooks/useNodesState.ts"],"sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = (createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl;\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","import { createContext } from 'react';\n\nimport { createStore } from '../store';\n\nconst StoreContext = createContext<ReturnType<typeof createStore> | null>(null);\n\nexport const Provider = StoreContext.Provider;\nexport default StoreContext;\n","import { CoordinateExtent, HandleType } from '../types/system';\n\nexport const errorMessages = {\n error001: () =>\n '[Ink Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://InkFlow.dev/error#001',\n error002: () =>\n \"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.\",\n error003: (nodeType: string) =>\n `Node type \"${nodeType}\" not found. Using fallback type \"default\".`,\n error004: () =>\n 'The Ink Flow parent container needs a width and a height to render the graph.',\n error005: () => 'Only child nodes can use a parent extent.',\n error006: () => \"Can't create edge. An edge needs a source and a target.\",\n error007: (id: string) => `The old edge with id=${id} does not exist.`,\n error009: (type: string) => `Marker type \"${type}\" doesn't exist.`,\n error008: (\n handleType: HandleType,\n {\n id,\n sourceHandle,\n targetHandle,\n }: { id: string; sourceHandle: string | null; targetHandle: string | null },\n ) =>\n `Couldn't create edge for ${handleType} handle id: \"${\n !sourceHandle ? sourceHandle : targetHandle\n }\", edge id: ${id}.`,\n error010: () =>\n 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.',\n error011: (edgeType: string) =>\n `Edge type \"${edgeType}\" not found. Using fallback type \"default\".`,\n error012: (id: string) =>\n `Node with id \"${id}\" does not exist, it may have been removed. This can happen when a node is deleted before the \"onNodeClick\" handler is called.`,\n};\n\nexport const infiniteExtent: CoordinateExtent = [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY],\n];\n\nexport const elementSelectionKeys = ['Enter', ' ', 'Escape'];\n","import { useContext, useMemo } from 'react';\nimport {\n UseBoundStoreWithEqualityFn,\n useStoreWithEqualityFn as useZustandStore,\n} from 'zustand/traditional';\nimport { StoreApi } from 'zustand';\nimport type { Edge, Node, InkFlowState } from '../types';\n\nimport StoreContext from '../contexts/StoreContext';\n\nimport { errorMessages } from '../constants/errorMessages';\n\nconst zustandErrorMessage = errorMessages['error001']();\n\n/**\n * Hook for accessing the internal store. Should only be used in rare cases.\n *\n * @public\n * @param selector\n * @param equalityFn\n * @returns The selected state slice\n *\n * @example\n * const nodes = useStore((state: InkFlowState<MyNodeType>) => state.nodes);\n *\n */\nfunction useStore<StateSlice = unknown>(\n selector: (state: InkFlowState) => StateSlice,\n equalityFn?: (a: StateSlice, b: StateSlice) => boolean,\n) {\n const store = useContext(StoreContext);\n\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n\n return useZustandStore(store, selector, equalityFn);\n}\n\nfunction useStoreApi<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>() {\n const store = useContext(StoreContext) as UseBoundStoreWithEqualityFn<\n StoreApi<InkFlowState<NodeType, EdgeType>>\n > | null;\n\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n\n return useMemo(\n () => ({\n getState: store.getState,\n setState: store.setState,\n subscribe: store.subscribe,\n }),\n [store],\n );\n}\n\nexport { useStore, useStoreApi };\n","import {\n ConnectionLookup,\n CoordinateExtent,\n EdgeBase,\n EdgeLookup,\n InternalNodeBase,\n InternalNodeUpdate,\n NodeBase,\n NodeDimensionChange,\n NodeLookup,\n NodeOrigin,\n NodePositionChange,\n PanZoomInstance,\n ParentLookup,\n Rect,\n Transform,\n XYPosition,\n XYZPosition,\n} from '../types/system';\nimport { ParentExpandChild } from '../types/utils/types';\nimport { getDimensions, getHandleBounds } from './dom';\nimport {\n getBoundsOfRects,\n getNodeDimensions,\n isNumeric,\n nodeToRect,\n} from './general';\n\ntype UpdateNodesOptions<NodeType extends NodeBase> = {\n nodeOrigin?: NodeOrigin;\n elevateNodesOnSelect?: boolean;\n defaults?: Partial<NodeType>;\n checkEquality?: boolean;\n};\n\nexport function updateAbsolutePositions<NodeType extends NodeBase>(\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n options: UpdateNodesOptions<NodeType> = {\n nodeOrigin: [0, 0] as NodeOrigin,\n elevateNodesOnSelect: true,\n defaults: {},\n },\n) {\n const selectedNodeZ: number = options?.elevateNodesOnSelect ? 1000 : 0;\n\n for (const [, node] of nodeLookup) {\n const parentId = node.parentId;\n\n if (!parentId) {\n continue;\n }\n\n if (!nodeLookup.has(parentId)) {\n throw new Error(`Parent node ${parentId} not found`);\n }\n\n const parentNode = nodeLookup.get(parentId);\n const { x, y, z } = calculateXYZPosition(\n node,\n nodeLookup,\n {\n ...node.position,\n z:\n (isNumeric(node.zIndex) ? node.zIndex : 0) +\n (node.selected ? selectedNodeZ : 0),\n },\n parentNode?.origin ?? options.nodeOrigin,\n );\n\n const currPosition = node.internals.positionAbsolute;\n const positionChanged = x !== currPosition.x || y !== currPosition.y;\n\n if (positionChanged || z !== node.internals.z) {\n node.internals = {\n ...node.internals,\n positionAbsolute: positionChanged ? { x, y } : currPosition,\n z,\n };\n }\n }\n}\n\nexport function updateNodeInternals<NodeType extends InternalNodeBase>(\n updates: Map<string, InternalNodeUpdate>,\n nodeLookup: NodeLookup<NodeType>,\n parentLookup: ParentLookup<NodeType>,\n domNode: HTMLElement | null,\n nodeOrigin?: NodeOrigin,\n): {\n changes: (NodeDimensionChange | NodePositionChange)[];\n updatedInternals: boolean;\n} {\n const viewportNode = domNode?.querySelector('.xyflow__viewport');\n let updatedInternals = false;\n\n if (!viewportNode) {\n return { changes: [], updatedInternals };\n }\n\n const changes: (NodeDimensionChange | NodePositionChange)[] = [];\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform);\n // in this array we collect nodes, that might trigger changes (like expanding parent)\n const parentExpandChildren: ParentExpandChild[] = [];\n\n updates.forEach((update) => {\n const node = nodeLookup.get(update.id);\n\n if (node?.hidden) {\n nodeLookup.set(node.id, {\n ...node,\n internals: {\n ...node.internals,\n handleBounds: undefined,\n },\n });\n updatedInternals = true;\n } else if (node) {\n const dimensions = getDimensions(update.nodeElement);\n const dimensionChanged =\n node.measured.width !== dimensions.width ||\n node.measured.height !== dimensions.height;\n const doUpdate = !!(\n dimensions.width &&\n dimensions.height &&\n (dimensionChanged || !node.internals.handleBounds || update.force)\n );\n\n if (doUpdate) {\n const newNode = {\n ...node,\n measured: dimensions,\n internals: {\n ...node.internals,\n handleBounds: {\n source: getHandleBounds(\n '.source',\n update.nodeElement,\n zoom,\n node.origin || nodeOrigin,\n ),\n target: getHandleBounds(\n '.target',\n update.nodeElement,\n zoom,\n node.origin || nodeOrigin,\n ),\n },\n },\n };\n\n nodeLookup.set(node.id, newNode);\n updatedInternals = true;\n\n if (dimensionChanged) {\n changes.push({\n id: newNode.id,\n type: 'dimensions',\n dimensions,\n });\n\n if (newNode.expandParent && newNode.parentId) {\n parentExpandChildren.push({\n id: newNode.id,\n parentId: newNode.parentId,\n rect: nodeToRect(newNode, newNode.origin || nodeOrigin),\n });\n }\n }\n }\n }\n });\n\n if (parentExpandChildren.length > 0) {\n const parentExpandChanges = handleExpandParent(\n parentExpandChildren,\n nodeLookup,\n parentLookup,\n nodeOrigin,\n );\n changes.push(...parentExpandChanges);\n }\n\n return { changes, updatedInternals };\n}\n\nfunction calculateXYZPosition<NodeType extends NodeBase>(\n node: NodeType,\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n result: XYZPosition,\n nodeOrigin: NodeOrigin = [0, 0],\n): XYZPosition {\n if (!node.parentId) {\n return result;\n }\n\n const parent = nodeLookup.get(node.parentId)!;\n const parentPosition = getNodePositionWithOrigin(parent, nodeOrigin).position;\n\n return calculateXYZPosition(\n parent,\n nodeLookup,\n {\n x: (result.x ?? 0) + parentPosition.x,\n y: (result.y ?? 0) + parentPosition.y,\n z:\n (parent.internals.z ?? 0) > (result.z ?? 0)\n ? parent.internals.z ?? 0\n : result.z ?? 0,\n },\n parent.origin || nodeOrigin,\n );\n}\n\nexport const getNodePositionWithOrigin = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): { position: XYPosition; positionAbsolute: XYPosition } => {\n const { width, height } = getNodeDimensions(node);\n const positionAbsolute =\n 'internals' in node ? node.internals.positionAbsolute : node.position;\n const origin = node.origin || nodeOrigin;\n const offsetX = width * origin[0];\n const offsetY = height * origin[1];\n\n return {\n position: {\n x: node.position.x - offsetX,\n y: node.position.y - offsetY,\n },\n positionAbsolute: {\n x: positionAbsolute.x - offsetX,\n y: positionAbsolute.y - offsetY,\n },\n };\n};\n\nexport function updateConnectionLookup(\n connectionLookup: ConnectionLookup,\n edgeLookup: EdgeLookup,\n edges: EdgeBase[],\n) {\n connectionLookup.clear();\n edgeLookup.clear();\n\n for (const edge of edges) {\n const { source, target, sourceHandle = null, targetHandle = null } = edge;\n\n const sourceKey = `${source}-source-${sourceHandle}`;\n const targetKey = `${target}-target-${targetHandle}`;\n\n const prevSource = connectionLookup.get(sourceKey) || new Map();\n const prevTarget = connectionLookup.get(targetKey) || new Map();\n const connection = {\n edgeId: edge.id,\n source,\n target,\n sourceHandle,\n targetHandle,\n };\n\n edgeLookup.set(edge.id, edge);\n connectionLookup.set(\n sourceKey,\n prevSource.set(`${target}-${targetHandle}`, connection),\n );\n connectionLookup.set(\n targetKey,\n prevTarget.set(`${source}-${sourceHandle}`, connection),\n );\n }\n}\n\nexport function adoptUserNodes<NodeType extends NodeBase>(\n nodes: NodeType[],\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n parentLookup: Map<string, InternalNodeBase<NodeType>[]>,\n options: UpdateNodesOptions<NodeType> = {\n nodeOrigin: [0, 0] as NodeOrigin,\n elevateNodesOnSelect: true,\n defaults: {},\n checkEquality: true,\n },\n) {\n const tmpLookup = new Map(nodeLookup);\n nodeLookup.clear();\n parentLookup.clear();\n\n const selectedNodeZ: number = options?.elevateNodesOnSelect ? 1000 : 0;\n\n nodes.forEach((userNode) => {\n let internalNode = tmpLookup.get(userNode.id);\n\n if (\n options.checkEquality &&\n userNode === internalNode?.internals.userNode\n ) {\n nodeLookup.set(userNode.id, internalNode);\n } else {\n internalNode = {\n ...options.defaults,\n ...userNode,\n measured: {\n width: userNode.measured?.width,\n height: userNode.measured?.height,\n },\n internals: {\n positionAbsolute: userNode.position,\n handleBounds: internalNode?.internals.handleBounds,\n z:\n (isNumeric(userNode.zIndex) ? userNode.zIndex : 0) +\n (userNode.selected ? selectedNodeZ : 0),\n userNode,\n },\n };\n nodeLookup.set(userNode.id, internalNode);\n }\n\n if (userNode.parentId) {\n const childNodes = parentLookup.get(userNode.parentId);\n if (childNodes) {\n childNodes.push(internalNode);\n } else {\n parentLookup.set(userNode.parentId, [internalNode]);\n }\n }\n });\n\n if (parentLookup.size > 0) {\n updateAbsolutePositions(nodeLookup, options);\n }\n}\n\nexport function handleExpandParent(\n children: ParentExpandChild[],\n nodeLookup: NodeLookup,\n parentLookup: ParentLookup,\n nodeOrigin?: NodeOrigin,\n): (NodeDimensionChange | NodePositionChange)[] {\n const changes: (NodeDimensionChange | NodePositionChange)[] = [];\n const parentExpansions = new Map<\n string,\n { expandedRect: Rect; parent: InternalNodeBase }\n >();\n\n // determine the expanded rectangle the child nodes would take for each parent\n for (const child of children) {\n const parent = nodeLookup.get(child.parentId);\n if (!parent) {\n continue;\n }\n\n const parentRect =\n parentExpansions.get(child.parentId)?.expandedRect ??\n nodeToRect(parent, parent.origin ?? nodeOrigin);\n const expandedRect = getBoundsOfRects(parentRect, child.rect);\n parentExpansions.set(child.parentId, { expandedRect, parent });\n }\n\n if (parentExpansions.size > 0) {\n parentExpansions.forEach(({ expandedRect, parent }, parentId) => {\n // determine the position & dimensions of the parent\n const { position } = getNodePositionWithOrigin(parent, parent.origin);\n const dimensions = getNodeDimensions(parent);\n\n // determine how much the parent expands by moving the position\n const xChange =\n expandedRect.x < position.x\n ? Math.round(Math.abs(position.x - expandedRect.x))\n : 0;\n const yChange =\n expandedRect.y < position.y\n ? Math.round(Math.abs(position.y - expandedRect.y))\n : 0;\n\n if (xChange > 0 || yChange > 0) {\n changes.push({\n id: parentId,\n type: 'position',\n position: {\n x: position.x - xChange,\n y: position.y - yChange,\n },\n });\n\n // We move all child nodes in the oppsite direction\n // so the x,y changes of the parent do not move the children\n const childNodes = parentLookup.get(parentId);\n childNodes?.forEach((childNode) => {\n if (!children.some((child) => child.id === childNode.id)) {\n changes.push({\n id: childNode.id,\n type: 'position',\n position: {\n x: childNode.position.x + xChange,\n y: childNode.position.y + yChange,\n },\n });\n }\n });\n }\n\n if (\n dimensions.width < expandedRect.width ||\n dimensions.height < expandedRect.height\n ) {\n changes.push({\n id: parentId,\n type: 'dimensions',\n setAttributes: true,\n dimensions: {\n width: Math.max(dimensions.width, Math.round(expandedRect.width)),\n height: Math.max(\n dimensions.height,\n Math.round(expandedRect.height),\n ),\n },\n });\n }\n });\n }\n\n return changes;\n}\n\nexport function panBy({\n delta,\n panZoom,\n transform,\n translateExtent,\n width,\n height,\n}: {\n delta: XYPosition;\n panZoom: PanZoomInstance | null;\n transform: Transform;\n translateExtent: CoordinateExtent;\n width: number;\n height: number;\n}) {\n if (!panZoom || (!delta.x && !delta.y)) {\n return false;\n }\n\n const nextViewport = panZoom.setViewportConstrained(\n {\n x: transform[0] + delta.x,\n y: transform[1] + delta.y,\n zoom: transform[2],\n },\n [\n [0, 0],\n [width, height],\n ],\n translateExtent,\n );\n\n const transformChanged =\n !!nextViewport &&\n (nextViewport.x !== transform[0] ||\n nextViewport.y !== transform[1] ||\n nextViewport.k !== transform[2]);\n\n return transformChanged;\n}\n","import { Ref, ReactNode, RefAttributes, forwardRef } from 'react';\nimport {\n XYPosition,\n Transform,\n SnapGrid,\n InternalNodeBase,\n NodeBase,\n NodeOrigin,\n Rect,\n Box,\n CoordinateExtent,\n Viewport,\n Dimensions,\n NodeLookup,\n} from '../types/system';\nimport { Node } from '../types';\nimport { getNodePositionWithOrigin } from './store';\n\nexport const clamp = (val: number, min = 0, max = 1): number =>\n Math.min(Math.max(val, min), max);\n\nexport const clampPosition = (\n position: XYPosition = { x: 0, y: 0 },\n extent: CoordinateExtent,\n) => ({\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1]),\n});\n\nexport function getNodeDimensions(node: {\n measured?: { width?: number; height?: number };\n width?: number;\n height?: number;\n initialWidth?: number;\n initialHeight?: number;\n}): { width: number; height: number } {\n return {\n width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0,\n height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0,\n };\n}\n\nexport const isNumeric = (n: any): n is number => !isNaN(n) && isFinite(n);\n\nexport const snapPosition = (\n position: XYPosition,\n snapGrid: SnapGrid = [1, 1],\n): XYPosition => {\n return {\n x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n y: snapGrid[1] * Math.round(position.y / snapGrid[1]),\n };\n};\n\nexport const pointToRendererPoint = (\n { x, y }: XYPosition,\n [tx, ty, tScale]: Transform,\n snapToGrid = false,\n snapGrid: SnapGrid = [1, 1],\n): XYPosition => {\n const position: XYPosition = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale,\n };\n\n return snapToGrid ? snapPosition(position, snapGrid) : position;\n};\n\nexport const nodeToRect = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): Rect => {\n const { x, y } = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;\n\n return {\n x,\n y,\n width: node.measured?.width ?? node.width ?? 0,\n height: node.measured?.height ?? node.height ?? 0,\n };\n};\n\nexport const getBoundsOfBoxes = (box1: Box, box2: Box): Box => ({\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2),\n});\n\nexport const rectToBox = ({ x, y, width, height }: Rect): Box => ({\n x,\n y,\n x2: x + width,\n y2: y + height,\n});\n\nexport const boxToRect = ({ x, y, x2, y2 }: Box): Rect => ({\n x,\n y,\n width: x2 - x,\n height: y2 - y,\n});\n\nexport const nodeToBox = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): Box => {\n const { x, y } = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;\n\n return {\n x,\n y,\n x2: x + (node.measured?.width ?? node.width ?? 0),\n y2: y + (node.measured?.height ?? node.height ?? 0),\n };\n};\n\nexport const getBoundsOfRects = (rect1: Rect, rect2: Rect): Rect =>\n boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\n\nexport function fixedForwardRef<T, P = {}>(\n render: (props: P, ref: Ref<T>) => JSX.Element,\n): (props: P & RefAttributes<T>) => JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return forwardRef(render) as any;\n}\n\nexport const getOverlappingArea = (rectA: Rect, rectB: Rect): number => {\n const xOverlap = Math.max(\n 0,\n Math.min(rectA.x + rectA.width, rectB.x + rectB.width) -\n Math.max(rectA.x, rectB.x),\n );\n const yOverlap = Math.max(\n 0,\n Math.min(rectA.y + rectA.height, rectB.y + rectB.height) -\n Math.max(rectA.y, rectB.y),\n );\n\n return Math.ceil(xOverlap * yOverlap);\n};\n\nexport const getViewportForBounds = (\n bounds: Rect,\n width: number,\n height: number,\n minZoom: number,\n maxZoom: number,\n padding: number,\n): Viewport => {\n const xZoom = width / (bounds.width * (1 + padding));\n const yZoom = height / (bounds.height * (1 + padding));\n const zoom = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom;\n const y = height / 2 - boundsCenterY * clampedZoom;\n\n return { x, y, zoom: clampedZoom };\n};\n\nexport function isCoordinateExtent(\n extent?: CoordinateExtent | 'parent',\n): extent is CoordinateExtent {\n return extent !== undefined && extent !== 'parent';\n}\n\nexport function nodeHasDimensions<NodeType extends NodeBase = NodeBase>(\n node: NodeType,\n): boolean {\n return (\n (node.measured?.width ?? node.width ?? node.initialWidth) !== undefined &&\n (node.measured?.height ?? node.height ?? node.initialHeight) !== undefined\n );\n}\n\nconst calcAutoPanVelocity = (\n value: number,\n min: number,\n max: number,\n): number => {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, 50) / 50;\n } else if (value > max) {\n return -clamp(Math.abs(value - max), 1, 50) / 50;\n }\n\n return 0;\n};\n\nexport const calcAutoPan = (pos: XYPosition, bounds: Dimensions): number[] => {\n const xMovement = calcAutoPanVelocity(pos.x, 35, bounds.width - 35) * 20;\n const yMovement = calcAutoPanVelocity(pos.y, 35, bounds.height - 35) * 20;\n\n return [xMovement, yMovement];\n};\n\nexport const getPositionWithOrigin = ({\n x,\n y,\n width,\n height,\n origin = [0, 0],\n}: {\n x: number;\n y: number;\n width: number;\n height: number;\n origin?: NodeOrigin;\n}): XYPosition => {\n if (\n !width ||\n !height ||\n origin[0] < 0 ||\n origin[1] < 0 ||\n origin[0] > 1 ||\n origin[1] > 1\n ) {\n return { x, y };\n }\n\n return {\n x: x - width * origin[0],\n y: y - height * origin[1],\n };\n};\n\nexport const rendererPointToPoint = (\n { x, y }: XYPosition,\n [tx, ty, tScale]: Transform,\n): XYPosition => {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty,\n };\n};\n\nexport const isMacOs = () =>\n typeof navigator !== 'undefined' && navigator?.userAgent?.indexOf('Mac') >= 0;\n\nexport const isNode = <NodeType extends Node = Node>(\n element: unknown,\n): element is NodeType => isNodeBase<NodeType>(element);\n\nexport const isNodeBase = <NodeType extends NodeBase = NodeBase>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'position' in element &&\n !('source' in element) &&\n !('target' in element);\n\n/**\n * Convert child position to aboslute position\n *\n * @internal\n * @param position\n * @param parentId\n * @param nodeLookup\n * @param nodeOrigin\n * @returns an internal node with an absolute position\n */\nexport function evaluateAbsolutePosition(\n position: XYPosition,\n parentId: string,\n nodeLookup: NodeLookup,\n nodeOrigin: NodeOrigin = [0, 0],\n): XYPosition {\n let nextParentId: string | undefined = parentId;\n const positionAbsolute = { ...position };\n\n while (nextParentId) {\n const parent = nodeLookup.get(parentId);\n nextParentId = parent?.parentId;\n\n if (parent) {\n const origin = parent.origin || nodeOrigin;\n const xOffset = (parent.measured.width ?? 0) * origin[0];\n const yOffset = (parent.measured.height ?? 0) * origin[1];\n positionAbsolute.x += parent.position.x - xOffset;\n positionAbsolute.y += parent.position.y - yOffset;\n }\n }\n\n return positionAbsolute;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isRectObject = (obj: any): obj is Rect =>\n isNumeric(obj.width) &&\n isNumeric(obj.height) &&\n isNumeric(obj.x) &&\n isNumeric(obj.y);\n\nexport const devWarn = (id: string, message: string) => {\n // if (process.env.NODE_ENV === 'development') {\n // console.warn(\n // `[Ink Flow]: ${message} Help: https://reactflow.dev/error#${id}`,\n // );\n // }\n};\n","import {\n Transform,\n SnapGrid,\n XYPosition,\n Dimensions,\n NodeOrigin,\n HandleElement,\n Position,\n} from '../types/system';\nimport { pointToRendererPoint, snapPosition } from './general';\n\nexport type GetPointerPositionParams = {\n transform: Transform;\n snapGrid?: SnapGrid;\n snapToGrid?: boolean;\n};\n\nexport function getPointerPosition(\n event: MouseEvent | TouchEvent,\n {\n snapGrid = [0, 0],\n snapToGrid = false,\n transform,\n }: GetPointerPositionParams,\n): XYPosition & { xSnapped: number; ySnapped: number } {\n const { x, y } = getEventPosition(event);\n const pointerPos = pointToRendererPoint({ x, y }, transform);\n const { x: xSnapped, y: ySnapped } = snapToGrid\n ? snapPosition(pointerPos, snapGrid)\n : pointerPos;\n\n // we need the snapped position in order to be able to skip unnecessary drag events\n return {\n xSnapped,\n ySnapped,\n ...pointerPos,\n };\n}\n\nexport const getDimensions = (node: HTMLDivElement): Dimensions => ({\n width: node.offsetWidth,\n height: node.offsetHeight,\n});\n\nexport const getHostForElement = (\n element: HTMLElement,\n): Document | ShadowRoot =>\n (element.getRootNode?.() as Document | ShadowRoot) || window?.document;\n\nconst inputTags = ['INPUT', 'SELECT', 'TEXTAREA'];\n\nexport function isInputDOMNode(event: KeyboardEvent): boolean {\n // using composed path for handling shadow dom\n const target = (event.composedPath?.()?.[0] || event.target) as HTMLElement;\n const isInput =\n inputTags.includes(target?.nodeName) ||\n target?.hasAttribute('contenteditable');\n\n // when an input field is focused we don't want to trigger deletion or movement of nodes\n return isInput || !!target?.closest('.nokey');\n}\n\nexport const isMouseEvent = (\n event: MouseEvent | TouchEvent,\n): event is MouseEvent => 'clientX' in event;\n\nexport const getEventPosition = (\n event: MouseEvent | TouchEvent,\n bounds?: DOMRect,\n) => {\n const isMouse = isMouseEvent(event);\n const evtX = isMouse ? event.clientX : event.touches?.[0].clientX;\n const evtY = isMouse ? event.clientY : event.touches?.[0].clientY;\n\n return {\n x: evtX - (bounds?.left ?? 0),\n y: evtY - (bounds?.top ?? 0),\n };\n};\n\n// The handle bounds are calculated relative to the node element.\n// We store them in the internals object of the node in order to avoid\n// unnecessary recalculations.\nexport const getHandleBounds = (\n selector: string,\n nodeElement: HTMLDivElement,\n zoom: number,\n nodeOrigin: NodeOrigin = [0, 0],\n): HandleElement[] | null => {\n const handles = nodeElement.querySelectorAll(selector);\n\n if (!handles || !handles.length) {\n return null;\n }\n\n const handlesArray = Array.from(handles) as HTMLDivElement[];\n\n // @todo can't we use the node dimensions here?\n const nodeBounds = nodeElement.getBoundingClientRect();\n const nodeOffset = {\n x: nodeBounds.width * nodeOrigin[0],\n y: nodeBounds.height * nodeOrigin[1],\n };\n\n return handlesArray.map((handle): HandleElement => {\n const handleBounds = handle.getBoundingClientRect();\n\n return {\n id: handle.getAttribute('data-handleid'),\n position: handle.getAttribute('data-handlepos') as unknown as Position,\n x: (handleBounds.left - nodeBounds.left - nodeOffset.x) / zoom,\n y: (handleBounds.top - nodeBounds.top - nodeOffset.y) / zoom,\n ...getDimensions(handle),\n };\n });\n};\n","import { useState, useEffect, useRef, useMemo } from 'react';\nimport { KeyCode } from '../types/system';\nimport { isInputDOMNode } from '../utils/dom';\n\ntype Keys = Array<string>;\ntype PressedKeys = Set<string>;\ntype KeyOrCode = 'key' | 'code';\n\nexport type UseKeyPressOptions = {\n target?: Window | Document | HTMLElement | ShadowRoot | null;\n actInsideInputWithModifier?: boolean;\n};\n\nconst defaultDoc = typeof document !== 'undefined' ? document : null;\n\n/**\n * Hook for handling key events.\n *\n * @public\n * @param param.keyCode - The key code (string or array of strings) to use\n * @param param.options - Options\n * @returns boolean\n */\nexport function useKeyPress(\n // the keycode can be a string 'a' or an array of strings ['a', 'a+d']\n // a string means a single key 'a' or a combination when '+' is used 'a+d'\n // an array means different possibilites. Explainer: ['a', 'd+s'] here the\n // user can use the single key 'a' or the combination 'd' + 's'\n keyCode: KeyCode | null = null,\n options: UseKeyPressOptions = {\n target: defaultDoc,\n actInsideInputWithModifier: true,\n },\n): boolean {\n const [keyPressed, setKeyPressed] = useState(false);\n\n // we need to remember if a modifier key is pressed in order to track it\n const modifierPressed = useRef(false);\n\n // we need to remember the pressed keys in order to support combinations\n const pressedKeys = useRef<PressedKeys>(new Set([]));\n\n // keyCodes = array with single keys [['a']] or key combinations [['a', 's']]\n // keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft']\n // used to check if we store event.code or event.key. When the code is in the list of keysToWatch\n // we use the code otherwise the key. Explainer: When you press the left \"command\" key, the code is \"MetaLeft\"\n // and the key is \"Meta\". We want users to be able to pass keys and codes so we assume that the key is meant when\n // we can't find it in the list of keysToWatch.\n const [keyCodes, keysToWatch] = useMemo<[Array<Keys>, Keys]>(() => {\n if (keyCode !== null) {\n const keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode];\n const keys = keyCodeArr\n .filter((kc) => typeof kc === 'string')\n .map((kc) => kc.split('+'));\n const keysFlat = keys.reduce(\n (res: Keys, item) => res.concat(...item),\n [],\n );\n\n return [keys, keysFlat];\n }\n\n return [[], []];\n }, [keyCode]);\n\n useEffect(() => {\n const target = options?.target || defaultDoc;\n\n if (keyCode !== null) {\n const downHandler = (event: KeyboardEvent) => {\n modifierPressed.current =\n event.ctrlKey || event.metaKey || event.shiftKey;\n const preventAction =\n (!modifierPressed.current ||\n (modifierPressed.current && !options.actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n pressedKeys.current.add(event[keyOrCode]);\n\n if (isMatchingKey(keyCodes, pressedKeys.current, false)) {\n event.preventDefault();\n setKeyPressed(true);\n }\n };\n\n const upHandler = (event: KeyboardEvent) => {\n const preventAction =\n (!modifierPressed.current ||\n (modifierPressed.current && !options.actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n\n if (isMatchingKey(keyCodes, pressedKeys.current, true)) {\n setKeyPressed(false);\n pressedKeys.current.clear();\n } else {\n pressedKeys.current.delete(event[keyOrCode]);\n }\n\n // fix for Mac: when cmd key is pressed, keyup is not triggered for any other key, see: https://stackoverflow.com/questions/27380018/when-cmd-key-is-kept-pressed-keyup-is-not-triggered-for-any-other-key\n if (event.key === 'Meta') {\n pressedKeys.current.clear();\n }\n\n modifierPressed.current = false;\n };\n\n const resetHandler = () => {\n pressedKeys.current.clear();\n setKeyPressed(false);\n };\n\n target?.addEventListener(\n 'keydown',\n downHandler as EventListenerOrEventListenerObject,\n );\n target?.addEventListener(\n 'keyup',\n upHandler as EventListenerOrEventListenerObject,\n );\n window.addEventListener('blur', resetHandler);\n window.addEventListener('contextmenu', resetHandler);\n\n return () => {\n target?.removeEventListener(\n 'keydown',\n downHandler as EventListenerOrEventListenerObject,\n );\n target?.removeEventListener(\n 'keyup',\n upHandler as EventListenerOrEventListenerObject,\n );\n window.removeEventListener('blur', resetHandler);\n window.removeEventListener('contextmenu', resetHandler);\n };\n }\n }, [keyCode, setKeyPressed]);\n\n return keyPressed;\n}\n\n// utils\n\nfunction isMatchingKey(\n keyCodes: Array<Keys>,\n pressedKeys: PressedKeys,\n isUp: boolean,\n): boolean {\n return (\n keyCodes\n // we only want to compare same sizes of keyCode definitions\n // and pressed keys. When the user specified 'Meta' as a key somewhere\n // this would also be truthy without this filter when user presses 'Meta' + 'r'\n .filter((keys) => isUp || keys.length === pressedKeys.size)\n // since we want to support multiple possibilities only one of the\n // combinations need to be part of the pressed keys\n .some((keys) => keys.every((k) => pressedKeys.has(k)))\n );\n}\n\nfunction useKeyOrCode(eventCode: string, keysToWatch: KeyCode): KeyOrCode {\n return keysToWatch.includes(eventCode) ? 'code' : 'key';\n}\n","function shallow$1(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size)\n return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size)\n return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (const keyA of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {\n return false;\n }\n }\n return true;\n}\n\nvar shallow = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","import type { CSSProperties } from 'react';\n\nexport const containerStyle: CSSProperties = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n D3DragEvent,\n Selection as D3Selection,\n SubjectPosition,\n ZoomBehavior,\n} from 'd3';\n\nimport type { XYPosition, Rect } from './utils';\nimport type {\n InternalNodeBase,\n NodeBase,\n NodeDragItem,\n NodeOrigin,\n} from './nodes';\nimport type { ConnectingHandle, HandleType } from './handles';\nimport { PanZoomInstance } from './panzoom';\nimport { EdgeBase } from '.';\n\nexport type Project = (position: XYPosition) => XYPosition;\n\nexport type OnMove = (\n event: MouseEvent | TouchEvent | null,\n viewport: Viewport,\n) => void;\nexport type OnMoveStart = OnMove;\nexport type OnMoveEnd = OnMove;\n\nexport type ZoomInOut = (options?: ViewportHelperFunctionOptions) => void;\nexport type ZoomTo = (\n zoomLevel: number,\n options?: ViewportHelperFunctionOptions,\n) => void;\nexport type GetZoom = () => number;\nexport type GetViewport = () => Viewport;\nexport type SetViewport = (\n viewport: Viewport,\n options?: ViewportHelperFunctionOptions,\n) => void;\nexport type SetCenter = (\n x: number,\n y: number,\n options?: SetCenterOptions,\n) => void;\nexport type FitBounds = (bounds: Rect, options?: FitBoundsOptions) => void;\n\nexport type Connection = {\n source: string;\n target: string;\n sourceHandle: string | null;\n targetHandle: string | null;\n};\n\nexport type HandleConnection = Connection & {\n edgeId: string;\n};\n\nexport type ConnectionStatus = 'valid' | 'invalid';\n\nexport enum ConnectionMode {\n Strict = 'strict',\n Loose = 'loose',\n}\n\nexport type OnConnectStartParams = {\n nodeId: string | null;\n handleId: string | null;\n handleType: HandleType | null;\n};\n\nexport type OnConnectStart = (\n event: MouseEvent | TouchEvent,\n params: OnConnectStartParams,\n) => void;\nexport type OnConnect = (connection: Connection) => void;\nexport type OnConnectEnd = (event: MouseEvent | TouchEvent) => void;\n\nexport type IsValidConnection = (edge: EdgeBase | Connection) => boolean;\n\nexport type FitViewParamsBase<NodeType extends NodeBase> = {\n nodeLookup: Map<string, InternalNodeBase<NodeType>>;\n width: number;\n height: number;\n panZoom: PanZoomInstance;\n minZoom: number;\n maxZoom: number;\n nodeOrigin?: NodeOrigin;\n};\n\nexport type FitViewOptionsBase<NodeType extends NodeBase = NodeBase> = {\n padding?: number;\n includeHiddenNodes?: boolean;\n minZoom?: number;\n maxZoom?: number;\n duration?: number;\n nodes?: (NodeType | { id: string })[];\n};\n\nexport type Viewport = {\n x: number;\n y: number;\n zoom: number;\n};\n\nexport type KeyCode = string | Array<string>;\n\nexport type SnapGrid = [number, number];\n\nexport enum PanOnScrollMode {\n Free = 'free',\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n\nexport type ViewportHelperFunctionOptions = {\n duration?: number;\n};\n\nexport type SetCenterOptions = ViewportHelperFunctionOptions & {\n zoom?: number;\n};\n\nexport type FitBoundsOptions = ViewportHelperFunctionOptions & {\n padding?: number;\n};\n\nexport type OnViewportChange = (viewport: Viewport) => void;\n\nexport type D3ZoomInstance = ZoomBehavior<Element, unknown>;\nexport type D3SelectionInstance = D3Selection<\n Element,\n unknown,\n null,\n undefined\n>;\nexport type D3ZoomHandler = (this: Element, event: any, d: unknown) => void;\n\nexport type UpdateNodeInternals = (nodeId: string | string[]) => void;\n\nexport type PanelPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport type ProOptions = {\n account?: string;\n hideAttribution: boolean;\n};\n\nexport type UseDragEvent = D3DragEvent<HTMLDivElement, null, SubjectPosition>;\n\nexport enum SelectionMode {\n Partial = 'partial',\n Full = 'full',\n}\n\nexport type SelectionRect = Rect & {\n startX: number;\n startY: number;\n};\n\nexport type OnError = (id: string, message: string) => void;\n\nexport type UpdateNodePositions = (\n dragItems: Map<string, NodeDragItem | InternalNodeBase>,\n dragging?: boolean,\n) => void;\nexport type PanBy = (delta: XYPosition) => boolean;\n\nexport type UpdateConnection = (params: {\n connectionPosition: XYPosition | null;\n connectionStatus: ConnectionStatus | null;\n connectionStartHandle: ConnectingHandle | null;\n connectionEndHandle: ConnectingHandle | null;\n}) => void;\n\nexport type ColorModeClass = 'light' | 'dark';\nexport type ColorMode = ColorModeClass | 'system';\n\nexport type ConnectionLookup = Map<string, Map<string, HandleConnection>>;\n\nexport type OnBeforeDeleteBase<\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n> = ({\n nodes,\n edges,\n}: {\n nodes: NodeType[];\n edges: EdgeType[];\n}) => Promise<boolean | { nodes: NodeType[]; edges: EdgeType[] }>;\n","import { Position } from './utils';\n\nexport type EdgeBase<\n EdgeData extends Record<string, unknown> = Record<string, unknown>,\n EdgeType extends string | undefined = string | undefined\n> = {\n /** Unique id of an edge */\n id: string;\n /** Type of an edge defined in edgeTypes */\n type?: EdgeType;\n /** Id of source node */\n source: string;\n /** Id of target node */\n target: string;\n /** Id of source handle\n * only needed if there are multiple handles per node\n */\n sourceHandle?: string | null;\n /** Id of target handle\n * only needed if there are multiple handles per node\n */\n targetHandle?: string | null;\n animated?: boolean;\n hidden?: boolean;\n deletable?: boolean;\n selectable?: boolean;\n /** Arbitrary data passed to an edge */\n data?: EdgeData;\n selected?: boolean;\n /** Set the marker on the beginning of an edge\n * @example 'arrow', 'arrowclosed' or custom marker\n */\n markerStart?: EdgeMarkerType;\n /** Set the marker on the end of an edge\n * @example 'arrow', 'arrowclosed' or custom marker\n */\n markerEnd?: EdgeMarkerType;\n zIndex?: number;\n ariaLabel?: string;\n /** Padding around the edge where interaction is still possible */\n interactionWidth?: number;\n};\n\nexport type SmoothStepPathOptions = {\n offset?: number;\n borderRadius?: number;\n};\n\nexport type StepPathOptions = {\n offset?: number;\n};\n\nexport type BezierPathOptions = {\n curvature?: number;\n};\n\nexport type DefaultEdgeOptionsBase<EdgeType extends EdgeBase> = Omit<\n EdgeType,\n 'id' | 'source' | 'target' | 'sourceHandle' | 'targetHandle' | 'selected'\n>;\n\nexport enum ConnectionLineType {\n Bezier = 'default',\n Straight = 'straight',\n Step = 'step',\n SmoothStep = 'smoothstep',\n SimpleBezier = 'simplebezier',\n}\n\nexport type EdgeMarker = {\n type: MarkerType;\n color?: string;\n width?: number;\n height?: number;\n markerUnits?: string;\n orient?: string;\n strokeWidth?: number;\n};\n\nexport type EdgeMarkerType = string | EdgeMarker;\n\nexport enum MarkerType {\n Arrow = 'arrow',\n ArrowClosed = 'arrowclosed',\n}\n\nexport type MarkerProps = EdgeMarker & {\n id: string;\n};\n\nexport type EdgePosition = {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n sourcePosition: Position;\n targetPosition: Position;\n};\n\nexport type EdgeLookup<EdgeType extends EdgeBase = EdgeBase> = Map<string, EdgeType>;\n","export enum Position {\n Left = 'left',\n Top = 'top',\n Right = 'right',\n Bottom = 'bottom',\n}\n\nexport type XYPosition = {\n x: number;\n y: number;\n};\n\nexport type XYZPosition = XYPosition & { z: number };\n\nexport type Dimensions = {\n width: number;\n height: number;\n};\n\nexport type Rect = Dimensions & XYPosition;\n\nexport type Box = XYPosition & {\n x2: number;\n y2: number;\n};\n\nexport type Transform = [number, number, number];\n\nexport type CoordinateExtent = [[number, number], [number, number]];\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type ZoomTransform, zoomIdentity } from 'd3-zoom';\nimport { Viewport, D3SelectionInstance } from '../../types/system';\nimport { isMacOs } from '../general';\n\nexport const viewChanged = (\n prevViewport: Viewport,\n eventViewport: any,\n): boolean =>\n prevViewport.x !== eventViewport.x ||\n prevViewport.y !== eventViewport.y ||\n prevViewport.zoom !== eventViewport.k;\n\nexport const transformToViewport = (transform: ZoomTransform): Viewport => ({\n x: transform.x,\n y: transform.y,\n zoom: transform.k,\n});\n\nexport const viewportToTransform = ({ x, y, zoom }: Viewport): ZoomTransform =>\n zoomIdentity.translate(x, y).scale(zoom);\n\nexport const isWrappedWithClass = (event: any, className: string | undefined) =>\n event.target.closest(`.${className}`);\n\nexport const isRightClickPan = (\n panOnDrag: boolean | number[],\n usedButton: number,\n) => usedButton === 2 && Array.isArray(panOnDrag) && panOnDrag.includes(2);\n\nexport const getD3Transition = (selection: D3SelectionInstance, duration = 0) =>\n typeof duration === 'number' && duration > 0\n ? selection.transition().duration(duration)\n : selection;\n\nexport const wheelDelta = (event: any) => {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n\n return (\n -event.deltaY *\n (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) *\n factor\n );\n};\n","import { type ZoomTransform, zoom, zoomTransform } from 'd3-zoom';\nimport { select } from 'd3-selection';\n\nimport { getD3Transition, viewportToTransform, wheelDelta } from './utils';\nimport {\n createPanOnScrollHandler,\n createPanZoomEndHandler,\n createPanZoomHandler,\n createPanZoomStartHandler,\n createZoomOnScrollHandler,\n} from './eventhandler';\nimport { createFilter } from './filter';\nimport {\n Viewport,\n PanZoomInstance,\n PanZoomTransformOptions,\n PanZoomUpdateOptions,\n CoordinateExtent,\n PanZoomParams,\n} from '../../types/system';\nimport { clamp } from '../general';\n\nexport type ZoomPanValues = {\n isZoomingOrPanning: boolean;\n usedRightMouseButton: boolean;\n prevViewport: Viewport;\n mouseButton: number;\n timerId: ReturnType<typeof setTimeout> | undefined;\n panScrollTimeout: ReturnType<typeof setTimeout> | undefined;\n isPanScrolling: boolean;\n};\n\nexport function XYPanZoom({\n domNode,\n minZoom,\n maxZoom,\n translateExtent,\n viewport,\n onPanZoom,\n onPanZoomStart,\n onPanZoomEnd,\n onTransformChange,\n onDraggingChange,\n}: PanZoomParams): PanZoomInstance {\n const zoomPanValues: ZoomPanValues = {\n isZoomingOrPanning: false,\n usedRightMouseButton: false,\n prevViewport: { x: 0, y: 0, zoom: 0 },\n mouseButton: 0,\n timerId: undefined,\n panScrollTimeout: undefined,\n isPanScrolling: false,\n };\n const bbox = domNode.getBoundingClientRect();\n const d3ZoomInstance = zoom()\n .scaleExtent([minZoom, maxZoom])\n .translateExtent(translateExtent);\n const d3Selection = select(domNode).call(d3ZoomInstance);\n\n setViewportConstrained(\n {\n x: viewport.x,\n y: viewport.y,\n zoom: clamp(viewport.zoom, minZoom, maxZoom),\n },\n [\n [0, 0],\n [bbox.width, bbox.height],\n ],\n translateExtent,\n );\n\n const d3ZoomHandler = d3Selection.on('wheel.zoom')!;\n const d3DblClickZoomHandler = d3Selection.on('dblclick.zoom')!;\n d3ZoomInstance.wheelDelta(wheelDelta);\n\n function setTransform(\n transform: ZoomTransform,\n options?: PanZoomTransformOptions,\n ) {\n if (d3Selection) {\n d3ZoomInstance?.transform(\n getD3Transition(d3Selection, options?.duration),\n transform,\n );\n }\n }\n\n // public functions\n function update({\n noWheelClassName,\n noPanClassName,\n onPaneContextMenu,\n userSelectionActive,\n panOnScroll,\n panOnDrag,\n panOnScrollMode,\n panOnScrollSpeed,\n preventScrolling,\n zoomOnPinch,\n zoomOnScroll,\n zoomOnDoubleClick,\n zoomActivationKeyPressed,\n lib,\n }: PanZoomUpdateOptions) {\n if (userSelectionActive && !zoomPanValues.isZoomingOrPanning) {\n destroy();\n }\n\n const isPanOnScroll =\n panOnScroll && !zoomActivationKeyPressed && !userSelectionActive;\n\n const wheelHandler = isPanOnScroll\n ? createPanOnScrollHandler({\n zoomPanValues,\n noWheelClassName,\n d3Selection,\n d3Zoom: d3ZoomInstance,\n panOnScrollMode,\n panOnScrollSpeed,\n zoomOnPinch,\n onPanZoomStart,\n onPanZoom,\n onPanZoomEnd,\n })\n : createZoomOnScrollHandler({\n noWheelClassName,\n preventScrolling,\n d3ZoomHandler,\n });\n\n d3Selection.on('wheel.zoom', wheelHandler, { passive: false });\n\n if (!userSelectionActive) {\n // pan zoom start\n const startHandler = createPanZoomStartHandler({\n zoomPanValues,\n onDraggingChange,\n onPanZoomStart,\n });\n d3ZoomInstance.on('start', startHandler);\n\n // pan zoom\n const panZoomHandler = createPanZoomHandler({\n zoomPanValues,\n panOnDrag,\n onPaneContextMenu: !!onPaneContextMenu,\n onPanZoom,\n onTransformChange,\n });\n d3ZoomInstance.on('zoom', panZoomHandler);\n\n // pan zoom end\n const panZoomEndHandler = createPanZoomEndHandler({\n zoomPanValues,\n panOnDrag,\n panOnScroll,\n onPaneContextMenu,\n onPanZoomEnd,\n onDraggingChange,\n });\n d3ZoomInstance.on('end', panZoomEndHandler);\n }\n\n const filter = createFilter({\n zoomActivationKeyPressed,\n panOnDrag,\n zoomOnScroll,\n panOnScroll,\n zoomOnDoubleClick,\n zoomOnPinch,\n userSelectionActive,\n noPanClassName,\n noWheelClassName,\n lib,\n });\n d3ZoomInstance.filter(filter);\n\n // We cannot add zoomOnDoubleClick to the filter above because\n // double tapping on touch screens circumvents the filter and\n // dblclick.zoom is fired on the selection directly\n if (zoomOnDoubleClick) {\n d3Selection.on('dblclick.zoom', d3DblClickZoomHandler);\n } else {\n d3Selection.on('dblclick.zoom', null);\n }\n }\n\n function destroy() {\n d3ZoomInstance.on('zoom', null);\n }\n\n function setViewportConstrained(\n viewport: Viewport,\n extent: CoordinateExtent,\n translateExtent: CoordinateExtent,\n ): ZoomTransform | undefined {\n const nextTransform = viewportToTransform(viewport);\n const contrainedTransform = d3ZoomInstance?.constrain()(\n nextTransform,\n extent,\n translateExtent,\n );\n\n if (contrainedTransform) {\n setTransform(contrainedTransform);\n }\n\n return contrainedTransform;\n }\n\n function setViewport(viewport: Viewport, options?: PanZoomTransformOptions) {\n const nextTransform = viewportToTransform(viewport);\n\n setTransform(nextTransform, options);\n\n return nextTransform;\n }\n\n function syncViewport(viewport: Viewport) {\n if (d3Selection) {\n const nextTransform = viewportToTransform(viewport);\n const currentTransform = d3Selection.property('__zoom');\n\n if (\n currentTransform.k !== viewport.zoom ||\n currentTransform.x !== viewport.x ||\n currentTransform.y !== viewport.y\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n d3ZoomInstance?.transform(d3Selection, nextTransform, null, {\n sync: true,\n });\n }\n }\n }\n\n function getViewport(): Viewport {\n const transform = d3Selection\n ? zoomTransform(d3Selection.node() as Element)\n : { x: 0, y: 0, k: 1 };\n return { x: transform.x, y: transform.y, zoom: transform.k };\n }\n\n function scaleTo(zoom: number, options?: PanZoomTransformOptions) {\n if (d3Selection) {\n d3ZoomInstance?.scaleTo(\n getD3Transition(d3Selection, options?.duration),\n zoom,\n );\n }\n }\n\n function scaleBy(factor: number, options?: PanZoomTransformOptions) {\n if (d3Selection) {\n d3ZoomInstance?.scaleBy(\n getD3Transition(d3Selection, options?.duration),\n factor,\n );\n }\n }\n\n function setScaleExtent(scaleExtent: [number, number]) {\n d3ZoomInstance?.scaleExtent(scaleExtent);\n }\n\n function setTranslateExtent(translateExtent: CoordinateExtent) {\n d3ZoomInstance?.translateExtent(translateExtent);\n }\n\n return {\n update,\n destroy,\n setViewport,\n setViewportConstrained,\n getViewport,\n scaleTo,\n scaleBy,\n setScaleExtent,\n setTranslateExtent,\n syncViewport,\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport type { D3ZoomEvent } from 'd3-zoom';\nimport { pointer } from 'd3-selection';\n\nimport {\n isRightClickPan,\n isWrappedWithClass,\n transformToViewport,\n viewChanged,\n wheelDelta,\n} from './utils';\nimport { ZoomPanValues } from './XYPanZoom';\nimport {\n D3SelectionInstance,\n D3ZoomInstance,\n PanOnScrollMode,\n OnPanZoom,\n D3ZoomHandler,\n OnDraggingChange,\n OnTransformChange,\n} from '../../types/system';\nimport { isMacOs } from '../general';\n\nexport type PanOnScrollParams = {\n zoomPanValues: ZoomPanValues;\n noWheelClassName: string;\n d3Selection: D3SelectionInstance;\n d3Zoom: D3ZoomInstance;\n panOnScrollMode: PanOnScrollMode;\n panOnScrollSpeed: number;\n zoomOnPinch: boolean;\n onPanZoomStart?: OnPanZoom;\n onPanZoom?: OnPanZoom;\n onPanZoomEnd?: OnPanZoom;\n};\n\nexport type ZoomOnScrollParams = {\n noWheelClassName: string;\n preventScrolling: boolean;\n d3ZoomHandler: D3ZoomHandler;\n};\n\nexport type PanZoomStartParams = {\n zoomPanValues: ZoomPanValues;\n onDraggingChange: OnDraggingChange;\n onPanZoomStart?: OnPanZoom;\n};\n\nexport type PanZoomParams = {\n zoomPanValues: ZoomPanValues;\n panOnDrag: boolean | number[];\n onPaneContextMenu: boolean;\n onTransformChange: OnTransformChange;\n onPanZoom?: OnPanZoom;\n};\n\nexport type PanZoomEndParams = {\n zoomPanValues: ZoomPanValues;\n panOnDrag: boolean | number[];\n panOnScroll: boolean;\n onDraggingChange: (isDragging: boolean) => void;\n onPanZoomEnd?: OnPanZoom;\n onPaneContextMenu?: (event: any) => void;\n};\n\nexport function createPanOnScrollHandler({\n zoomPanValues,\n noWheelClassName,\n d3Selection,\n d3Zoom,\n panOnScrollMode,\n panOnScrollSpeed,\n zoomOnPinch,\n onPanZoomStart,\n onPanZoom,\n onPanZoomEnd,\n}: PanOnScrollParams) {\n return (event: any) => {\n if (isWrappedWithClass(event, noWheelClassName)) {\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n\n const currentZoom = d3Selection.property('__zoom').k || 1;\n\n // macos sets ctrlKey=true for pinch gesture on a trackpad\n if (event.ctrlKey && zoomOnPinch) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom = currentZoom * Math.pow(2, pinchDelta);\n // @ts-ignore\n d3Zoom.scaleTo(d3Selection, zoom, point, event);\n\n return;\n }\n\n // increase scroll speed in firefox\n // firefox: deltaMode === 1; chrome: deltaMode === 0\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX =\n panOnScrollMode === PanOnScrollMode.Vertical\n ? 0\n : event.deltaX * deltaNormalize;\n let deltaY =\n panOnScrollMode === PanOnScrollMode.Horizontal\n ? 0\n : event.deltaY * deltaNormalize;\n\n // this enables vertical scrolling with shift + scroll on windows\n if (\n !isMacOs() &&\n event.shiftKey &&\n panOnScrollMode !== PanOnScrollMode.Vertical\n ) {\n deltaX = event.deltaY * deltaNormalize;\n deltaY = 0;\n }\n\n d3Zoom.translateBy(\n d3Selection,\n -(deltaX / currentZoom) * panOnScrollSpeed,\n -(deltaY / currentZoom) * panOnScrollSpeed,\n // @ts-ignore\n { internal: true },\n );\n\n const nextViewport = transformToViewport(d3Selection.property('__zoom'));\n\n clearTimeout(zoomPanValues.panScrollTimeout);\n\n // for pan on scroll we need to handle the event calls on our own\n // we can't use the start, zoom and end events from d3-zoom\n // because start and move gets called on every scroll event and not once at the beginning\n if (!zoomPanValues.isPanScrolling) {\n zoomPanValues.isPanScrolling = true;\n\n onPanZoomStart?.(event, nextViewport);\n }\n\n if (zoomPanValues.isPanScrolling) {\n onPanZoom?.(event, nextViewport);\n\n zoomPanValues.panScrollTimeout = setTimeout(() => {\n onPanZoomEnd?.(event, nextViewport);\n\n zoomPanValues.isPanScrolling = false;\n }, 150);\n }\n };\n}\n\nexport function createZoomOnScrollHandler({\n noWheelClassName,\n preventScrolling,\n d3ZoomHandler,\n}: ZoomOnScrollParams) {\n return function (this: Element, event: any, d: unknown) {\n // we still want to enable pinch zooming even if preventScrolling is set to false\n const preventZoom =\n !preventScrolling && event.type === 'wheel' && !event.ctrlKey;\n\n if (preventZoom || isWrappedWithClass(event, noWheelClassName)) {\n return null;\n }\n\n event.preventDefault();\n\n d3ZoomHandler.call(this, event, d);\n };\n}\n\nexport function createPanZoomStartHandler({\n zoomPanValues,\n onDraggingChange,\n onPanZoomStart,\n}: PanZoomStartParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n if (event.sourceEvent?.internal) {\n return;\n }\n\n const viewport = transformToViewport(event.transform);\n\n // we need to remember it here, because it's always 0 in the \"zoom\" event\n zoomPanValues.mouseButton = event.sourceEvent?.button || 0;\n zoomPanValues.isZoomingOrPanning = true;\n zoomPanValues.prevViewport = viewport;\n\n if (event.sourceEvent?.type === 'mousedown') {\n onDraggingChange(true);\n }\n\n if (onPanZoomStart) {\n onPanZoomStart?.(event.sourceEvent as MouseEvent | TouchEvent, viewport);\n }\n };\n}\n\nexport function createPanZoomHandler({\n zoomPanValues,\n panOnDrag,\n onPaneContextMenu,\n onTransformChange,\n onPanZoom,\n}: PanZoomParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n zoomPanValues.usedRightMouseButton = !!(\n onPaneContextMenu &&\n isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0)\n );\n\n if (!event.sourceEvent?.sync) {\n onTransformChange([\n event.transform.x,\n event.transform.y,\n event.transform.k,\n ]);\n }\n\n if (onPanZoom && !event.sourceEvent?.internal) {\n onPanZoom?.(\n event.sourceEvent as MouseEvent | TouchEvent,\n transformToViewport(event.transform),\n );\n }\n };\n}\n\nexport function createPanZoomEndHandler({\n zoomPanValues,\n panOnDrag,\n panOnScroll,\n onDraggingChange,\n onPanZoomEnd,\n onPaneContextMenu,\n}: PanZoomEndParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n if (event.sourceEvent?.internal) {\n return;\n }\n\n zoomPanValues.isZoomingOrPanning = false;\n\n if (\n onPaneContextMenu &&\n isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0) &&\n !zoomPanValues.usedRightMouseButton &&\n event.sourceEvent\n ) {\n onPaneContextMenu(event.sourceEvent);\n }\n zoomPanValues.usedRightMouseButton = false;\n\n onDraggingChange(false);\n\n if (\n onPanZoomEnd &&\n viewChanged(zoomPanValues.prevViewport, event.transform)\n ) {\n const viewport = transformToViewport(event.transform);\n zoomPanValues.prevViewport = viewport;\n\n clearTimeout(zoomPanValues.timerId);\n zoomPanValues.timerId = setTimeout(\n () => {\n onPanZoomEnd?.(\n event.sourceEvent as MouseEvent | TouchEvent,\n viewport,\n );\n },\n // we need a setTimeout for panOnScroll to supress multiple end events fired during scroll\n panOnScroll ? 150 : 0,\n );\n }\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isWrappedWithClass } from './utils';\n\nexport type FilterParams = {\n zoomActivationKeyPressed: boolean;\n zoomOnScroll: boolean;\n zoomOnPinch: boolean;\n panOnDrag: boolean | number[];\n panOnScroll: boolean;\n zoomOnDoubleClick: boolean;\n userSelectionActive: boolean;\n noWheelClassName: string;\n noPanClassName: string;\n lib: string;\n};\n\nexport function createFilter({\n zoomActivationKeyPressed,\n zoomOnScroll,\n zoomOnPinch,\n panOnDrag,\n panOnScroll,\n zoomOnDoubleClick,\n userSelectionActive,\n noWheelClassName,\n noPanClassName,\n lib,\n}: FilterParams) {\n return (event: any): boolean => {\n const zoomScroll = zoomActivationKeyPressed || zoomOnScroll;\n const pinchZoom = zoomOnPinch && event.ctrlKey;\n\n if (\n event.button === 1 &&\n event.type === 'mousedown' &&\n (isWrappedWithClass(event, `${lib}-flow__node`) || isWrappedWithClass(event, `${lib}-flow__edge`))\n ) {\n return true;\n }\n\n // if all interactions are disabled, we prevent all zoom events\n if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) {\n return false;\n }\n\n // during a selection we prevent all other interactions\n if (userSelectionActive) {\n return false;\n }\n\n // if the target element is inside an element with the nowheel class, we prevent zooming\n if (isWrappedWithClass(event, noWheelClassName) && event.type === 'wheel') {\n return false;\n }\n\n // if the target element is inside an element with the nopan class, we prevent panning\n if (\n isWrappedWithClass(event, noPanClassName) &&\n (event.type !== 'wheel' || (panOnScroll && event.type === 'wheel' && !zoomActivationKeyPressed))\n ) {\n return false;\n }\n\n if (!zoomOnPinch && event.ctrlKey && event.type === 'wheel') {\n return false;\n }\n\n // when there is no scroll handling enabled, we prevent all wheel events\n if (!zoomScroll && !panOnScroll && !pinchZoom && event.type === 'wheel') {\n return false;\n }\n\n // if the pane is not movable, we prevent dragging it with mousestart or touchstart\n if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) {\n return false;\n }\n\n // if the pane is only movable using allowed clicks\n if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') {\n return false;\n }\n\n // We only allow right clicks if pan on drag is set to right click\n const buttonAllowed =\n (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || !event.button || event.button <= 1;\n\n // default filter for d3-zoom\n return (!event.ctrlKey || event.type === 'wheel') && buttonAllowed;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { containerStyle } from '../../styles/utils';\nimport type { FlowRendererProps } from '../FlowRenderer';\nimport { InkFlowState } from '../../types';\nimport {\n PanOnScrollMode,\n PanZoomInstance,\n Transform,\n} from '../../types/system';\nimport { useKeyPress } from '../../hooks/useKeyPress';\nimport { useResizeHandler } from '../../hooks/useResizeHandler';\nimport { XYPanZoom } from '../../utils/xypanzoom';\n\ntype ZoomPaneProps = Omit<\n FlowRendererProps,\n | 'deleteKeyCode'\n | 'selectionKeyCode'\n | 'multiSelectionKeyCode'\n | 'noDragClassName'\n | 'disableKeyboardA11y'\n | 'selectionOnDrag'\n> & {\n isControlledViewport: boolean;\n};\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n lib: s.lib,\n});\n\nexport function ZoomPane({\n onPaneContextMenu,\n zoomOnScroll = true,\n zoomOnPinch = true,\n panOnScroll = false,\n panOnScrollSpeed = 0.5,\n panOnScrollMode = PanOnScrollMode.Free,\n zoomOnDoubleClick = true,\n panOnDrag = true,\n defaultViewport,\n translateExtent,\n minZoom,\n maxZoom,\n zoomActivationKeyCode,\n preventScrolling = true,\n children,\n noWheelClassName,\n noPanClassName,\n onViewportChange,\n isControlledViewport,\n}: ZoomPaneProps) {\n const store = useStoreApi();\n const zoomPane = useRef<HTMLDivElement>(null);\n const { userSelectionActive, lib } = useStore(selector, shallow);\n const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);\n const panZoom = useRef<PanZoomInstance>();\n\n useResizeHandler(zoomPane);\n\n useEffect(() => {\n if (zoomPane.current) {\n panZoom.current = XYPanZoom({\n domNode: zoomPane.current,\n minZoom,\n maxZoom,\n translateExtent,\n viewport: defaultViewport,\n onTransformChange: (transform: Transform) => {\n onViewportChange?.({\n x: transform[0],\n y: transform[1],\n zoom: transform[2],\n });\n\n if (!isControlledViewport) {\n store.setState({ transform });\n }\n },\n onDraggingChange: (paneDragging: boolean) =>\n store.setState({ paneDragging }),\n onPanZoomStart: (event, vp) => {\n const { onViewportChangeStart, onMoveStart } = store.getState();\n onMoveStart?.(event, vp);\n onViewportChangeStart?.(vp);\n },\n onPanZoom: (event, vp) => {\n const { onViewportChange, onMove } = store.getState();\n onMove?.(event, vp);\n onViewportChange?.(vp);\n },\n onPanZoomEnd: (event, vp) => {\n const { onViewportChangeEnd, onMoveEnd } = store.getState();\n onMoveEnd?.(event, vp);\n onViewportChangeEnd?.(vp);\n },\n });\n\n const { x, y, zoom } = panZoom.current!.getViewport();\n\n store.setState({\n panZoom: panZoom.current,\n transform: [x, y, zoom],\n domNode: zoomPane.current.closest('.ink-flow') as HTMLDivElement,\n });\n\n return () => {\n panZoom.current?.destroy();\n };\n }\n }, []);\n\n useEffect(() => {\n panZoom.current?.update({\n onPaneContextMenu,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag,\n zoomActivationKeyPressed,\n preventScrolling,\n noPanClassName,\n userSelectionActive,\n noWheelClassName,\n lib,\n });\n }, [\n onPaneContextMenu,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag,\n zoomActivationKeyPressed,\n preventScrolling,\n noPanClassName,\n userSelectionActive,\n noWheelClassName,\n lib,\n ]);\n\n return (\n <div className=\"ink-flow__renderer\" ref={zoomPane} style={containerStyle}>\n {children}\n </div>\n );\n}\n","import { useEffect, type MutableRefObject } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { errorMessages } from '../constants';\nimport { getDimensions } from '../utils/dom';\n\n/**\n * Hook for handling resize events.\n *\n * @internal\n */\nexport function useResizeHandler(\n domNode: MutableRefObject<HTMLDivElement | null>,\n): void {\n const store = useStoreApi();\n\n useEffect(() => {\n const updateDimensions = () => {\n if (!domNode.current) {\n return false;\n }\n const size = getDimensions(domNode.current!);\n\n if (size.height === 0 || size.width === 0) {\n store.getState().onError?.('004', errorMessages['error004']());\n }\n\n store.setState({ width: size.width || 500, height: size.height || 500 });\n };\n\n if (domNode.current) {\n updateDimensions();\n window.addEventListener('resize', updateDimensions);\n\n const resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(domNode.current);\n\n return () => {\n window.removeEventListener('resize', updateDimensions);\n\n if (resizeObserver && domNode.current) {\n resizeObserver.unobserve(domNode.current);\n }\n };\n }\n }, []);\n}\n","import { useEffect } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { useKeyPress, UseKeyPressOptions } from './useKeyPress';\nimport { Edge, Node } from '../types';\nimport { KeyCode } from '../types/system';\n\nconst selected = (item: Node | Edge) => item.selected;\n\nconst deleteKeyOptions: UseKeyPressOptions = {\n actInsideInputWithModifier: false,\n};\n\n/**\n * Hook for handling global key events.\n *\n * @internal\n */\nexport function useGlobalKeyHandler({\n deleteKeyCode,\n multiSelectionKeyCode,\n}: {\n deleteKeyCode: KeyCode | null;\n multiSelectionKeyCode: KeyCode | null;\n}): void {\n const store = useStoreApi();\n // const { deleteElements } = useInkFlow();\n\n const deleteKeyPressed = useKeyPress(deleteKeyCode, deleteKeyOptions);\n const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode);\n\n useEffect(() => {\n if (deleteKeyPressed) {\n const { edges, nodes } = store.getState();\n // deleteElements({\n // nodes: nodes.filter(selected),\n // edges: edges.filter(selected),\n // });\n store.setState({ nodesSelectionActive: false });\n }\n }, [deleteKeyPressed]);\n\n useEffect(() => {\n store.setState({ multiSelectionActive: multiSelectionKeyPressed });\n }, [multiSelectionKeyPressed]);\n}\n","import { Edge, InternalNode, Node } from '../types';\nimport {\n EdgeChange,\n EdgeLookup,\n EdgeRemoveChange,\n EdgeSelectionChange,\n NodeChange,\n NodeLookup,\n NodeRemoveChange,\n NodeSelectionChange,\n} from '../types/system';\n\nfunction applyChange(change: any, element: any): any {\n switch (change.type) {\n case 'select': {\n element.selected = change.selected;\n break;\n }\n\n case 'position': {\n if (typeof change.position !== 'undefined') {\n element.position = change.position;\n }\n\n if (typeof change.dragging !== 'undefined') {\n element.dragging = change.dragging;\n }\n\n break;\n }\n\n case 'dimensions': {\n if (typeof change.dimensions !== 'undefined') {\n element.measured ??= {};\n element.measured.width = change.dimensions.width;\n element.measured.height = change.dimensions.height;\n\n if (change.setAttributes) {\n element.width = change.dimensions.width;\n element.height = change.dimensions.height;\n }\n }\n\n if (typeof change.resizing === 'boolean') {\n element.resizing = change.resizing;\n }\n\n break;\n }\n }\n}\n\nfunction applyChanges(changes: any[], elements: any[]): any[] {\n const updatedElements: any[] = [];\n // By storing a map of changes for each element, we can a quick lookup as we\n // iterate over the elements array!\n const changesMap = new Map<any, any[]>();\n\n for (const change of changes) {\n if (change.type === 'add') {\n updatedElements.push(change.item);\n continue;\n } else if (change.type === 'remove' || change.type === 'replace') {\n // For a 'remove' change we can safely ignore any other changes queued for\n // the same element, it's going to be removed anyway!\n changesMap.set(change.id, [change]);\n } else {\n const elementChanges = changesMap.get(change.id);\n\n if (elementChanges) {\n // If we have some changes queued already, we can do a mutable update of\n // that array and save ourselves some copying.\n elementChanges.push(change);\n } else {\n changesMap.set(change.id, [change]);\n }\n }\n }\n\n for (const element of elements) {\n const changes = changesMap.get(element.id);\n\n // When there are no changes for an element we can just push it unmodified,\n // no need to copy it.\n if (!changes) {\n updatedElements.push(element);\n continue;\n }\n\n // If we have a 'remove' change queued, it'll be the only change in the array\n if (changes[0].type === 'remove') {\n continue;\n }\n\n if (changes[0].type === 'replace') {\n updatedElements.push({ ...changes[0].item });\n continue;\n }\n\n // For other types of changes, we want to start with a shallow copy of the\n // object so React knows this element has changed. Sequential changes will\n /// each _mutate_ this object, so there's only ever one copy.\n const updatedElement = { ...element };\n\n for (const change of changes) {\n applyChange(change, updatedElement);\n }\n\n updatedElements.push(updatedElement);\n }\n\n return updatedElements;\n}\n\nexport function applyEdgeChanges<EdgeType extends Edge = Edge>(\n changes: EdgeChange<EdgeType>[],\n edges: EdgeType[],\n): EdgeType[] {\n return applyChanges(changes, edges) as EdgeType[];\n}\n\nexport function applyNodeChanges<NodeType extends Node = Node>(\n changes: NodeChange<NodeType>[],\n nodes: NodeType[],\n): NodeType[] {\n return applyChanges(changes, nodes) as NodeType[];\n}\n\nexport function createSelectionChange(\n id: string,\n selected: boolean,\n): NodeSelectionChange | EdgeSelectionChange {\n return {\n id,\n type: 'select',\n selected,\n };\n}\n\nexport function getSelectionChanges(\n items: Map<string, any>,\n selectedIds: Set<string> = new Set(),\n mutateItem = false,\n): NodeSelectionChange[] | EdgeSelectionChange[] {\n const changes: NodeSelectionChange[] | EdgeSelectionChange[] = [];\n\n for (const [id, item] of items) {\n const willBeSelected = selectedIds.has(id);\n\n // we don't want to set all items to selected=false on the first selection\n if (\n !(item.selected === undefined && !willBeSelected) &&\n item.selected !== willBeSelected\n ) {\n if (mutateItem) {\n // this hack is needed for nodes. When the user dragged a node, it's selected.\n // When another node gets dragged, we need to deselect the previous one,\n // in order to have only one selected node at a time - the onNodesChange callback comes too late here :/\n item.selected = willBeSelected;\n }\n changes.push(createSelectionChange(item.id, willBeSelected));\n }\n }\n\n return changes;\n}\n\nexport function getElementsDiffChanges({\n items,\n lookup,\n}: {\n items: Node[] | undefined;\n lookup: NodeLookup<InternalNode<Node>>;\n}): NodeChange[];\nexport function getElementsDiffChanges({\n items,\n lookup,\n}: {\n items: Edge[] | undefined;\n lookup: EdgeLookup;\n}): EdgeChange[];\nexport function getElementsDiffChanges({\n items = [],\n lookup,\n}: {\n items: any[] | undefined;\n lookup: Map<string, any>;\n}): any[] {\n const changes: any[] = [];\n const itemsLookup = new Map<string, any>(\n items.map((item) => [item.id, item]),\n );\n\n for (const item of items) {\n const lookupItem = lookup.get(item.id);\n const storeItem = lookupItem?.internals?.userNode ?? lookupItem;\n\n if (storeItem !== undefined && storeItem !== item) {\n changes.push({ id: item.id, item: item, type: 'replace' });\n }\n\n if (storeItem === undefined) {\n changes.push({ item: item, type: 'add' });\n }\n }\n\n for (const [id] of lookup) {\n const nextNode = itemsLookup.get(id);\n\n if (nextNode === undefined) {\n changes.push({ id, type: 'remove' });\n }\n }\n\n return changes;\n}\n\nexport function elementToRemoveChange<T extends Node | Edge>(\n item: T,\n): NodeRemoveChange | EdgeRemoveChange {\n return {\n id: item.id,\n type: 'remove',\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n boxToRect,\n clampPosition,\n getBoundsOfBoxes,\n getOverlappingArea,\n nodeToRect,\n pointToRendererPoint,\n getViewportForBounds,\n isCoordinateExtent,\n getNodeDimensions,\n nodeToBox,\n} from './general';\n\nimport { errorMessages } from '../constants';\nimport {\n EdgeBase,\n NodeBase,\n InternalNodeBase,\n NodeOrigin,\n XYPosition,\n Rect,\n NodeDragItem,\n Transform,\n FitViewParamsBase,\n FitViewOptionsBase,\n CoordinateExtent,\n NodeLookup,\n OnError,\n OnBeforeDeleteBase,\n} from '../types/system';\n\n/**\n * Test whether an object is useable as an Edge\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Edge\n */\nexport const isEdgeBase = <EdgeType extends EdgeBase = EdgeBase>(\n element: any,\n): element is EdgeType =>\n 'id' in element && 'source' in element && 'target' in element;\n\n/**\n * Test whether an object is useable as a Node\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Node\n */\nexport const isNodeBase = <NodeType extends NodeBase = NodeBase>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'position' in element &&\n !('source' in element) &&\n !('target' in element);\n\nexport const isInternalNodeBase = <\n NodeType extends InternalNodeBase = InternalNodeBase,\n>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'internals' in element &&\n !('source' in element) &&\n !('target' in element);\n\n/**\n * Pass in a node, and get connected nodes where edge.source === node.id\n * @public\n * @param node - The node to get the connected nodes from\n * @param nodes - The array of all nodes\n * @param edges - The array of all edges\n * @returns An array of nodes that are connected over eges where the source is the given node\n */\nexport const getOutgoers = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n node: NodeType | { id: string },\n nodes: NodeType[],\n edges: EdgeType[],\n): NodeType[] => {\n if (!node.id) {\n return [];\n }\n\n const outgoerIds = new Set();\n edges.forEach((edge) => {\n if (edge.source === node.id) {\n outgoerIds.add(edge.target);\n }\n });\n\n return nodes.filter((n) => outgoerIds.has(n.id));\n};\n\n/**\n * Pass in a node, and get connected nodes where edge.target === node.id\n * @public\n * @param node - The node to get the connected nodes from\n * @param nodes - The array of all nodes\n * @param edges - The array of all edges\n * @returns An array of nodes that are connected over eges where the target is the given node\n */\nexport const getIncomers = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n node: NodeType | { id: string },\n nodes: NodeType[],\n edges: EdgeType[],\n): NodeType[] => {\n if (!node.id) {\n return [];\n }\n const incomersIds = new Set();\n edges.forEach((edge) => {\n if (edge.target === node.id) {\n incomersIds.add(edge.source);\n }\n });\n\n return nodes.filter((n) => incomersIds.has(n.id));\n};\n\nexport const getNodePositionWithOrigin = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): { position: XYPosition; positionAbsolute: XYPosition } => {\n const { width, height } = getNodeDimensions(node);\n const positionAbsolute =\n 'internals' in node ? node.internals.positionAbsolute : node.position;\n const origin = node.origin || nodeOrigin;\n const offsetX = width * origin[0];\n const offsetY = height * origin[1];\n\n return {\n position: {\n x: node.position.x - offsetX,\n y: node.position.y - offsetY,\n },\n positionAbsolute: {\n x: positionAbsolute.x - offsetX,\n y: positionAbsolute.y - offsetY,\n },\n };\n};\n\nexport type GetNodesBoundsParams = {\n nodeOrigin?: NodeOrigin;\n};\n\n/**\n * Determines a bounding box that contains all given nodes in an array\n * @public\n * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport.\n * @param nodes - Nodes to calculate the bounds for\n * @param params.nodeOrigin - Origin of the nodes: [0, 0] - top left, [0.5, 0.5] - center\n * @returns Bounding box enclosing all nodes\n */\nexport const getNodesBounds = (\n nodes: NodeBase[],\n params: GetNodesBoundsParams = { nodeOrigin: [0, 0] },\n): Rect => {\n if (nodes.length === 0) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n const box = nodes.reduce(\n (currBox, node) => {\n const nodeBox = nodeToBox(node, params.nodeOrigin);\n return getBoundsOfBoxes(currBox, nodeBox);\n },\n { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity },\n );\n\n return boxToRect(box);\n};\n\nexport type GetInternalNodesBoundsParams<NodeType> = {\n nodeOrigin?: NodeOrigin;\n useRelativePosition?: boolean;\n filter?: (node: NodeType) => boolean;\n};\n\n/**\n * Determines a bounding box that contains all given nodes in an array\n * @internal\n */\nexport const getInternalNodesBounds = <\n NodeType extends InternalNodeBase | NodeDragItem,\n>(\n nodeLookup: Map<string, NodeType>,\n params: GetInternalNodesBoundsParams<NodeType> = {\n nodeOrigin: [0, 0],\n },\n): Rect => {\n if (nodeLookup.size === 0) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n let box = { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity };\n\n nodeLookup.forEach((node) => {\n if (params.filter == undefined || params.filter(node)) {\n const nodeBox = nodeToBox(node as InternalNodeBase, params.nodeOrigin);\n box = getBoundsOfBoxes(box, nodeBox);\n }\n });\n\n return boxToRect(box);\n};\n\nexport const getNodesInside = <NodeType extends NodeBase = NodeBase>(\n nodes: Map<string, InternalNodeBase<NodeType>>,\n rect: Rect,\n [tx, ty, tScale]: Transform = [0, 0, 1],\n partially = false,\n // set excludeNonSelectableNodes if you want to pay attention to the nodes \"selectable\" attribute\n excludeNonSelectableNodes = false,\n nodeOrigin: NodeOrigin = [0, 0],\n): InternalNodeBase<NodeType>[] => {\n const paneRect = {\n ...pointToRendererPoint(rect, [tx, ty, tScale]),\n width: rect.width / tScale,\n height: rect.height / tScale,\n };\n\n const visibleNodes: InternalNodeBase<NodeType>[] = [];\n\n for (const [, node] of nodes) {\n const { measured, selectable = true, hidden = false } = node;\n const width = measured.width ?? node.width ?? node.initialWidth ?? null;\n const height = measured.height ?? node.height ?? node.initialHeight ?? null;\n\n if ((excludeNonSelectableNodes && !selectable) || hidden) {\n continue;\n }\n\n const overlappingArea = getOverlappingArea(\n paneRect,\n nodeToRect(node, nodeOrigin),\n );\n const notInitialized = width === null || height === null;\n\n const partiallyVisible = partially && overlappingArea > 0;\n const area = (width ?? 0) * (height ?? 0);\n const isVisible =\n notInitialized || partiallyVisible || overlappingArea >= area;\n\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n }\n\n return visibleNodes;\n};\n\n/**\n * Get all connecting edges for a given set of nodes\n * @param nodes - Nodes you want to get the connected edges for\n * @param edges - All edges\n * @returns Array of edges that connect any of the given nodes with each other\n */\nexport const getConnectedEdges = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n nodes: NodeType[],\n edges: EdgeType[],\n): EdgeType[] => {\n const nodeIds = new Set();\n nodes.forEach((node) => {\n nodeIds.add(node.id);\n });\n\n return edges.filter(\n (edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target),\n );\n};\n\nexport function fitView<\n Params extends FitViewParamsBase<NodeBase>,\n Options extends FitViewOptionsBase<NodeBase>,\n>(\n {\n nodeLookup,\n width,\n height,\n panZoom,\n minZoom,\n maxZoom,\n nodeOrigin = [0, 0],\n }: Params,\n options?: Options,\n) {\n const filteredNodes: InternalNodeBase[] = [];\n const optionNodeIds = options?.nodes\n ? new Set(options.nodes.map((node) => node.id))\n : null;\n\n nodeLookup.forEach((n) => {\n const isVisible =\n n.measured.width &&\n n.measured.height &&\n (options?.includeHiddenNodes || !n.hidden);\n\n if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) {\n filteredNodes.push(n);\n }\n });\n\n if (filteredNodes.length > 0) {\n const bounds = getNodesBounds(filteredNodes, { nodeOrigin });\n\n const viewport = getViewportForBounds(\n bounds,\n width,\n height,\n options?.minZoom ?? minZoom,\n options?.maxZoom ?? maxZoom,\n options?.padding ?? 0.1,\n );\n\n panZoom.setViewport(viewport, { duration: options?.duration });\n\n return true;\n }\n\n return false;\n}\n\n/**\n * This function clamps the passed extend by the node's width and height.\n * This is needed to prevent the node from being dragged outside of its extent.\n *\n * @param node\n * @param extent\n * @returns\n */\nfunction clampNodeExtent<NodeType extends NodeBase>(\n node: NodeType,\n extent?: CoordinateExtent | 'parent',\n): CoordinateExtent | 'parent' | undefined {\n if (!extent || extent === 'parent') {\n return extent;\n }\n return [\n extent[0],\n [\n extent[1][0] - (node.measured?.width ?? 0),\n extent[1][1] - (node.measured?.height ?? 0),\n ],\n ];\n}\n\n/**\n * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin.\n *\n * @internal\n * @returns position, positionAbsolute\n */\nexport function calculateNodePosition<NodeType extends NodeBase>({\n nodeId,\n nextPosition,\n nodeLookup,\n nodeOrigin = [0, 0],\n nodeExtent,\n onError,\n}: {\n nodeId: string;\n nextPosition: XYPosition;\n nodeLookup: NodeLookup<InternalNodeBase<NodeType>>;\n nodeOrigin?: NodeOrigin;\n nodeExtent?: CoordinateExtent;\n onError?: OnError;\n}): { position: XYPosition; positionAbsolute: XYPosition } {\n const node = nodeLookup.get(nodeId)!;\n const parentNode = node.parentId ? nodeLookup.get(node.parentId) : undefined;\n const { x: parentX, y: parentY } = parentNode\n ? getNodePositionWithOrigin(parentNode, parentNode.origin || nodeOrigin)\n .positionAbsolute\n : { x: 0, y: 0 };\n\n let currentExtent = clampNodeExtent(node, node.extent || nodeExtent);\n\n if (node.extent === 'parent' && !node.expandParent) {\n if (!parentNode) {\n onError?.('005', errorMessages['error005']());\n } else {\n const nodeWidth = node.measured.width;\n const nodeHeight = node.measured.height;\n const parentWidth = parentNode.measured.width;\n const parentHeight = parentNode.measured.height;\n\n if (nodeWidth && nodeHeight && parentWidth && parentHeight) {\n const currNodeOrigin = node.origin || nodeOrigin;\n const extentX = parentX + nodeWidth * currNodeOrigin[0];\n const extentY = parentY + nodeHeight * currNodeOrigin[1];\n\n currentExtent = [\n [extentX, extentY],\n [\n extentX + parentWidth - nodeWidth,\n extentY + parentHeight - nodeHeight,\n ],\n ];\n }\n }\n } else if (parentNode && isCoordinateExtent(node.extent)) {\n currentExtent = [\n [node.extent[0][0] + parentX, node.extent[0][1] + parentY],\n [node.extent[1][0] + parentX, node.extent[1][1] + parentY],\n ];\n }\n\n const positionAbsolute = isCoordinateExtent(currentExtent)\n ? clampPosition(nextPosition, currentExtent)\n : nextPosition;\n\n return {\n position: {\n x: positionAbsolute.x - parentX,\n y: positionAbsolute.y - parentY,\n },\n positionAbsolute,\n };\n}\n\n/**\n * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted\n * @internal\n * @param param.nodesToRemove - The nodes to remove\n * @param param.edgesToRemove - The edges to remove\n * @param param.nodes - All nodes\n * @param param.edges - All edges\n * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted\n * @returns nodes: nodes that can be deleted, edges: edges that can be deleted\n */\nexport async function getElementsToRemove<\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>({\n nodesToRemove = [],\n edgesToRemove = [],\n nodes,\n edges,\n onBeforeDelete,\n}: {\n nodesToRemove: Partial<NodeType>[];\n edgesToRemove: Partial<EdgeType>[];\n nodes: NodeType[];\n edges: EdgeType[];\n onBeforeDelete?: OnBeforeDeleteBase<NodeType, EdgeType>;\n}): Promise<{\n nodes: NodeType[];\n edges: EdgeType[];\n}> {\n const nodeIds = new Set(nodesToRemove.map((node) => node.id));\n const matchingNodes: NodeType[] = [];\n\n for (const node of nodes) {\n if (node.deletable === false) {\n continue;\n }\n\n const isIncluded = nodeIds.has(node.id);\n const parentHit =\n !isIncluded &&\n node.parentId &&\n matchingNodes.find((n) => n.id === node.parentId);\n\n if (isIncluded || parentHit) {\n matchingNodes.push(node);\n }\n }\n\n const edgeIds = new Set(edgesToRemove.map((edge) => edge.id));\n const deletableEdges = edges.filter((edge) => edge.deletable !== false);\n const connectedEdges = getConnectedEdges(matchingNodes, deletableEdges);\n const matchingEdges: EdgeType[] = connectedEdges;\n\n for (const edge of deletableEdges) {\n const isIncluded = edgeIds.has(edge.id);\n\n if (isIncluded && !matchingEdges.find((e) => e.id === edge.id)) {\n matchingEdges.push(edge);\n }\n }\n\n if (!onBeforeDelete) {\n return {\n edges: matchingEdges,\n nodes: matchingNodes,\n };\n }\n\n const onBeforeDeleteResult = await onBeforeDelete({\n nodes: matchingNodes,\n edges: matchingEdges,\n });\n\n if (typeof onBeforeDeleteResult === 'boolean') {\n return onBeforeDeleteResult\n ? { edges: matchingEdges, nodes: matchingNodes }\n : { edges: [], nodes: [] };\n }\n\n return onBeforeDeleteResult;\n}\n","import { shallow } from 'zustand/shallow';\n\nimport { useStore } from '../../hooks/useStore';\nimport { InkFlowState } from '../../types';\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n userSelectionRect: s.userSelectionRect,\n});\n\nexport function UserSelection() {\n const { userSelectionActive, userSelectionRect } = useStore(\n selector,\n shallow,\n );\n const isActive = userSelectionActive && userSelectionRect;\n\n if (!isActive) {\n return null;\n }\n\n return (\n <div\n className=\"ink-flow__selection ink-flow__container\"\n style={{\n width: userSelectionRect.width,\n height: userSelectionRect.height,\n transform: `translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`,\n }}\n />\n );\n}\n","/**\n * The user selection rectangle gets displayed when a user drags the mouse while pressing shift\n */\n\nimport {\n useRef,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { shallow } from 'zustand/shallow';\nimport cc from 'classnames';\n\nimport { containerStyle } from '../../styles/utils';\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { InkFlowProps, InkFlowState } from '../../types';\nimport { SelectionMode, NodeChange, EdgeChange } from '../../types/system';\nimport { getSelectionChanges } from '../../utils/changes';\nimport { getEventPosition } from '../../utils/dom';\nimport { getNodesInside } from '../../utils/graph';\nimport { UserSelection } from '../../components/UserSelection';\n\ntype PaneProps = {\n isSelecting: boolean;\n children: ReactNode;\n} & Partial<\n Pick<\n InkFlowProps,\n | 'selectionMode'\n | 'panOnDrag'\n | 'onSelectionStart'\n | 'onSelectionEnd'\n | 'onPaneClick'\n | 'onPaneContextMenu'\n | 'onPaneScroll'\n | 'onPaneMouseEnter'\n | 'onPaneMouseMove'\n | 'onPaneMouseLeave'\n >\n>;\n\nconst wrapHandler = (\n handler: React.MouseEventHandler | undefined,\n containerRef: React.MutableRefObject<HTMLDivElement | null>,\n): React.MouseEventHandler => {\n return (event: ReactMouseEvent) => {\n if (event.target !== containerRef.current) {\n return;\n }\n handler?.(event);\n };\n};\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n elementsSelectable: s.elementsSelectable,\n dragging: s.paneDragging,\n});\n\nexport function Pane({\n isSelecting,\n selectionMode,\n panOnDrag,\n onSelectionStart,\n onSelectionEnd,\n onPaneClick,\n onPaneContextMenu,\n onPaneScroll,\n onPaneMouseEnter,\n onPaneMouseMove,\n onPaneMouseLeave,\n children,\n}: PaneProps) {\n const container = useRef<HTMLDivElement | null>(null);\n const store = useStoreApi();\n const prevSelectedNodesCount = useRef<number>(0);\n const prevSelectedEdgesCount = useRef<number>(0);\n const containerBounds = useRef<DOMRect>();\n const edgeIdLookup = useRef<Map<string, Set<string>>>(new Map());\n\n const { userSelectionActive, elementsSelectable, dragging } = useStore(\n selector,\n shallow,\n );\n\n const resetUserSelection = () => {\n store.setState({ userSelectionActive: false, userSelectionRect: null });\n\n prevSelectedNodesCount.current = 0;\n prevSelectedEdgesCount.current = 0;\n };\n\n const onClick = (event: ReactMouseEvent) => {\n onPaneClick?.(event);\n store.getState().resetSelectedElements();\n store.setState({ nodesSelectionActive: false });\n };\n\n const onContextMenu = (event: ReactMouseEvent) => {\n if (Array.isArray(panOnDrag) && panOnDrag?.includes(2)) {\n event.preventDefault();\n return;\n }\n\n onPaneContextMenu?.(event);\n };\n\n const onWheel = onPaneScroll\n ? (event: React.WheelEvent) => onPaneScroll(event)\n : undefined;\n\n const onMouseDown = (event: ReactMouseEvent): void => {\n const { resetSelectedElements, domNode, edgeLookup } = store.getState();\n containerBounds.current = domNode?.getBoundingClientRect();\n\n if (\n !elementsSelectable ||\n !isSelecting ||\n event.button !== 0 ||\n event.target !== container.current ||\n !containerBounds.current\n ) {\n return;\n }\n\n edgeIdLookup.current = new Map();\n\n for (const [id, edge] of edgeLookup) {\n edgeIdLookup.current.set(\n edge.source,\n edgeIdLookup.current.get(edge.source)?.add(id) || new Set([id]),\n );\n edgeIdLookup.current.set(\n edge.target,\n edgeIdLookup.current.get(edge.target)?.add(id) || new Set([id]),\n );\n }\n\n const { x, y } = getEventPosition(\n event.nativeEvent,\n containerBounds.current,\n );\n\n resetSelectedElements();\n\n store.setState({\n userSelectionRect: {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y,\n },\n });\n\n onSelectionStart?.(event);\n };\n\n const onMouseMove = (event: ReactMouseEvent): void => {\n const {\n userSelectionRect,\n edgeLookup,\n transform,\n nodeOrigin,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = store.getState();\n\n if (!isSelecting || !containerBounds.current || !userSelectionRect) {\n return;\n }\n\n const { x: mouseX, y: mouseY } = getEventPosition(\n event.nativeEvent,\n containerBounds.current,\n );\n const { startX, startY } = userSelectionRect;\n\n const nextUserSelectRect = {\n startX,\n startY,\n x: mouseX < startX ? mouseX : startX,\n y: mouseY < startY ? mouseY : startY,\n width: Math.abs(mouseX - startX),\n height: Math.abs(mouseY - startY),\n };\n\n const selectedNodes = getNodesInside(\n nodeLookup,\n nextUserSelectRect,\n transform,\n false,\n true,\n nodeOrigin,\n );\n\n const selectedEdgeIds = new Set<string>();\n const selectedNodeIds = new Set<string>();\n\n for (const selectedNode of selectedNodes) {\n selectedNodeIds.add(selectedNode.id);\n\n const edgeIds = edgeIdLookup.current.get(selectedNode.id);\n\n if (edgeIds) {\n for (const edgeId of edgeIds) {\n selectedEdgeIds.add(edgeId);\n }\n }\n }\n\n if (prevSelectedNodesCount.current !== selectedNodeIds.size) {\n prevSelectedNodesCount.current = selectedNodeIds.size;\n const changes = getSelectionChanges(\n nodeLookup,\n selectedNodeIds,\n true,\n ) as NodeChange[];\n triggerNodeChanges(changes);\n }\n\n if (prevSelectedEdgesCount.current !== selectedEdgeIds.size) {\n prevSelectedEdgesCount.current = selectedEdgeIds.size;\n const changes = getSelectionChanges(\n edgeLookup,\n selectedEdgeIds,\n ) as EdgeChange[];\n triggerEdgeChanges(changes);\n }\n\n store.setState({\n userSelectionRect: nextUserSelectRect,\n userSelectionActive: true,\n nodesSelectionActive: false,\n });\n };\n\n const onMouseUp = (event: ReactMouseEvent) => {\n if (event.button !== 0) {\n return;\n }\n const { userSelectionRect } = store.getState();\n // We only want to trigger click functions when in selection mode if\n // the user did not move the mouse.\n if (\n !userSelectionActive &&\n userSelectionRect &&\n event.target === container.current\n ) {\n onClick?.(event);\n }\n\n store.setState({\n nodesSelectionActive: prevSelectedNodesCount.current > 0,\n });\n\n resetUserSelection();\n onSelectionEnd?.(event);\n };\n\n const onMouseLeave = (event: ReactMouseEvent) => {\n if (userSelectionActive) {\n store.setState({\n nodesSelectionActive: prevSelectedNodesCount.current > 0,\n });\n onSelectionEnd?.(event);\n }\n\n resetUserSelection();\n };\n\n const hasActiveSelection =\n elementsSelectable && (isSelecting || userSelectionActive);\n\n return (\n <div\n className={cc([\n 'ink-flow__pane',\n { draggable: panOnDrag, dragging, selection: isSelecting },\n ])}\n onClick={hasActiveSelection ? undefined : wrapHandler(onClick, container)}\n onContextMenu={wrapHandler(onContextMenu, container)}\n onWheel={wrapHandler(onWheel, container)}\n onMouseEnter={hasActiveSelection ? undefined : onPaneMouseEnter}\n onMouseDown={hasActiveSelection ? onMouseDown : undefined}\n onMouseMove={hasActiveSelection ? onMouseMove : onPaneMouseMove}\n onMouseUp={hasActiveSelection ? onMouseUp : undefined}\n onMouseLeave={hasActiveSelection ? onMouseLeave : onPaneMouseLeave}\n ref={container}\n style={containerStyle}\n >\n {children}\n <UserSelection />\n </div>\n );\n}\n","import { memo, type ReactNode } from 'react';\n\nimport { useStore } from '../../hooks/useStore';\nimport { GraphViewProps } from '../GraphView';\nimport { InkFlowState, Node } from '../../types';\nimport { useKeyPress } from '../../hooks/useKeyPress';\nimport { ZoomPane } from '../ZoomPane';\nimport { useGlobalKeyHandler } from '../../hooks/useGlobalKeyHandler';\nimport { Pane } from '../Pane';\n\nexport type FlowRendererProps<NodeType extends Node = Node> = Omit<\n GraphViewProps<NodeType>,\n | 'snapToGrid'\n | 'nodeTypes'\n | 'edgeTypes'\n | 'snapGrid'\n | 'connectionLineType'\n | 'connectionLineContainerStyle'\n | 'arrowHeadColor'\n | 'onlyRenderVisibleElements'\n | 'selectNodesOnDrag'\n | 'defaultMarkerColor'\n | 'rfId'\n | 'nodeOrigin'\n> & {\n isControlledViewport: boolean;\n children: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => {\n return {\n nodesSelectionActive: s.nodesSelectionActive,\n userSelectionActive: s.userSelectionActive,\n };\n};\n\nfunction FlowRendererComponent<NodeType extends Node = Node>({\n children,\n onPaneClick,\n onPaneMouseEnter,\n onPaneMouseMove,\n onPaneMouseLeave,\n onPaneContextMenu,\n onPaneScroll,\n deleteKeyCode,\n selectionKeyCode,\n selectionOnDrag,\n selectionMode,\n onSelectionStart,\n onSelectionEnd,\n multiSelectionKeyCode,\n panActivationKeyCode,\n zoomActivationKeyCode,\n elementsSelectable,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll: _panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag: _panOnDrag,\n defaultViewport,\n translateExtent,\n minZoom,\n maxZoom,\n preventScrolling,\n onSelectionContextMenu,\n noWheelClassName,\n noPanClassName,\n disableKeyboardA11y,\n onViewportChange,\n isControlledViewport,\n}: FlowRendererProps<NodeType>) {\n const { nodesSelectionActive, userSelectionActive } = useStore(selector);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n const panActivationKeyPressed = useKeyPress(panActivationKeyCode);\n\n const panOnDrag = panActivationKeyPressed || _panOnDrag;\n const panOnScroll = panActivationKeyPressed || _panOnScroll;\n const isSelecting =\n selectionKeyPressed ||\n userSelectionActive ||\n (selectionOnDrag && panOnDrag !== true);\n\n useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });\n\n return (\n <ZoomPane\n onPaneContextMenu={onPaneContextMenu}\n elementsSelectable={elementsSelectable}\n zoomOnScroll={zoomOnScroll}\n zoomOnPinch={zoomOnPinch}\n panOnScroll={panOnScroll}\n panOnScrollSpeed={panOnScrollSpeed}\n panOnScrollMode={panOnScrollMode}\n zoomOnDoubleClick={zoomOnDoubleClick}\n panOnDrag={!selectionKeyPressed && panOnDrag}\n defaultViewport={defaultViewport}\n translateExtent={translateExtent}\n minZoom={minZoom}\n maxZoom={maxZoom}\n zoomActivationKeyCode={zoomActivationKeyCode}\n preventScrolling={preventScrolling}\n noWheelClassName={noWheelClassName}\n noPanClassName={noPanClassName}\n onViewportChange={onViewportChange}\n isControlledViewport={isControlledViewport}\n >\n <Pane\n onSelectionStart={onSelectionStart}\n onSelectionEnd={onSelectionEnd}\n onPaneClick={onPaneClick}\n onPaneMouseEnter={onPaneMouseEnter}\n onPaneMouseMove={onPaneMouseMove}\n onPaneMouseLeave={onPaneMouseLeave}\n onPaneContextMenu={onPaneContextMenu}\n onPaneScroll={onPaneScroll}\n panOnDrag={panOnDrag}\n isSelecting={!!isSelecting}\n selectionMode={selectionMode}\n >\n {children}\n {/* {nodesSelectionActive && (\n <NodesSelection\n onSelectionContextMenu={onSelectionContextMenu}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={disableKeyboardA11y}\n />\n )} */}\n </Pane>\n </ZoomPane>\n );\n}\n\nFlowRendererComponent.displayName = 'FlowRenderer';\n\nexport const FlowRenderer = memo(\n FlowRendererComponent,\n) as typeof FlowRendererComponent;\n","import { useEffect, useLayoutEffect } from 'react';\n\n// we need this hook to prevent a warning when using ink-flow in SSR\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import { useState } from 'react';\n\nimport { Queue, QueueItem } from './types';\nimport { useIsomorphicLayoutEffect } from '../../hooks/useIsomorphicLayoutEffect';\n\n/**\n * This hook returns a queue that can be used to batch updates.\n *\n * @param runQueue - a function that gets called when the queue is flushed\n * @internal\n *\n * @returns a Queue object\n */\nexport function useQueue<T>(runQueue: (items: QueueItem<T>[]) => void) {\n // Because we're using a ref above, we need some way to let React know when to\n // actually process the queue. We flip this bit of state to `true` any time we\n // mutate the queue and then flip it back to `false` after flushing the queue.\n const [shouldFlush, setShouldFlush] = useState(false);\n\n // A reference of all the batched updates to process before the next render. We\n // want a reference here so multiple synchronous calls to `setNodes` etc can be\n // batched together.\n const [queue] = useState(() => createQueue<T>(() => setShouldFlush(true)));\n\n // Layout effects are guaranteed to run before the next render which means we\n // shouldn't run into any issues with stale state or weird issues that come from\n // rendering things one frame later than expected (we used to use `setTimeout`).\n useIsomorphicLayoutEffect(() => {\n // Because we need to flip the state back to false after flushing, this should\n // trigger the hook again (!). If the hook is being run again we know that any\n // updates should have been processed by now and we can safely clear the queue\n // and bail early.\n if (!shouldFlush) {\n queue.reset();\n return;\n }\n\n const queueItems = queue.get();\n\n if (queueItems.length) {\n runQueue(queueItems);\n\n queue.reset();\n }\n\n // Beacuse we're using reactive state to trigger this effect, we need to flip\n // it back to false.\n setShouldFlush(false);\n }, [shouldFlush]);\n\n return queue;\n}\n\nfunction createQueue<T>(cb: () => void): Queue<T> {\n let queue: QueueItem<T>[] = [];\n\n return {\n get: () => queue,\n reset: () => {\n queue = [];\n },\n push: (item) => {\n queue.push(item);\n cb();\n },\n };\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\n\nimport { useStoreApi } from '../../hooks/useStore';\nimport { Queue, QueueItem } from './types';\nimport type { Edge, Node } from '../../types';\nimport { useQueue } from './useQueue';\nimport { NodeChange, EdgeChange } from '../../types/system';\nimport { getElementsDiffChanges } from '../../utils/changes';\n\nconst BatchContext = createContext<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeQueue: Queue<any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n edgeQueue: Queue<any>;\n} | null>(null);\n\n/**\n * This is a context provider that holds and processes the node and edge update queues\n * that are needed to handle setNodes, addNodes, setEdges and addEdges.\n *\n * @internal\n */\nexport function BatchProvider<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>({ children }: { children: ReactNode }) {\n const store = useStoreApi<NodeType, EdgeType>();\n\n const nodeQueueHandler = useCallback((queueItems: QueueItem<NodeType>[]) => {\n const {\n nodes = [],\n setNodes,\n hasDefaultNodes,\n onNodesChange,\n nodeLookup,\n } = store.getState();\n\n // This is essentially an `Array.reduce` in imperative clothing. Processing\n // this queue is a relatively hot path so we'd like to avoid the overhead of\n // array methods where we can.\n let next = nodes as NodeType[];\n for (const payload of queueItems) {\n next = typeof payload === 'function' ? payload(next) : payload;\n }\n\n if (hasDefaultNodes) {\n setNodes(next);\n } else if (onNodesChange) {\n onNodesChange(\n getElementsDiffChanges({\n items: next,\n lookup: nodeLookup,\n }) as NodeChange<NodeType>[],\n );\n }\n }, []);\n const nodeQueue = useQueue<NodeType>(nodeQueueHandler);\n\n const edgeQueueHandler = useCallback((queueItems: QueueItem<EdgeType>[]) => {\n const {\n edges = [],\n setEdges,\n hasDefaultEdges,\n onEdgesChange,\n edgeLookup,\n } = store.getState();\n\n let next = edges as EdgeType[];\n for (const payload of queueItems) {\n next = typeof payload === 'function' ? payload(next) : payload;\n }\n\n if (hasDefaultEdges) {\n setEdges(next);\n } else if (onEdgesChange) {\n onEdgesChange(\n getElementsDiffChanges({\n items: next,\n lookup: edgeLookup,\n }) as EdgeChange<EdgeType>[],\n );\n }\n }, []);\n const edgeQueue = useQueue<EdgeType>(edgeQueueHandler);\n\n const value = useMemo(() => ({ nodeQueue, edgeQueue }), []);\n\n return (\n <BatchContext.Provider value={value}>{children}</BatchContext.Provider>\n );\n}\n\nexport function useBatchContext() {\n const batchContext = useContext(BatchContext);\n\n if (!batchContext) {\n throw new Error('useBatchContext must be used within a BatchProvider');\n }\n\n return batchContext;\n}\n","import { useMemo } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { ViewportHelperFunctions } from '../types';\nimport { XYPosition } from '../types/system';\nimport {\n getViewportForBounds,\n pointToRendererPoint,\n rendererPointToPoint,\n} from '../utils/general';\nimport { fitView } from '../utils/graph';\n\n/**\n * Hook for getting viewport helper functions.\n *\n * @internal\n * @returns viewport helper functions\n */\nconst useViewportHelper = (): ViewportHelperFunctions => {\n const store = useStoreApi();\n\n return useMemo<ViewportHelperFunctions>(() => {\n return {\n zoomIn: (options) =>\n store.getState().panZoom?.scaleBy(1.2, { duration: options?.duration }),\n zoomOut: (options) =>\n store\n .getState()\n .panZoom?.scaleBy(1 / 1.2, { duration: options?.duration }),\n zoomTo: (zoomLevel, options) =>\n store\n .getState()\n .panZoom?.scaleTo(zoomLevel, { duration: options?.duration }),\n getZoom: () => store.getState().transform[2],\n setViewport: (viewport, options) => {\n const {\n transform: [tX, tY, tZoom],\n panZoom,\n } = store.getState();\n\n panZoom?.setViewport(\n {\n x: viewport.x ?? tX,\n y: viewport.y ?? tY,\n zoom: viewport.zoom ?? tZoom,\n },\n { duration: options?.duration },\n );\n },\n getViewport: () => {\n const [x, y, zoom] = store.getState().transform;\n return { x, y, zoom };\n },\n fitView: (options) => {\n const {\n nodeLookup,\n width,\n height,\n nodeOrigin,\n minZoom,\n maxZoom,\n panZoom,\n } = store.getState();\n\n return panZoom\n ? fitView(\n {\n nodeLookup,\n width,\n height,\n nodeOrigin,\n minZoom,\n maxZoom,\n panZoom,\n },\n options,\n )\n : false;\n },\n setCenter: (x, y, options) => {\n const { width, height, maxZoom, panZoom } = store.getState();\n const nextZoom =\n typeof options?.zoom !== 'undefined' ? options.zoom : maxZoom;\n const centerX = width / 2 - x * nextZoom;\n const centerY = height / 2 - y * nextZoom;\n\n panZoom?.setViewport(\n {\n x: centerX,\n y: centerY,\n zoom: nextZoom,\n },\n { duration: options?.duration },\n );\n },\n fitBounds: (bounds, options) => {\n const { width, height, minZoom, maxZoom, panZoom } = store.getState();\n const viewport = getViewportForBounds(\n bounds,\n width,\n height,\n minZoom,\n maxZoom,\n options?.padding ?? 0.1,\n );\n\n panZoom?.setViewport(viewport, { duration: options?.duration });\n },\n screenToFlowPosition: (\n clientPosition: XYPosition,\n options: { snapToGrid: boolean } = { snapToGrid: true },\n ) => {\n const { transform, snapGrid, domNode } = store.getState();\n\n if (!domNode) {\n return clientPosition;\n }\n\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n\n const correctedPosition = {\n x: clientPosition.x - domX,\n y: clientPosition.y - domY,\n };\n\n return pointToRendererPoint(\n correctedPosition,\n transform,\n options.snapToGrid,\n snapGrid,\n );\n },\n flowToScreenPosition: (flowPosition: XYPosition) => {\n const { transform, domNode } = store.getState();\n\n if (!domNode) {\n return flowPosition;\n }\n\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n const rendererPosition = rendererPointToPoint(flowPosition, transform);\n\n return {\n x: rendererPosition.x + domX,\n y: rendererPosition.y + domY,\n };\n },\n };\n }, []);\n};\n\nexport default useViewportHelper;\n","import { useMemo } from 'react';\n\nimport { useStore, useStoreApi } from './useStore';\nimport { useBatchContext } from '../components/BatchProvider';\nimport useViewportHelper from './useViewportHelper';\nimport { Node, Edge, InkFlowState, InternalNode } from '../types';\nimport { Rect, EdgeRemoveChange, NodeRemoveChange } from '../types/system';\nimport {\n nodeToRect,\n getOverlappingArea,\n isNode,\n evaluateAbsolutePosition,\n isRectObject,\n} from '../utils/general';\nimport { getElementsToRemove } from '../utils/graph';\nimport { GeneralHelpers, InkFlowInstance } from '../types/instance';\nimport { elementToRemoveChange } from '../utils/changes';\n\nconst selector = (s: InkFlowState) => !!s.panZoom;\n\n/**\n * Hook for accessing the ReactFlow instance.\n *\n * @public\n * @returns ReactFlowInstance\n */\nexport function useInkFlow<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>(): InkFlowInstance<NodeType, EdgeType> {\n const viewportHelper = useViewportHelper();\n const store = useStoreApi();\n const batchContext = useBatchContext();\n const viewportInitialized = useStore(selector);\n\n const generalHelper = useMemo<GeneralHelpers<NodeType, EdgeType>>(() => {\n const getInternalNode: GeneralHelpers<\n NodeType,\n EdgeType\n >['getInternalNode'] = (id) =>\n store.getState().nodeLookup.get(id) as InternalNode<NodeType>;\n\n const setNodes: GeneralHelpers<NodeType, EdgeType>['setNodes'] = (\n payload,\n ) => {\n batchContext.nodeQueue.push(payload as NodeType[]);\n };\n\n const getNodeRect = (node: NodeType | { id: string }): Rect | null => {\n const { nodeLookup, nodeOrigin } = store.getState();\n\n const nodeToUse = isNode<NodeType>(node)\n ? node\n : nodeLookup.get(node.id)!;\n const position = nodeToUse.parentId\n ? evaluateAbsolutePosition(\n nodeToUse.position,\n nodeToUse.parentId,\n nodeLookup,\n nodeOrigin,\n )\n : nodeToUse.position;\n\n const nodeWithPosition = {\n id: nodeToUse.id,\n position,\n width: nodeToUse.measured?.width ?? nodeToUse.width,\n height: nodeToUse.measured?.height ?? nodeToUse.height,\n data: nodeToUse.data,\n };\n\n return nodeToRect(nodeWithPosition);\n };\n\n const updateNode: GeneralHelpers<NodeType, EdgeType>['updateNode'] = (\n id,\n nodeUpdate,\n options = { replace: false },\n ) => {\n setNodes((prevNodes) =>\n prevNodes.map((node) => {\n if (node.id === id) {\n const nextNode =\n typeof nodeUpdate === 'function'\n ? nodeUpdate(node as NodeType)\n : nodeUpdate;\n return options.replace && isNode(nextNode)\n ? (nextNode as NodeType)\n : { ...node, ...nextNode };\n }\n\n return node;\n }),\n );\n };\n\n return {\n getNodes: () =>\n store.getState().nodes.map((n) => ({ ...n })) as NodeType[],\n getNode: (id) => getInternalNode(id)?.internals.userNode as NodeType,\n getInternalNode,\n getEdges: () => {\n const { edges = [] } = store.getState();\n return edges.map((e) => ({ ...e })) as EdgeType[];\n },\n getEdge: (id) => store.getState().edgeLookup.get(id) as EdgeType,\n setNodes,\n setEdges: (payload) => {\n batchContext.edgeQueue.push(payload as EdgeType[]);\n },\n addNodes: (payload) => {\n const newNodes = Array.isArray(payload) ? payload : [payload];\n batchContext.nodeQueue.push((nodes) => [...nodes, ...newNodes]);\n },\n addEdges: (payload) => {\n const newEdges = Array.isArray(payload) ? payload : [payload];\n batchContext.edgeQueue.push((edges) => [...edges, ...newEdges]);\n },\n toObject: () => {\n const { nodes = [], edges = [], transform } = store.getState();\n const [x, y, zoom] = transform;\n return {\n nodes: nodes.map((n) => ({ ...n })) as NodeType[],\n edges: edges.map((e) => ({ ...e })) as EdgeType[],\n viewport: {\n x,\n y,\n zoom,\n },\n };\n },\n deleteElements: async ({\n nodes: nodesToRemove = [],\n edges: edgesToRemove = [],\n }) => {\n const {\n nodes,\n edges,\n onNodesDelete,\n onEdgesDelete,\n triggerNodeChanges,\n triggerEdgeChanges,\n onDelete,\n onBeforeDelete,\n } = store.getState();\n const { nodes: matchingNodes, edges: matchingEdges } =\n await getElementsToRemove({\n nodesToRemove,\n edgesToRemove,\n nodes,\n edges,\n onBeforeDelete,\n });\n\n const hasMatchingEdges = matchingEdges.length > 0;\n const hasMatchingNodes = matchingNodes.length > 0;\n\n if (hasMatchingEdges) {\n const edgeChanges: EdgeRemoveChange[] = matchingEdges.map(\n elementToRemoveChange,\n );\n\n onEdgesDelete?.(matchingEdges);\n triggerEdgeChanges(edgeChanges);\n }\n\n if (hasMatchingNodes) {\n const nodeChanges: NodeRemoveChange[] = matchingNodes.map(\n elementToRemoveChange,\n );\n\n onNodesDelete?.(matchingNodes);\n triggerNodeChanges(nodeChanges);\n }\n\n if (hasMatchingNodes || hasMatchingEdges) {\n onDelete?.({ nodes: matchingNodes, edges: matchingEdges });\n }\n\n return { deletedNodes: matchingNodes, deletedEdges: matchingEdges };\n },\n getIntersectingNodes: (nodeOrRect, partially = true, nodes) => {\n const isRect = isRectObject(nodeOrRect);\n const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n const hasNodesOption = nodes !== undefined;\n\n if (!nodeRect) {\n return [];\n }\n\n return (nodes || store.getState().nodes).filter((n) => {\n const internalNode = store.getState().nodeLookup.get(n.id);\n\n if (\n internalNode &&\n !isRect &&\n (n.id === nodeOrRect!.id ||\n !internalNode.internals.positionAbsolute)\n ) {\n return false;\n }\n\n const currNodeRect = nodeToRect(hasNodesOption ? n : internalNode!);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n\n return (\n partiallyVisible ||\n overlappingArea >= nodeRect.width * nodeRect.height\n );\n }) as NodeType[];\n },\n isNodeIntersecting: (nodeOrRect, area, partially = true) => {\n const isRect = isRectObject(nodeOrRect);\n const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n\n if (!nodeRect) {\n return false;\n }\n\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n\n return (\n partiallyVisible ||\n overlappingArea >= nodeRect.width * nodeRect.height\n );\n },\n updateNode,\n updateNodeData: (id, dataUpdate, options = { replace: false }) => {\n updateNode(\n id,\n (node) => {\n const nextData =\n typeof dataUpdate === 'function' ? dataUpdate(node) : dataUpdate;\n return options.replace\n ? { ...node, data: nextData }\n : { ...node, data: { ...node.data, ...nextData } };\n },\n options,\n );\n },\n };\n }, []);\n\n return useMemo(() => {\n return {\n ...generalHelper,\n ...viewportHelper,\n viewportInitialized,\n };\n }, [viewportInitialized]);\n}\n","import { useEffect, useState } from 'react';\n\nimport { InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\nimport { InternalNodeUpdate } from '../../types/system';\n\nconst selector = (s: InkFlowState) => s.updateNodeInternals;\n\nexport function useResizeObserver() {\n const updateNodeInternals = useStore(selector);\n const [resizeObserver] = useState(() => {\n if (typeof ResizeObserver === 'undefined') {\n return null;\n }\n\n return new ResizeObserver((entries: ResizeObserverEntry[]) => {\n const updates = new Map<string, InternalNodeUpdate>();\n entries.forEach((entry: ResizeObserverEntry) => {\n const id = entry.target.getAttribute('data-id') as string;\n updates.set(id, {\n id,\n nodeElement: entry.target as HTMLDivElement,\n });\n });\n\n updateNodeInternals(updates);\n });\n });\n\n useEffect(() => {\n return () => {\n resizeObserver?.disconnect();\n };\n }, [resizeObserver]);\n\n return resizeObserver;\n}\n","import { useCallback } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore } from './useStore';\nimport type { Node, InkFlowState } from '../types';\nimport { getNodesInside } from '../utils/graph';\n\nconst selector = (onlyRenderVisible: boolean) => (s: InkFlowState) => {\n return onlyRenderVisible\n ? getNodesInside<Node>(\n s.nodeLookup,\n { x: 0, y: 0, width: s.width, height: s.height },\n s.transform,\n true,\n ).map((node) => node.id)\n : Array.from(s.nodeLookup.keys());\n};\n\n/**\n * Hook for getting the visible node ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible node ids\n */\nexport function useVisibleNodeIds(onlyRenderVisible: boolean) {\n const nodeIds = useStore(\n useCallback(selector(onlyRenderVisible), [onlyRenderVisible]),\n shallow,\n );\n\n return nodeIds;\n}\n","import { createContext, useContext } from 'react';\n\nexport const NodeIdContext = createContext<string | null>(null);\nexport const Provider = NodeIdContext.Provider;\nexport const Consumer = NodeIdContext.Consumer;\n\nexport const useNodeId = (): string | null => {\n const nodeId = useContext(NodeIdContext);\n return nodeId;\n};\n\nexport default NodeIdContext;\n","import { CSSProperties } from 'react';\n\nimport { useStore } from '../../hooks/useStore';\nimport type { InkFlowState } from '../../types';\n\nconst style: CSSProperties = { display: 'none' };\nconst ariaLiveStyle: CSSProperties = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0px, 0px, 0px, 0px)',\n clipPath: 'inset(100%)',\n};\n\nexport const ARIA_NODE_DESC_KEY = 'ink-flow__node-desc';\nexport const ARIA_EDGE_DESC_KEY = 'ink-flow__edge-desc';\nexport const ARIA_LIVE_MESSAGE = 'ink-flow__aria-live';\n\nconst selector = (s: InkFlowState) => s.ariaLiveMessage;\n\nfunction AriaLiveMessage({ rfId }: { rfId: string }) {\n const ariaLiveMessage = useStore(selector);\n\n return (\n <div\n id={`${ARIA_LIVE_MESSAGE}-${rfId}`}\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n style={ariaLiveStyle}\n >\n {ariaLiveMessage}\n </div>\n );\n}\n\nexport function A11yDescriptions({\n rfId,\n disableKeyboardA11y,\n}: {\n rfId: string;\n disableKeyboardA11y: boolean;\n}) {\n return (\n <>\n <div id={`${ARIA_NODE_DESC_KEY}-${rfId}`} style={style}>\n Press enter or space to select a node.\n {!disableKeyboardA11y &&\n 'You can then use the arrow keys to move the node around.'}{' '}\n Press delete to remove it and escape to cancel.{' '}\n </div>\n <div id={`${ARIA_EDGE_DESC_KEY}-${rfId}`} style={style}>\n Press enter or space to select an edge. You can then press delete to\n remove it or escape to cancel.\n </div>\n {!disableKeyboardA11y && <AriaLiveMessage rfId={rfId} />}\n </>\n );\n}\n","import { Position } from '../../types/system';\n\nexport type GetBezierPathParams = {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n curvature?: number;\n};\n\nexport type GetControlWithCurvatureParams = {\n pos: Position;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n c: number;\n};\n\nexport function getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n}: {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n sourceControlX: number;\n sourceControlY: number;\n targetControlX: number;\n targetControlY: number;\n}): [number, number, number, number] {\n // cubic bezier t=0.5 mid point, not the actual mid point, but easy to calculate\n // https://stackoverflow.com/questions/67516101/how-to-find-distance-mid-point-of-bezier-curve\n const centerX =\n sourceX * 0.125 +\n sourceControlX * 0.375 +\n targetControlX * 0.375 +\n targetX * 0.125;\n const centerY =\n sourceY * 0.125 +\n sourceControlY * 0.375 +\n targetControlY * 0.375 +\n targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n\n return [centerX, centerY, offsetX, offsetY];\n}\n\nfunction calculateControlOffset(distance: number, curvature: number): number {\n if (distance >= 0) {\n return 0.5 * distance;\n }\n\n return curvature * 25 * Math.sqrt(-distance);\n}\n\nfunction getControlWithCurvature({\n pos,\n x1,\n y1,\n x2,\n y2,\n c,\n}: GetControlWithCurvatureParams): [number, number] {\n switch (pos) {\n case Position.Left:\n return [x1 - calculateControlOffset(x1 - x2, c), y1];\n case Position.Right:\n return [x1 + calculateControlOffset(x2 - x1, c), y1];\n case Position.Top:\n return [x1, y1 - calculateControlOffset(y1 - y2, c)];\n case Position.Bottom:\n return [x1, y1 + calculateControlOffset(y2 - y1, c)];\n }\n}\n\n/**\n * Get a bezier path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.sourcePosition - The position of the source handle (default: Position.Bottom)\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @param params.targetPosition - The position of the target handle (default: Position.Top)\n * @param params.curvature - The curvature of the bezier edge\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n});\n */\nexport function getBezierPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n curvature = 0.25,\n}: GetBezierPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature,\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\n","import { errorMessages } from '../../constants';\nimport {\n Connection,\n EdgeBase,\n InternalNodeBase,\n Transform,\n} from '../../types/system';\nimport {\n getOverlappingArea,\n boxToRect,\n nodeToBox,\n getBoundsOfBoxes,\n devWarn,\n} from '../general';\nimport { isEdgeBase } from '../graph';\n\n// this is used for straight edges and simple smoothstep edges (LTR, RTL, BTT, TTB)\nexport function getEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n}: {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n}): [number, number, number, number] {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n return [centerX, centerY, xOffset, yOffset];\n}\n\nexport type GetEdgeZIndexParams = {\n sourceNode: InternalNodeBase;\n targetNode: InternalNodeBase;\n selected?: boolean;\n zIndex?: number;\n elevateOnSelect?: boolean;\n};\n\nexport function getElevatedEdgeZIndex({\n sourceNode,\n targetNode,\n selected = false,\n zIndex = 0,\n elevateOnSelect = false,\n}: GetEdgeZIndexParams): number {\n if (!elevateOnSelect) {\n return zIndex;\n }\n\n const edgeOrConnectedNodeSelected =\n selected || targetNode.selected || sourceNode.selected;\n const selectedZIndex = Math.max(\n sourceNode.internals.z || 0,\n targetNode.internals.z || 0,\n 1000,\n );\n\n return zIndex + (edgeOrConnectedNodeSelected ? selectedZIndex : 0);\n}\n\ntype IsEdgeVisibleParams = {\n sourceNode: InternalNodeBase;\n targetNode: InternalNodeBase;\n width: number;\n height: number;\n transform: Transform;\n};\n\nexport function isEdgeVisible({\n sourceNode,\n targetNode,\n width,\n height,\n transform,\n}: IsEdgeVisibleParams): boolean {\n const edgeBox = getBoundsOfBoxes(\n nodeToBox(sourceNode),\n nodeToBox(targetNode),\n );\n\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n\n const viewRect = {\n x: -transform[0] / transform[2],\n y: -transform[1] / transform[2],\n width: width / transform[2],\n height: height / transform[2],\n };\n\n return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0;\n}\n\nconst getEdgeId = ({\n source,\n sourceHandle,\n target,\n targetHandle,\n}: Connection | EdgeBase): string =>\n `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`;\n\nconst connectionExists = (edge: EdgeBase, edges: EdgeBase[]) => {\n return edges.some(\n (el) =>\n el.source === edge.source &&\n el.target === edge.target &&\n (el.sourceHandle === edge.sourceHandle ||\n (!el.sourceHandle && !edge.sourceHandle)) &&\n (el.targetHandle === edge.targetHandle ||\n (!el.targetHandle && !edge.targetHandle)),\n );\n};\n\n/**\n * This util is a convenience function to add a new Edge to an array of edges\n * @remarks It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one.\n * @public\n * @param edgeParams - Either an Edge or a Connection you want to add\n * @param edges - The array of all current edges\n * @returns A new array of edges with the new edge added\n */\nexport const addEdge = <EdgeType extends EdgeBase>(\n edgeParams: EdgeType | Connection,\n edges: EdgeType[],\n): EdgeType[] => {\n if (!edgeParams.source || !edgeParams.target) {\n devWarn('006', errorMessages['error006']());\n\n return edges;\n }\n\n let edge: EdgeType;\n if (isEdgeBase(edgeParams)) {\n edge = { ...edgeParams };\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams),\n } as EdgeType;\n }\n\n if (connectionExists(edge, edges)) {\n return edges;\n }\n\n if (edge.sourceHandle === null) {\n delete edge.sourceHandle;\n }\n\n if (edge.targetHandle === null) {\n delete edge.targetHandle;\n }\n\n return edges.concat(edge);\n};\n\nexport type UpdateEdgeOptions = {\n shouldReplaceId?: boolean;\n};\n\n/**\n * A handy utility to update an existing Edge with new properties\n * @param oldEdge - The edge you want to update\n * @param newConnection - The new connection you want to update the edge with\n * @param edges - The array of all current edges\n * @param options.shouldReplaceId - should the id of the old edge be replaced with the new connection id\n * @returns the updated edges array\n */\nexport const updateEdge = <EdgeType extends EdgeBase>(\n oldEdge: EdgeType,\n newConnection: Connection,\n edges: EdgeType[],\n options: UpdateEdgeOptions = { shouldReplaceId: true },\n): EdgeType[] => {\n const { id: oldEdgeId, ...rest } = oldEdge;\n\n if (!newConnection.source || !newConnection.target) {\n devWarn('006', errorMessages['error006']());\n\n return edges;\n }\n\n const foundEdge = edges.find((e) => e.id === oldEdge.id) as EdgeType;\n\n if (!foundEdge) {\n devWarn('007', errorMessages['error007'](oldEdgeId));\n\n return edges;\n }\n\n // Remove old edge and create the new edge with parameters of old edge.\n const edge = {\n ...rest,\n id: options.shouldReplaceId ? getEdgeId(newConnection) : oldEdgeId,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle,\n } as EdgeType;\n\n return edges.filter((e) => e.id !== oldEdgeId).concat(edge);\n};\n","import { Position, XYPosition } from '../../types/system';\nimport { getEdgeCenter } from './general';\n\nexport interface GetSmoothStepPathParams {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n borderRadius?: number;\n centerX?: number;\n centerY?: number;\n offset?: number;\n}\n\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 },\n};\n\nconst getDirection = ({\n source,\n sourcePosition = Position.Bottom,\n target,\n}: {\n source: XYPosition;\n sourcePosition: Position;\n target: XYPosition;\n}): XYPosition => {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n};\n\nconst distance = (a: XYPosition, b: XYPosition) =>\n Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n\n// ith this function we try to mimic a orthogonal edge routing behaviour\n// It's not as good as a real orthogonal edge routing but it's faster and good enough as a default for step and smooth step edges\nfunction getPoints({\n source,\n sourcePosition = Position.Bottom,\n target,\n targetPosition = Position.Top,\n center,\n offset,\n}: {\n source: XYPosition;\n sourcePosition: Position;\n target: XYPosition;\n targetPosition: Position;\n center: Partial<XYPosition>;\n offset: number;\n}): [XYPosition[], number, number, number, number] {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped: XYPosition = {\n x: source.x + sourceDir.x * offset,\n y: source.y + sourceDir.y * offset,\n };\n const targetGapped: XYPosition = {\n x: target.x + targetDir.x * offset,\n y: target.y + targetDir.y * offset,\n };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped,\n });\n const dirAccessor = dir.x !== 0 ? 'x' : 'y';\n const currDir = dir[dirAccessor];\n\n let points: XYPosition[] = [];\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n\n const [defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY] =\n getEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y,\n });\n\n // opposite handle positions, default case\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n centerX = center.x ?? defaultCenterX;\n centerY = center.y ?? defaultCenterY;\n // --->\n // |\n // >---\n const verticalSplit: XYPosition[] = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y },\n ];\n // |\n // ---\n // |\n const horizontalSplit: XYPosition[] = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY },\n ];\n\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n // sourceTarget means we take x from source and y from target, targetSource is the opposite\n const sourceTarget: XYPosition[] = [\n { x: sourceGapped.x, y: targetGapped.y },\n ];\n const targetSource: XYPosition[] = [\n { x: targetGapped.x, y: sourceGapped.y },\n ];\n // this handles edges with same handle positions\n if (dirAccessor === 'x') {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n } else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n\n // if an edge goes from right to right for example (sourcePosition === targetPosition) and the distance between source.x and target.x is less than the offset, the added point and the gapped source/target will overlap. This leads to a weird edge path. To avoid this we add a gapOffset to the source/target\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] =\n (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) *\n gapOffset;\n } else {\n targetGapOffset[dirAccessor] =\n (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) *\n gapOffset;\n }\n }\n }\n\n // these are conditions for handling mixed handle positions like Right -> Bottom for example\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x';\n const isSameDir =\n sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo =\n sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo =\n sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget =\n (sourceDir[dirAccessor] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) ||\n (isSameDir && sourceLtTargetOppo))) ||\n (sourceDir[dirAccessor] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) ||\n (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = dirAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n\n const sourceGapPoint = {\n x: sourceGapped.x + sourceGapOffset.x,\n y: sourceGapped.y + sourceGapOffset.y,\n };\n const targetGapPoint = {\n x: targetGapped.x + targetGapOffset.x,\n y: targetGapped.y + targetGapOffset.y,\n };\n const maxXDistance = Math.max(\n Math.abs(sourceGapPoint.x - points[0].x),\n Math.abs(targetGapPoint.x - points[0].x),\n );\n const maxYDistance = Math.max(\n Math.abs(sourceGapPoint.y - points[0].y),\n Math.abs(targetGapPoint.y - points[0].y),\n );\n\n // we want to place the label on the longest segment of the edge\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n } else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n\n const pathPoints = [\n source,\n {\n x: sourceGapped.x + sourceGapOffset.x,\n y: sourceGapped.y + sourceGapOffset.y,\n },\n ...points,\n {\n x: targetGapped.x + targetGapOffset.x,\n y: targetGapped.y + targetGapOffset.y,\n },\n target,\n ];\n\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\n\nfunction getBend(\n a: XYPosition,\n b: XYPosition,\n c: XYPosition,\n size: number,\n): string {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n\n // no bend\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${x} ${y}`;\n }\n\n // first segment is horizontal\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir},${y}Q ${x},${y} ${x},${\n y + bendSize * yDir\n }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\n\n/**\n * Get a smooth step path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.sourcePosition - The position of the source handle (default: Position.Bottom)\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @param params.targetPosition - The position of the target handle (default: Position.Top)\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n });\n */\nexport function getSmoothStepPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n borderRadius = 5,\n centerX,\n centerY,\n offset = 20,\n}: GetSmoothStepPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset,\n });\n\n const path = points.reduce<string>((res, p, i) => {\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n } else {\n segment = `${i === 0 ? 'M' : 'L'}${p.x} ${p.y}`;\n }\n\n res += segment;\n\n return res;\n }, '');\n\n return [path, labelX, labelY, offsetX, offsetY];\n}\n","// this functions collects all handles and adds an absolute position\n\nimport {\n InternalNodeBase,\n NodeHandleBounds,\n HandleType,\n ConnectionHandle,\n XYPosition,\n NodeLookup,\n ConnectionStatus,\n} from '../../types/system';\n\n// so that we can later find the closest handle to the mouse position\nexport function getHandles(\n node: InternalNodeBase,\n handleBounds: NodeHandleBounds,\n type: HandleType,\n currentHandle: string,\n): ConnectionHandle[] {\n return (handleBounds[type] || []).reduce<ConnectionHandle[]>((res, h) => {\n if (`${node.id}-${h.id}-${type}` !== currentHandle) {\n res.push({\n id: h.id || null,\n type,\n nodeId: node.id,\n x: node.internals.positionAbsolute.x + h.x + h.width / 2,\n y: node.internals.positionAbsolute.y + h.y + h.height / 2,\n });\n }\n return res;\n }, []);\n}\n\nexport function getClosestHandle(\n pos: XYPosition,\n connectionRadius: number,\n handles: ConnectionHandle[],\n): ConnectionHandle | null {\n let closestHandles: ConnectionHandle[] = [];\n let minDistance = Infinity;\n\n for (const handle of handles) {\n const distance = Math.sqrt(\n Math.pow(handle.x - pos.x, 2) + Math.pow(handle.y - pos.y, 2),\n );\n if (distance <= connectionRadius) {\n if (distance < minDistance) {\n closestHandles = [handle];\n } else if (distance === minDistance) {\n // when multiple handles are on the same distance we collect all of them\n closestHandles.push(handle);\n }\n minDistance = distance;\n }\n }\n\n if (!closestHandles.length) {\n return null;\n }\n\n return closestHandles.length === 1\n ? closestHandles[0]\n : // if multiple handles are layouted on top of each other we take the one with type = target because it's more likely that the user wants to connect to this one\n closestHandles.find((handle) => handle.type === 'target') ||\n closestHandles[0];\n}\n\ntype GetHandleLookupParams = {\n nodeLookup: NodeLookup;\n nodeId: string;\n handleId: string | null;\n handleType: string;\n};\n\nexport function getHandleLookup({\n nodeLookup,\n nodeId,\n handleId,\n handleType,\n}: GetHandleLookupParams): ConnectionHandle[] {\n const connectionHandles: ConnectionHandle[] = [];\n\n for (const [, node] of nodeLookup) {\n if (node.internals.handleBounds) {\n const id = `${nodeId}-${handleId}-${handleType}`;\n const sourceHandles = getHandles(\n node,\n node.internals.handleBounds,\n 'source',\n id,\n );\n const targetHandles = getHandles(\n node,\n node.internals.handleBounds,\n 'target',\n id,\n );\n connectionHandles.push(...sourceHandles, ...targetHandles);\n }\n }\n\n return connectionHandles;\n}\n\nexport function getHandleType(\n edgeUpdaterType: HandleType | undefined,\n handleDomNode: Element | null,\n): HandleType | null {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n } else if (handleDomNode?.classList.contains('target')) {\n return 'target';\n } else if (handleDomNode?.classList.contains('source')) {\n return 'source';\n }\n\n return null;\n}\n\nexport function getConnectionStatus(\n isInsideConnectionRadius: boolean,\n isHandleValid: boolean,\n) {\n let connectionStatus = null;\n\n if (isHandleValid) {\n connectionStatus = 'valid';\n } else if (isInsideConnectionRadius && !isHandleValid) {\n connectionStatus = 'invalid';\n }\n\n return connectionStatus as ConnectionStatus;\n}\n","import { IsValidConnection } from '../../types';\nimport {\n ConnectionMode,\n NodeLookup,\n HandleType,\n UpdateConnection,\n PanBy,\n OnConnectStart,\n OnConnect,\n OnConnectEnd,\n Transform,\n ConnectingHandle,\n ConnectionHandle,\n Connection,\n} from '../../types/system';\nimport { getHostForElement, getEventPosition } from '../dom';\nimport {\n calcAutoPan,\n pointToRendererPoint,\n rendererPointToPoint,\n} from '../general';\nimport {\n getClosestHandle,\n getConnectionStatus,\n getHandleLookup,\n getHandleType,\n} from './utils';\n\nexport type OnPointerDownParams = {\n autoPanOnConnect: boolean;\n connectionMode: ConnectionMode;\n connectionRadius: number;\n domNode: HTMLDivElement | null;\n handleId: string | null;\n nodeId: string;\n isTarget: boolean;\n nodeLookup: NodeLookup;\n lib: string;\n flowId: string | null;\n edgeUpdaterType?: HandleType;\n updateConnection: UpdateConnection;\n panBy: PanBy;\n cancelConnection: () => void;\n onConnectStart?: OnConnectStart;\n onConnect?: OnConnect;\n onConnectEnd?: OnConnectEnd;\n isValidConnection?: IsValidConnection;\n onEdgeUpdateEnd?: (evt: MouseEvent | TouchEvent) => void;\n getTransform: () => Transform;\n getConnectionStartHandle: () => ConnectingHandle | null;\n};\n\nexport type IsValidParams = {\n handle: Pick<ConnectionHandle, 'nodeId' | 'id' | 'type'> | null;\n connectionMode: ConnectionMode;\n fromNodeId: string;\n fromHandleId: string | null;\n fromType: HandleType;\n isValidConnection?: IsValidConnection;\n doc: Document | ShadowRoot;\n lib: string;\n flowId: string | null;\n};\n\nexport type XYHandleInstance = {\n onPointerDown: (\n event: MouseEvent | TouchEvent,\n params: OnPointerDownParams,\n ) => void;\n isValid: (event: MouseEvent | TouchEvent, params: IsValidParams) => Result;\n};\n\ntype Result = {\n handleDomNode: Element | null;\n isValid: boolean;\n connection: Connection | null;\n endHandle: ConnectingHandle | null;\n};\n\nconst alwaysValid = () => true;\n\nlet connectionStartHandle: ConnectingHandle | null = null;\n\nfunction onPointerDown(\n event: MouseEvent | TouchEvent,\n {\n connectionMode,\n connectionRadius,\n handleId,\n nodeId,\n edgeUpdaterType,\n isTarget,\n domNode,\n nodeLookup,\n lib,\n autoPanOnConnect,\n flowId,\n panBy,\n cancelConnection,\n onConnectStart,\n onConnect,\n onConnectEnd,\n isValidConnection = alwaysValid,\n onEdgeUpdateEnd,\n updateConnection,\n getTransform,\n getConnectionStartHandle,\n }: OnPointerDownParams,\n) {\n // when xyflow is used inside a shadow root we can't use document\n const doc = getHostForElement(event.target as HTMLElement);\n let autoPanId = 0;\n let closestHandle: ConnectionHandle | null;\n\n const { x, y } = getEventPosition(event);\n const clickedHandle = doc?.elementFromPoint(x, y);\n const handleType = getHandleType(edgeUpdaterType, clickedHandle);\n const containerBounds = domNode?.getBoundingClientRect();\n\n if (!containerBounds || !handleType) {\n return;\n }\n\n let connectionPosition = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n let connection: Connection | null = null;\n let isValid = false;\n let handleDomNode: Element | null = null;\n\n const handleLookup = getHandleLookup({\n nodeLookup,\n nodeId,\n handleId,\n handleType,\n });\n\n // when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas\n function autoPan(): void {\n if (!autoPanOnConnect || !containerBounds) {\n return;\n }\n const [x, y] = calcAutoPan(connectionPosition, containerBounds);\n\n panBy({ x, y });\n autoPanId = requestAnimationFrame(autoPan);\n }\n\n // Stays the same for all consecutive pointermove events\n connectionStartHandle = {\n nodeId,\n handleId,\n type: handleType,\n };\n\n updateConnection({\n connectionPosition,\n connectionStatus: null,\n // connectionNodeId etc will be removed in the next major in favor of connectionStartHandle\n connectionStartHandle,\n connectionEndHandle: null,\n });\n\n onConnectStart?.(event, { nodeId, handleId, handleType });\n\n function onPointerMove(event: MouseEvent | TouchEvent) {\n if (!getConnectionStartHandle()) {\n onPointerUp(event);\n }\n\n const transform = getTransform();\n connectionPosition = getEventPosition(event, containerBounds);\n closestHandle = getClosestHandle(\n pointToRendererPoint(connectionPosition, transform, false, [1, 1]),\n connectionRadius,\n handleLookup,\n );\n\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n\n const result = isValidHandle(event, {\n handle: closestHandle,\n connectionMode,\n fromNodeId: nodeId,\n fromHandleId: handleId,\n fromType: isTarget ? 'target' : 'source',\n isValidConnection,\n doc,\n lib,\n flowId,\n });\n\n handleDomNode = result.handleDomNode;\n connection = result.connection;\n isValid = result.isValid;\n\n updateConnection({\n connectionStartHandle,\n connectionPosition:\n closestHandle && isValid\n ? rendererPointToPoint(\n {\n x: closestHandle.x,\n y: closestHandle.y,\n },\n transform,\n )\n : connectionPosition,\n connectionStatus: getConnectionStatus(!!closestHandle, isValid),\n connectionEndHandle: result.endHandle,\n });\n }\n\n function onPointerUp(event: MouseEvent | TouchEvent) {\n if ((closestHandle || handleDomNode) && connection && isValid) {\n onConnect?.(connection);\n }\n\n // it's important to get a fresh reference from the store here\n // in order to get the latest state of onConnectEnd\n onConnectEnd?.(event);\n\n if (edgeUpdaterType) {\n onEdgeUpdateEnd?.(event);\n }\n\n cancelConnection();\n cancelAnimationFrame(autoPanId);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n handleDomNode = null;\n connectionStartHandle = null;\n\n doc.removeEventListener('mousemove', onPointerMove as EventListener);\n doc.removeEventListener('mouseup', onPointerUp as EventListener);\n\n doc.removeEventListener('touchmove', onPointerMove as EventListener);\n doc.removeEventListener('touchend', onPointerUp as EventListener);\n }\n\n doc.addEventListener('mousemove', onPointerMove as EventListener);\n doc.addEventListener('mouseup', onPointerUp as EventListener);\n\n doc.addEventListener('touchmove', onPointerMove as EventListener);\n doc.addEventListener('touchend', onPointerUp as EventListener);\n}\n\n// checks if and returns connection in fom of an object { source: 123, target: 312 }\nfunction isValidHandle(\n event: MouseEvent | TouchEvent,\n {\n handle,\n connectionMode,\n fromNodeId,\n fromHandleId,\n fromType,\n doc,\n lib,\n flowId,\n isValidConnection = alwaysValid,\n }: IsValidParams,\n) {\n const isTarget = fromType === 'target';\n const handleDomNode = handle\n ? doc.querySelector(\n `.${lib}-flow__handle[data-id=\"${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}\"]`,\n )\n : null;\n\n const { x, y } = getEventPosition(event);\n const handleBelow = doc.elementFromPoint(x, y);\n // we always want to prioritize the handle below the mouse cursor over the closest distance handle,\n // because it could be that the center of another handle is closer to the mouse pointer than the handle below the cursor\n const handleToCheck = handleBelow?.classList.contains(`${lib}-flow__handle`)\n ? handleBelow\n : handleDomNode;\n\n const result: Result = {\n handleDomNode: handleToCheck,\n isValid: false,\n connection: null,\n endHandle: null,\n };\n\n if (handleToCheck) {\n const handleType = getHandleType(undefined, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute('data-nodeid');\n const handleId = handleToCheck.getAttribute('data-handleid');\n const connectable = handleToCheck.classList.contains('connectable');\n const connectableEnd = handleToCheck.classList.contains('connectableend');\n\n if (!handleNodeId) {\n return result;\n }\n\n const connection: Connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId,\n };\n\n result.connection = connection;\n\n const isConnectable = connectable && connectableEnd;\n // in strict mode we don't allow target to target or source to source connections\n const isValid =\n isConnectable &&\n (connectionMode === ConnectionMode.Strict\n ? (isTarget && handleType === 'source') ||\n (!isTarget && handleType === 'target')\n : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n\n if (isValid) {\n result.endHandle = {\n nodeId: handleNodeId as string,\n handleId,\n type: handleType as HandleType,\n };\n\n result.isValid = isValidConnection(connection);\n }\n }\n\n return result;\n}\n\nexport const XYHandle: XYHandleInstance = {\n onPointerDown,\n isValid: isValidHandle,\n};\n","import {\n type HTMLAttributes,\n type MouseEvent as ReactMouseEvent,\n type TouchEvent as ReactTouchEvent,\n type ForwardedRef,\n memo,\n} from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { useNodeId } from '../../contexts/NodeIdContext';\nimport { errorMessages } from '../../constants';\nimport {\n HandleProps,\n HandleType,\n ConnectionMode,\n Position,\n Connection,\n} from '../../types/system';\nimport { isMouseEvent, getHostForElement } from '../../utils/dom';\nimport { fixedForwardRef } from '../../utils/general';\nimport { InkFlowState } from '../../types';\nimport { addEdge } from '../../utils/edges';\nimport { XYHandle } from '../../utils/xyhandle';\n\nexport interface HandleComponentProps\n extends HandleProps,\n Omit<HTMLAttributes<HTMLDivElement>, 'id'> {}\n\nconst selector = (s: InkFlowState) => ({\n connectOnClick: s.connectOnClick,\n noPanClassName: s.noPanClassName,\n rfId: s.rfId,\n});\n\nconst connectingSelector =\n (nodeId: string | null, handleId: string | null, type: HandleType) =>\n (state: InkFlowState) => {\n const {\n connectionStartHandle: startHandle,\n connectionEndHandle: endHandle,\n connectionClickStartHandle: clickHandle,\n connectionMode,\n connectionStatus,\n } = state;\n\n const connectingTo =\n endHandle?.nodeId === nodeId &&\n endHandle?.handleId === handleId &&\n endHandle?.type === type;\n\n return {\n connectingFrom:\n startHandle?.nodeId === nodeId &&\n startHandle?.handleId === handleId &&\n startHandle?.type === type,\n connectingTo,\n clickConnecting:\n clickHandle?.nodeId === nodeId &&\n clickHandle?.handleId === handleId &&\n clickHandle?.type === type,\n isPossibleEndHandle:\n connectionMode === ConnectionMode.Strict\n ? startHandle?.type !== type\n : nodeId !== startHandle?.nodeId ||\n handleId !== startHandle?.handleId,\n connectionInProcess: !!startHandle,\n valid: connectingTo && connectionStatus === 'valid',\n };\n };\n\nfunction HandleComponent(\n {\n type = 'source',\n position = Position.Top,\n isValidConnection,\n isConnectable = true,\n isConnectableStart = true,\n isConnectableEnd = true,\n id,\n onConnect,\n children,\n className,\n onMouseDown,\n onTouchStart,\n ...rest\n }: HandleComponentProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const handleId = id || null;\n const isTarget = type === 'target';\n const store = useStoreApi();\n const nodeId = useNodeId();\n const { connectOnClick, noPanClassName, rfId } = useStore(selector, shallow);\n const {\n connectingFrom,\n connectingTo,\n clickConnecting,\n isPossibleEndHandle,\n connectionInProcess,\n valid,\n } = useStore(connectingSelector(nodeId, handleId, type), shallow);\n\n if (!nodeId) {\n store.getState().onError?.('010', errorMessages['error010']());\n }\n\n const onConnectExtended = (params: Connection) => {\n const {\n defaultEdgeOptions,\n onConnect: onConnectAction,\n hasDefaultEdges,\n } = store.getState();\n\n const edgeParams = {\n ...defaultEdgeOptions,\n ...params,\n };\n if (hasDefaultEdges) {\n const { edges, setEdges } = store.getState();\n setEdges(addEdge(edgeParams, edges));\n }\n\n onConnectAction?.(edgeParams);\n onConnect?.(edgeParams);\n };\n\n const onPointerDown = (\n event: ReactMouseEvent<HTMLDivElement> | ReactTouchEvent<HTMLDivElement>,\n ) => {\n if (!nodeId) {\n return;\n }\n\n const isMouseTriggered = isMouseEvent(event.nativeEvent);\n\n if (\n isConnectableStart &&\n ((isMouseTriggered &&\n (event as ReactMouseEvent<HTMLDivElement>).button === 0) ||\n !isMouseTriggered)\n ) {\n const currentStore = store.getState();\n\n XYHandle.onPointerDown(event.nativeEvent, {\n autoPanOnConnect: currentStore.autoPanOnConnect,\n connectionMode: currentStore.connectionMode,\n connectionRadius: currentStore.connectionRadius,\n domNode: currentStore.domNode,\n nodeLookup: currentStore.nodeLookup,\n lib: currentStore.lib,\n isTarget,\n handleId,\n nodeId,\n flowId: currentStore.rfId,\n panBy: currentStore.panBy,\n cancelConnection: currentStore.cancelConnection,\n onConnectStart: currentStore.onConnectStart,\n onConnectEnd: currentStore.onConnectEnd,\n updateConnection: currentStore.updateConnection,\n onConnect: onConnectExtended,\n isValidConnection: isValidConnection || currentStore.isValidConnection,\n getTransform: () => store.getState().transform,\n getConnectionStartHandle: () => store.getState().connectionStartHandle,\n });\n }\n\n if (isMouseTriggered) {\n onMouseDown?.(event as ReactMouseEvent<HTMLDivElement>);\n } else {\n onTouchStart?.(event as ReactTouchEvent<HTMLDivElement>);\n }\n };\n\n const onClick = (event: ReactMouseEvent) => {\n const {\n onClickConnectStart,\n onClickConnectEnd,\n connectionClickStartHandle,\n connectionMode,\n isValidConnection: isValidConnectionStore,\n lib,\n rfId: flowId,\n } = store.getState();\n\n if (!nodeId || (!connectionClickStartHandle && !isConnectableStart)) {\n return;\n }\n\n if (!connectionClickStartHandle) {\n onClickConnectStart?.(event.nativeEvent, {\n nodeId,\n handleId,\n handleType: type,\n });\n store.setState({\n connectionClickStartHandle: { nodeId, type, handleId },\n });\n return;\n }\n\n const doc = getHostForElement(event.target as HTMLElement);\n const isValidConnectionHandler =\n isValidConnection || isValidConnectionStore;\n const { connection, isValid } = XYHandle.isValid(event.nativeEvent, {\n handle: {\n nodeId,\n id: handleId,\n type,\n },\n connectionMode,\n fromNodeId: connectionClickStartHandle.nodeId,\n fromHandleId: connectionClickStartHandle.handleId || null,\n fromType: connectionClickStartHandle.type,\n isValidConnection: isValidConnectionHandler,\n flowId,\n doc,\n lib,\n });\n\n if (isValid && connection) {\n onConnectExtended(connection);\n }\n\n onClickConnectEnd?.(event as unknown as MouseEvent);\n\n store.setState({ connectionClickStartHandle: null });\n };\n\n return (\n <div\n data-handleid={handleId}\n data-nodeid={nodeId}\n data-handlepos={position}\n data-id={`${rfId}-${nodeId}-${handleId}-${type}`}\n className={cc([\n 'ink-flow__handle',\n `ink-flow__handle-${position}`,\n 'nodrag',\n noPanClassName,\n className,\n {\n source: !isTarget,\n target: isTarget,\n connectable: isConnectable,\n connectablestart: isConnectableStart,\n connectableend: isConnectableEnd,\n clickconnecting: clickConnecting,\n connectingfrom: connectingFrom,\n connectingto: connectingTo,\n valid,\n // shows where you can start a connection from\n // and where you can end it while connecting\n connectionindicator:\n isConnectable &&\n (!connectionInProcess || isPossibleEndHandle) &&\n (connectionInProcess ? isConnectableEnd : isConnectableStart),\n },\n ])}\n onMouseDown={onPointerDown}\n onTouchStart={onPointerDown}\n onClick={connectOnClick ? onClick : undefined}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n/**\n * The Handle component is a UI element that is used to connect nodes.\n */\nexport const Handle = memo(fixedForwardRef(HandleComponent));\n","import { InputNode } from '../Nodes/InputNode';\nimport { DefaultNode } from '../Nodes/DefaultNode';\nimport { GroupNode } from '../Nodes/GroupNode';\nimport { OutputNode } from '../Nodes/OutputNode';\nimport type { InternalNode, Node, NodeTypes } from '../../types';\nimport { XYPosition } from '../../types/system';\n\nexport const arrowKeyDiffs: Record<string, XYPosition> = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 },\n};\n\nexport const builtinNodeTypes: NodeTypes = {\n input: InputNode,\n default: DefaultNode,\n output: OutputNode,\n group: GroupNode,\n};\n\nexport function getNodeInlineStyleDimensions<NodeType extends Node = Node>(\n node: InternalNode<NodeType>,\n): {\n width: number | string | undefined;\n height: number | string | undefined;\n} {\n if (node.internals.handleBounds === undefined) {\n return {\n width: node.width ?? node.initialWidth ?? node.style?.width,\n height: node.height ?? node.initialHeight ?? node.style?.height,\n };\n }\n\n return {\n width: node.width ?? node.style?.width,\n height: node.height ?? node.style?.height,\n };\n}\n","import { BuiltInNode } from '../../types';\nimport { NodeProps, Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function InputNode({\n data,\n isConnectable,\n sourcePosition = Position.Bottom,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n {data?.label}\n <Handle\n type=\"source\"\n position={sourcePosition}\n isConnectable={isConnectable}\n />\n </>\n );\n}\n","import { BuiltInNode, NodeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function DefaultNode({\n data,\n isConnectable,\n targetPosition = Position.Top,\n sourcePosition = Position.Bottom,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n <Handle\n type=\"target\"\n position={targetPosition}\n isConnectable={isConnectable}\n />\n {data?.label}\n <Handle\n type=\"source\"\n position={sourcePosition}\n isConnectable={isConnectable}\n />\n </>\n );\n}\n","import { BuiltInNode, NodeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function OutputNode({\n data,\n isConnectable,\n targetPosition = Position.Top,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n <Handle\n type=\"target\"\n position={targetPosition}\n isConnectable={isConnectable}\n />\n {data?.label}\n </>\n );\n}\n","export function GroupNode() {\n return null;\n}\n","import type { RefObject } from 'react';\nimport type { StoreApi } from 'zustand';\nimport { errorMessages } from '../../constants';\nimport { InkFlowState } from '../../types';\n\n// this handler is called by\n// 1. the click handler when node is not draggable or selectNodesOnDrag = false\n// or\n// 2. the on drag start handler when node is draggable and selectNodesOnDrag = true\nexport function handleNodeClick({\n id,\n store,\n unselect = false,\n nodeRef,\n}: {\n id: string;\n store: {\n getState: StoreApi<InkFlowState>['getState'];\n setState: StoreApi<InkFlowState>['setState'];\n };\n unselect?: boolean;\n nodeRef?: RefObject<HTMLDivElement>;\n}) {\n const {\n addSelectedNodes,\n unselectNodesAndEdges,\n multiSelectionActive,\n nodeLookup,\n onError,\n } = store.getState();\n const node = nodeLookup.get(id);\n\n if (!node) {\n onError?.('012', errorMessages['error012'](id));\n return;\n }\n\n store.setState({ nodesSelectionActive: false });\n\n if (!node.selected) {\n addSelectedNodes([id]);\n } else if (unselect || (node.selected && multiSelectionActive)) {\n unselectNodesAndEdges({ nodes: [node], edges: [] });\n\n requestAnimationFrame(() => nodeRef?.current?.blur());\n }\n}\n","import {\n NodeBase,\n NodeLookup,\n InternalNodeBase,\n XYPosition,\n NodeDragItem,\n} from '../../types/system';\n\nexport function isParentSelected<NodeType extends NodeBase>(\n node: NodeType,\n nodeLookup: NodeLookup,\n): boolean {\n if (!node.parentId) {\n return false;\n }\n\n const parentNode = nodeLookup.get(node.parentId);\n\n if (!parentNode) {\n return false;\n }\n\n if (parentNode.selected) {\n return true;\n }\n\n return isParentSelected(parentNode, nodeLookup);\n}\n\nexport function hasSelector(\n target: Element,\n selector: string,\n domNode: Element,\n): boolean {\n let current = target;\n\n do {\n if (current?.matches(selector)) return true;\n if (current === domNode) return false;\n current = current.parentElement as Element;\n } while (current);\n\n return false;\n}\n\n// looks for all selected nodes and created a NodeDragItem for each of them\nexport function getDragItems<NodeType extends NodeBase>(\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n nodesDraggable: boolean,\n mousePos: XYPosition,\n nodeId?: string,\n): Map<string, NodeDragItem> {\n const dragItems = new Map<string, NodeDragItem>();\n\n for (const [id, node] of nodeLookup) {\n if (\n (node.selected || node.id === nodeId) &&\n (!node.parentId || !isParentSelected(node, nodeLookup)) &&\n (node.draggable ||\n (nodesDraggable && typeof node.draggable === 'undefined'))\n ) {\n const internalNode = nodeLookup.get(id);\n\n if (internalNode) {\n dragItems.set(id, {\n id,\n position: internalNode.position || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - internalNode.internals.positionAbsolute.x,\n y: mousePos.y - internalNode.internals.positionAbsolute.y,\n },\n extent: internalNode.extent,\n parentId: internalNode.parentId,\n origin: internalNode.origin,\n expandParent: internalNode.expandParent,\n internals: {\n positionAbsolute: internalNode.internals.positionAbsolute || {\n x: 0,\n y: 0,\n },\n },\n measured: {\n width: internalNode.measured.width ?? 0,\n height: internalNode.measured.height ?? 0,\n },\n });\n }\n }\n }\n\n return dragItems;\n}\n\n// returns two params:\n// 1. the dragged node (or the first of the list, if we are dragging a node selection)\n// 2. array of selected nodes (for multi selections)\nexport function getEventHandlerParams<NodeType extends InternalNodeBase>({\n nodeId,\n dragItems,\n nodeLookup,\n}: {\n nodeId?: string;\n dragItems: Map<string, NodeDragItem>;\n nodeLookup: Map<string, NodeType>;\n}): [NodeBase, NodeBase[]] {\n const nodesFromDragItems: NodeBase[] = [];\n\n for (const [id, dragItem] of dragItems) {\n const node = nodeLookup.get(id)?.internals.userNode;\n\n if (node) {\n nodesFromDragItems.push({\n ...node,\n position: dragItem.position,\n });\n }\n }\n\n if (!nodeId) {\n return [nodesFromDragItems[0], nodesFromDragItems];\n }\n\n const node = nodeLookup.get(nodeId)!.internals.userNode;\n\n return [\n {\n ...node,\n position: dragItems.get(nodeId)?.position || node.position,\n },\n nodesFromDragItems,\n ];\n}\n","import { drag } from 'd3-drag';\nimport { select, type Selection } from 'd3-selection';\n\nimport { getDragItems, getEventHandlerParams, hasSelector } from './utils';\nimport {\n NodeDragItem,\n NodeBase,\n InternalNodeBase,\n EdgeBase,\n CoordinateExtent,\n SnapGrid,\n NodeOrigin,\n Transform,\n PanBy,\n OnError,\n OnSelectionDrag,\n UpdateNodePositions,\n XYPosition,\n Box,\n UseDragEvent,\n} from '../../types/system';\nimport { getPointerPosition, getEventPosition } from '../dom';\nimport { calcAutoPan, rectToBox, snapPosition } from '../general';\nimport { getInternalNodesBounds, calculateNodePosition } from '../graph';\n\nexport type OnDrag = (\n event: MouseEvent,\n dragItems: Map<string, NodeDragItem>,\n node: NodeBase,\n nodes: NodeBase[],\n) => void;\n\ntype StoreItems<OnNodeDrag> = {\n nodes: NodeBase[];\n nodeLookup: Map<string, InternalNodeBase>;\n edges: EdgeBase[];\n nodeExtent: CoordinateExtent;\n snapGrid: SnapGrid;\n snapToGrid: boolean;\n nodeOrigin: NodeOrigin;\n multiSelectionActive: boolean;\n domNode?: Element | null;\n transform: Transform;\n autoPanOnNodeDrag: boolean;\n nodesDraggable: boolean;\n selectNodesOnDrag: boolean;\n nodeDragThreshold: number;\n panBy: PanBy;\n unselectNodesAndEdges: (params?: {\n nodes?: NodeBase[];\n edges?: EdgeBase[];\n }) => void;\n onError?: OnError;\n onNodeDragStart?: OnNodeDrag;\n onNodeDrag?: OnNodeDrag;\n onNodeDragStop?: OnNodeDrag;\n onSelectionDragStart?: OnSelectionDrag;\n onSelectionDrag?: OnSelectionDrag;\n onSelectionDragStop?: OnSelectionDrag;\n updateNodePositions: UpdateNodePositions;\n};\n\nexport type XYDragParams<OnNodeDrag> = {\n getStoreItems: () => StoreItems<OnNodeDrag>;\n onDragStart?: OnDrag;\n onDrag?: OnDrag;\n onDragStop?: OnDrag;\n onNodeMouseDown?: (id: string) => void;\n};\n\nexport type XYDragInstance = {\n update: (params: DragUpdateParams) => void;\n destroy: () => void;\n};\n\nexport type DragUpdateParams = {\n noDragClassName?: string;\n handleSelector?: string;\n isSelectable?: boolean;\n nodeId?: string;\n domNode: Element;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function XYDrag<\n OnNodeDrag extends (e: any, nodes: any, node: any) => void | undefined,\n>({\n onNodeMouseDown,\n getStoreItems,\n onDragStart,\n onDrag,\n onDragStop,\n}: XYDragParams<OnNodeDrag>): XYDragInstance {\n let lastPos: { x: number | null; y: number | null } = { x: null, y: null };\n let autoPanId = 0;\n let dragItems = new Map<string, NodeDragItem>();\n let autoPanStarted = false;\n let mousePosition: XYPosition = { x: 0, y: 0 };\n let containerBounds: DOMRect | null = null;\n let dragStarted = false;\n let d3Selection: Selection<Element, unknown, null, undefined> | null = null;\n\n // public functions\n function update({\n noDragClassName,\n handleSelector,\n domNode,\n isSelectable,\n nodeId,\n }: DragUpdateParams) {\n d3Selection = select(domNode);\n function updateNodes({ x, y }: XYPosition, dragEvent: MouseEvent | null) {\n const {\n nodeLookup,\n nodeExtent,\n snapGrid,\n snapToGrid,\n nodeOrigin,\n onNodeDrag,\n onSelectionDrag,\n onError,\n updateNodePositions,\n } = getStoreItems();\n\n lastPos = { x, y };\n\n let hasChange = false;\n let nodesBox: Box = { x: 0, y: 0, x2: 0, y2: 0 };\n\n if (dragItems.size > 1 && nodeExtent) {\n const rect = getInternalNodesBounds(dragItems, { nodeOrigin });\n nodesBox = rectToBox(rect);\n }\n\n for (const [id, dragItem] of dragItems) {\n let nextPosition = {\n x: x - dragItem.distance.x,\n y: y - dragItem.distance.y,\n };\n\n if (snapToGrid) {\n nextPosition = snapPosition(nextPosition, snapGrid);\n }\n\n // if there is selection with multiple nodes and a node extent is set, we need to adjust the node extent for each node\n // based on its position so that the node stays at it's position relative to the selection.\n let adjustedNodeExtent: CoordinateExtent = [\n [nodeExtent[0][0], nodeExtent[0][1]],\n [nodeExtent[1][0], nodeExtent[1][1]],\n ];\n\n if (dragItems.size > 1 && nodeExtent && !dragItem.extent) {\n const { positionAbsolute } = dragItem.internals;\n const x1 = positionAbsolute.x - nodesBox.x + nodeExtent[0][0];\n const x2 =\n positionAbsolute.x +\n dragItem.measured.width -\n nodesBox.x2 +\n nodeExtent[1][0];\n\n const y1 = positionAbsolute.y - nodesBox.y + nodeExtent[0][1];\n const y2 =\n positionAbsolute.y +\n dragItem.measured.height -\n nodesBox.y2 +\n nodeExtent[1][1];\n\n adjustedNodeExtent = [\n [x1, y1],\n [x2, y2],\n ];\n }\n\n const { position, positionAbsolute } = calculateNodePosition({\n nodeId: id,\n nextPosition,\n nodeLookup,\n nodeExtent: adjustedNodeExtent,\n nodeOrigin,\n onError,\n });\n\n // we want to make sure that we only fire a change event when there is a change\n hasChange =\n hasChange ||\n dragItem.position.x !== position.x ||\n dragItem.position.y !== position.y;\n\n dragItem.position = position;\n dragItem.internals.positionAbsolute = positionAbsolute;\n }\n\n if (!hasChange) {\n return;\n }\n\n updateNodePositions(dragItems, true);\n\n if (dragEvent && (onDrag || onNodeDrag || (!nodeId && onSelectionDrag))) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDrag?.(dragEvent, dragItems, currentNode, currentNodes);\n onNodeDrag?.(dragEvent, currentNode, currentNodes);\n\n if (!nodeId) {\n onSelectionDrag?.(dragEvent, currentNodes);\n }\n }\n }\n\n function autoPan() {\n if (!containerBounds) {\n return;\n }\n\n const [xMovement, yMovement] = calcAutoPan(\n mousePosition,\n containerBounds,\n );\n\n if (xMovement !== 0 || yMovement !== 0) {\n const { transform, panBy } = getStoreItems();\n\n lastPos.x = (lastPos.x ?? 0) - xMovement / transform[2];\n lastPos.y = (lastPos.y ?? 0) - yMovement / transform[2];\n\n if (panBy({ x: xMovement, y: yMovement })) {\n updateNodes(lastPos as XYPosition, null);\n }\n }\n autoPanId = requestAnimationFrame(autoPan);\n }\n\n function startDrag(event: UseDragEvent) {\n const {\n nodeLookup,\n multiSelectionActive,\n nodesDraggable,\n transform,\n snapGrid,\n snapToGrid,\n selectNodesOnDrag,\n onNodeDragStart,\n onSelectionDragStart,\n unselectNodesAndEdges,\n } = getStoreItems();\n\n dragStarted = true;\n\n if (\n (!selectNodesOnDrag || !isSelectable) &&\n !multiSelectionActive &&\n nodeId\n ) {\n if (!nodeLookup.get(nodeId)?.selected) {\n // we need to reset selected nodes when selectNodesOnDrag=false\n unselectNodesAndEdges();\n }\n }\n\n if (isSelectable && selectNodesOnDrag && nodeId) {\n onNodeMouseDown?.(nodeId);\n }\n\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n lastPos = pointerPos;\n dragItems = getDragItems(nodeLookup, nodesDraggable, pointerPos, nodeId);\n\n if (\n dragItems.size > 0 &&\n (onDragStart || onNodeDragStart || (!nodeId && onSelectionDragStart))\n ) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDragStart?.(\n event.sourceEvent as MouseEvent,\n dragItems,\n currentNode,\n currentNodes,\n );\n onNodeDragStart?.(\n event.sourceEvent as MouseEvent,\n currentNode,\n currentNodes,\n );\n\n if (!nodeId) {\n onSelectionDragStart?.(event.sourceEvent as MouseEvent, currentNodes);\n }\n }\n }\n\n const d3DragInstance = drag()\n .on('start', (event: UseDragEvent) => {\n const { domNode, nodeDragThreshold, transform, snapGrid, snapToGrid } =\n getStoreItems();\n\n if (nodeDragThreshold === 0) {\n startDrag(event);\n }\n\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n lastPos = pointerPos;\n containerBounds = domNode?.getBoundingClientRect() || null;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds!);\n })\n .on('drag', (event: UseDragEvent) => {\n const {\n autoPanOnNodeDrag,\n transform,\n snapGrid,\n snapToGrid,\n nodeDragThreshold,\n } = getStoreItems();\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n\n if (!autoPanStarted && autoPanOnNodeDrag && dragStarted) {\n autoPanStarted = true;\n autoPan();\n }\n\n if (!dragStarted) {\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance = Math.sqrt(x * x + y * y);\n\n if (distance > nodeDragThreshold) {\n startDrag(event);\n }\n }\n\n // skip events without movement\n if (\n (lastPos.x !== pointerPos.xSnapped ||\n lastPos.y !== pointerPos.ySnapped) &&\n dragItems &&\n dragStarted\n ) {\n // dragEvent = event.sourceEvent as MouseEvent;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds!);\n\n updateNodes(pointerPos, event.sourceEvent as MouseEvent);\n }\n })\n .on('end', (event: UseDragEvent) => {\n if (!dragStarted) {\n return;\n }\n\n autoPanStarted = false;\n dragStarted = false;\n cancelAnimationFrame(autoPanId);\n\n if (dragItems.size > 0) {\n const {\n nodeLookup,\n updateNodePositions,\n onNodeDragStop,\n onSelectionDragStop,\n } = getStoreItems();\n\n updateNodePositions(dragItems, false);\n\n if (\n onDragStop ||\n onNodeDragStop ||\n (!nodeId && onSelectionDragStop)\n ) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDragStop?.(\n event.sourceEvent as MouseEvent,\n dragItems,\n currentNode,\n currentNodes,\n );\n onNodeDragStop?.(\n event.sourceEvent as MouseEvent,\n currentNode,\n currentNodes,\n );\n\n if (!nodeId) {\n onSelectionDragStop?.(\n event.sourceEvent as MouseEvent,\n currentNodes,\n );\n }\n }\n }\n })\n .filter((event: MouseEvent) => {\n const target = event.target as HTMLDivElement;\n const isDraggable =\n !event.button &&\n (!noDragClassName ||\n !hasSelector(target, `.${noDragClassName}`, domNode)) &&\n (!handleSelector || hasSelector(target, handleSelector, domNode));\n\n return isDraggable;\n });\n\n d3Selection.call(d3DragInstance);\n }\n\n function destroy() {\n d3Selection?.on('.drag', null);\n }\n\n return {\n update,\n destroy,\n };\n}\n","import { useCallback } from 'react';\n\nimport { type Node } from '../types';\nimport { useStoreApi } from './useStore';\nimport { XYPosition } from '../types/system';\nimport { snapPosition } from '../utils/general';\nimport { calculateNodePosition } from '../utils/graph';\n\nconst selectedAndDraggable = (nodesDraggable: boolean) => (n: Node) =>\n n.selected &&\n (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined'));\n\n/**\n * Hook for updating node positions by passing a direction and factor\n *\n * @internal\n * @returns function for updating node positions\n */\nexport function useMoveSelectedNodes() {\n const store = useStoreApi();\n\n const moveSelectedNodes = useCallback(\n (params: { direction: XYPosition; factor: number }) => {\n const {\n nodeExtent,\n snapToGrid,\n snapGrid,\n nodesDraggable,\n onError,\n updateNodePositions,\n nodeLookup,\n nodeOrigin,\n } = store.getState();\n const nodeUpdates = new Map();\n const isSelected = selectedAndDraggable(nodesDraggable);\n\n // by default a node moves 5px on each key press\n // if snap grid is enabled, we use that for the velocity\n const xVelo = snapToGrid ? snapGrid[0] : 5;\n const yVelo = snapToGrid ? snapGrid[1] : 5;\n\n const xDiff = params.direction.x * xVelo * params.factor;\n const yDiff = params.direction.y * yVelo * params.factor;\n\n for (const [, node] of nodeLookup) {\n if (!isSelected(node)) {\n continue;\n }\n\n let nextPosition = {\n x: node.internals.positionAbsolute.x + xDiff,\n y: node.internals.positionAbsolute.y + yDiff,\n };\n\n if (snapToGrid) {\n nextPosition = snapPosition(nextPosition, snapGrid);\n }\n\n const { position, positionAbsolute } = calculateNodePosition({\n nodeId: node.id,\n nextPosition,\n nodeLookup,\n nodeExtent,\n nodeOrigin,\n onError,\n });\n\n node.position = position;\n node.internals.positionAbsolute = positionAbsolute;\n\n nodeUpdates.set(node.id, node);\n }\n\n updateNodePositions(nodeUpdates);\n },\n [],\n );\n\n return moveSelectedNodes;\n}\n","import { type MouseEvent, type KeyboardEvent } from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { Provider } from '../../contexts/NodeIdContext';\nimport { ARIA_NODE_DESC_KEY } from '../A11yDescriptions';\nimport {\n arrowKeyDiffs,\n builtinNodeTypes,\n getNodeInlineStyleDimensions,\n} from './utils';\nimport { useNodeObserver } from './useNodeObserver';\nimport type { InternalNode, Node, NodeWrapperProps } from '../../types';\nimport { errorMessages, elementSelectionKeys } from '../../constants';\nimport { isInputDOMNode } from '../../utils/dom';\nimport {\n getNodeDimensions,\n clampPosition,\n nodeHasDimensions,\n getPositionWithOrigin,\n} from '../../utils/general';\nimport { useDrag } from '../../hooks/useDrag';\nimport { useMoveSelectedNodes } from '../../hooks/useMoveSelectedNodes';\nimport { handleNodeClick } from '../Nodes/utils';\n\nexport function NodeWrapper<NodeType extends Node>({\n id,\n onClick,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n onContextMenu,\n onDoubleClick,\n nodesDraggable,\n elementsSelectable,\n nodesConnectable,\n nodesFocusable,\n resizeObserver,\n noDragClassName,\n noPanClassName,\n disableKeyboardA11y,\n rfId,\n nodeTypes,\n nodeExtent,\n nodeOrigin,\n onError,\n}: NodeWrapperProps<NodeType>) {\n const { node, internals, isParent } = useStore((s) => {\n const node = s.nodeLookup.get(id)! as InternalNode<NodeType>;\n const isParent = s.parentLookup.has(id);\n\n return {\n node,\n internals: node.internals,\n isParent,\n };\n }, shallow);\n\n let nodeType = node.type || 'default';\n let NodeComponent = nodeTypes?.[nodeType] || builtinNodeTypes[nodeType];\n\n if (NodeComponent === undefined) {\n onError?.('003', errorMessages['error003'](nodeType));\n nodeType = 'default';\n NodeComponent = builtinNodeTypes.default;\n }\n\n const isDraggable = !!(\n node.draggable ||\n (nodesDraggable && typeof node.draggable === 'undefined')\n );\n const isSelectable = !!(\n node.selectable ||\n (elementsSelectable && typeof node.selectable === 'undefined')\n );\n const isConnectable = !!(\n node.connectable ||\n (nodesConnectable && typeof node.connectable === 'undefined')\n );\n const isFocusable = !!(\n node.focusable ||\n (nodesFocusable && typeof node.focusable === 'undefined')\n );\n\n const store = useStoreApi();\n const hasDimensions = nodeHasDimensions(node);\n const nodeRef = useNodeObserver({\n node,\n nodeType,\n hasDimensions,\n resizeObserver,\n });\n const dragging = useDrag({\n nodeRef,\n disabled: node.hidden || !isDraggable,\n noDragClassName,\n handleSelector: node.dragHandle,\n nodeId: id,\n isSelectable,\n });\n const moveSelectedNodes = useMoveSelectedNodes();\n\n if (node.hidden) {\n return null;\n }\n\n const nodeDimensions = getNodeDimensions(node);\n const inlineDimensions = getNodeInlineStyleDimensions(node);\n const clampedPosition = nodeExtent\n ? clampPosition(internals.positionAbsolute, nodeExtent)\n : internals.positionAbsolute;\n\n const positionWithOrigin = getPositionWithOrigin({\n ...clampedPosition,\n ...nodeDimensions,\n origin: node.origin || nodeOrigin,\n });\n const hasPointerEvents =\n isSelectable ||\n isDraggable ||\n onClick ||\n onMouseEnter ||\n onMouseMove ||\n onMouseLeave;\n\n const onMouseEnterHandler = onMouseEnter\n ? (event: MouseEvent) => onMouseEnter(event, { ...internals.userNode })\n : undefined;\n const onMouseMoveHandler = onMouseMove\n ? (event: MouseEvent) => onMouseMove(event, { ...internals.userNode })\n : undefined;\n const onMouseLeaveHandler = onMouseLeave\n ? (event: MouseEvent) => onMouseLeave(event, { ...internals.userNode })\n : undefined;\n const onContextMenuHandler = onContextMenu\n ? (event: MouseEvent) => onContextMenu(event, { ...internals.userNode })\n : undefined;\n const onDoubleClickHandler = onDoubleClick\n ? (event: MouseEvent) => onDoubleClick(event, { ...internals.userNode })\n : undefined;\n\n const onSelectNodeHandler = (event: MouseEvent) => {\n const { selectNodesOnDrag, nodeDragThreshold } = store.getState();\n\n if (\n isSelectable &&\n (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0)\n ) {\n // this handler gets called by XYDrag on drag start when selectNodesOnDrag=true\n // here we only need to call it when selectNodesOnDrag=false\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n }\n\n if (onClick) {\n onClick(event, { ...internals.userNode });\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) {\n return;\n }\n\n if (elementSelectionKeys.includes(event.key) && isSelectable) {\n const unselect = event.key === 'Escape';\n\n handleNodeClick({\n id,\n store,\n unselect,\n nodeRef,\n });\n } else if (\n isDraggable &&\n node.selected &&\n Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)\n ) {\n store.setState({\n ariaLiveMessage: `Moved selected node ${event.key\n .replace('Arrow', '')\n .toLowerCase()}. New position, x: ${~~clampedPosition.x}, y: ${~~clampedPosition.y}`,\n });\n\n moveSelectedNodes({\n direction: arrowKeyDiffs[event.key],\n factor: event.shiftKey ? 4 : 1,\n });\n }\n };\n\n return (\n <div\n className={cc([\n 'ink-flow__node',\n `ink-flow__node-${nodeType}`,\n {\n // this is overwritable by passing `nopan` as a class name\n [noPanClassName]: isDraggable,\n },\n node.className,\n {\n selected: node.selected,\n selectable: isSelectable,\n parent: isParent,\n draggable: isDraggable,\n dragging,\n },\n ])}\n ref={nodeRef}\n style={{\n zIndex: internals.z,\n transform: `translate(${positionWithOrigin.x}px,${positionWithOrigin.y}px)`,\n pointerEvents: hasPointerEvents ? 'all' : 'none',\n visibility: hasDimensions ? 'visible' : 'hidden',\n ...node.style,\n ...inlineDimensions,\n }}\n data-id={id}\n data-testid={`rf__node-${id}`}\n onMouseEnter={onMouseEnterHandler}\n onMouseMove={onMouseMoveHandler}\n onMouseLeave={onMouseLeaveHandler}\n onContextMenu={onContextMenuHandler}\n onClick={onSelectNodeHandler}\n onDoubleClick={onDoubleClickHandler}\n onKeyDown={isFocusable ? onKeyDown : undefined}\n tabIndex={isFocusable ? 0 : undefined}\n role={isFocusable ? 'button' : undefined}\n aria-describedby={\n disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`\n }\n aria-label={node.ariaLabel}\n >\n <Provider value={id}>\n <NodeComponent\n id={id}\n data={node.data}\n type={nodeType}\n positionAbsoluteX={clampedPosition.x}\n positionAbsoluteY={clampedPosition.y}\n selected={node.selected}\n isConnectable={isConnectable}\n sourcePosition={node.sourcePosition}\n targetPosition={node.targetPosition}\n dragging={dragging}\n dragHandle={node.dragHandle}\n zIndex={internals.z}\n {...nodeDimensions}\n />\n </Provider>\n </div>\n );\n}\n","import { useEffect, useRef } from 'react';\n\nimport type { InternalNode } from '../../types';\nimport { useStoreApi } from '../../hooks/useStore';\n\n/**\n * Hook to handle the resize observation + internal updates for the passed node.\n *\n * @internal\n * @returns nodeRef - reference to the node element\n */\nexport function useNodeObserver({\n node,\n nodeType,\n hasDimensions,\n resizeObserver,\n}: {\n node: InternalNode;\n nodeType: string;\n hasDimensions: boolean;\n resizeObserver: ResizeObserver | null;\n}) {\n const store = useStoreApi();\n const nodeRef = useRef<HTMLDivElement | null>(null);\n const observedNode = useRef<HTMLDivElement | null>(null);\n const prevSourcePosition = useRef(node.sourcePosition);\n const prevTargetPosition = useRef(node.targetPosition);\n const prevType = useRef(nodeType);\n const isInitialized = hasDimensions && !!node.internals.handleBounds && !node.hidden;\n\n useEffect(() => {\n if (nodeRef.current && (!isInitialized || observedNode.current !== nodeRef.current)) {\n if (observedNode.current) {\n resizeObserver?.unobserve(observedNode.current);\n }\n resizeObserver?.observe(nodeRef.current);\n observedNode.current = nodeRef.current;\n }\n }, [isInitialized]);\n\n useEffect(() => {\n return () => {\n if (observedNode.current) {\n resizeObserver?.unobserve(observedNode.current);\n observedNode.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (nodeRef.current) {\n // when the user programmatically changes the source or handle position, we need to update the internals\n // to make sure the edges are updated correctly\n const typeChanged = prevType.current !== nodeType;\n const sourcePosChanged = prevSourcePosition.current !== node.sourcePosition;\n const targetPosChanged = prevTargetPosition.current !== node.targetPosition;\n\n if (typeChanged || sourcePosChanged || targetPosChanged) {\n prevType.current = nodeType;\n prevSourcePosition.current = node.sourcePosition;\n prevTargetPosition.current = node.targetPosition;\n\n store\n .getState()\n .updateNodeInternals(new Map([[node.id, { id: node.id, nodeElement: nodeRef.current, force: true }]]));\n }\n }\n }, [node.id, nodeType, node.sourcePosition, node.targetPosition]);\n\n return nodeRef;\n}\n","import { useEffect, useRef, useState, type RefObject } from 'react';\nimport { useStoreApi } from './useStore';\nimport { handleNodeClick } from '../components/Nodes/utils';\nimport { XYDrag, XYDragInstance } from '../utils/xydrag';\n\ntype UseDragParams = {\n nodeRef: RefObject<HTMLDivElement>;\n disabled?: boolean;\n noDragClassName?: string;\n handleSelector?: string;\n nodeId?: string;\n isSelectable?: boolean;\n};\n\nexport function useDrag({\n nodeRef,\n disabled = false,\n noDragClassName,\n handleSelector,\n nodeId,\n isSelectable,\n}: UseDragParams) {\n const store = useStoreApi();\n const [dragging, setDragging] = useState<boolean>(false);\n const xyDrag = useRef<XYDragInstance>();\n\n useEffect(() => {\n xyDrag.current = XYDrag({\n getStoreItems: () => store.getState(),\n onNodeMouseDown: (id: string) => {\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n },\n onDragStart: () => {\n setDragging(true);\n },\n onDragStop: () => {\n setDragging(false);\n },\n });\n }, []);\n\n useEffect(() => {\n if (disabled) {\n xyDrag.current?.destroy();\n } else if (nodeRef.current) {\n xyDrag.current?.update({\n noDragClassName,\n handleSelector,\n domNode: nodeRef.current,\n isSelectable,\n nodeId,\n });\n return () => {\n xyDrag.current?.destroy();\n };\n }\n }, [\n noDragClassName,\n handleSelector,\n disabled,\n isSelectable,\n nodeRef,\n nodeId,\n ]);\n\n return dragging;\n}\n","import { memo } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { GraphViewProps } from '../GraphView';\nimport { useResizeObserver } from './useResizeObserver';\nimport type { Node, InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\nimport { useVisibleNodeIds } from '../../hooks/useVisibleNodeIds';\nimport { containerStyle } from '../../styles/utils';\nimport { NodeWrapper } from '../../components/NodeWrapper';\n\nexport type NodeRendererProps<NodeType extends Node> = Pick<\n GraphViewProps<NodeType>,\n // | 'onNodeClick'\n // | 'onNodeDoubleClick'\n // | 'onNodeMouseEnter'\n // | 'onNodeMouseMove'\n // | 'onNodeMouseLeave'\n // | 'onNodeContextMenu'\n // | 'onlyRenderVisibleElements'\n | 'noPanClassName'\n | 'noDragClassName'\n | 'rfId'\n | 'disableKeyboardA11y'\n | 'nodeOrigin'\n // | 'nodeExtent'\n | 'nodeTypes'\n>;\n\nconst selector = (s: InkFlowState) => ({\n nodesDraggable: s.nodesDraggable,\n nodesConnectable: s.nodesConnectable,\n nodesFocusable: s.nodesFocusable,\n elementsSelectable: s.elementsSelectable,\n onError: s.onError,\n});\n\nfunction NodeRendererComponent<NodeType extends Node>(\n props: NodeRendererProps<NodeType>,\n) {\n const {\n nodesDraggable,\n nodesConnectable,\n nodesFocusable,\n elementsSelectable,\n onError,\n } = useStore(selector, shallow);\n // const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);\n const nodeIds = useVisibleNodeIds(false); // FIXME\n const resizeObserver = useResizeObserver();\n\n return (\n <div className=\"ink-flow__nodes\" style={containerStyle}>\n {nodeIds.map((nodeId) => {\n return (\n <NodeWrapper<NodeType>\n key={nodeId}\n id={nodeId}\n nodeTypes={props.nodeTypes}\n // nodeExtent={props.nodeExtent}\n nodeOrigin={props.nodeOrigin}\n // onClick={props.onNodeClick}\n // onMouseEnter={props.onNodeMouseEnter}\n // onMouseMove={props.onNodeMouseMove}\n // onMouseLeave={props.onNodeMouseLeave}\n // onContextMenu={props.onNodeContextMenu}\n // onDoubleClick={props.onNodeDoubleClick}\n noDragClassName={props.noDragClassName}\n noPanClassName={props.noPanClassName}\n rfId={props.rfId}\n disableKeyboardA11y={props.disableKeyboardA11y}\n resizeObserver={resizeObserver}\n nodesDraggable={nodesDraggable}\n nodesConnectable={nodesConnectable}\n nodesFocusable={nodesFocusable}\n elementsSelectable={elementsSelectable}\n onError={onError}\n />\n );\n })}\n </div>\n );\n}\n\nNodeRendererComponent.displayName = 'NodeRenderer';\n\nexport const NodeRenderer = memo(\n NodeRendererComponent,\n) as typeof NodeRendererComponent;\n","import { useMemo } from 'react';\nimport { errorMessages } from '../../constants';\nimport { useStoreApi } from '../../hooks';\nimport { EdgeMarker, MarkerType } from '../../types/system';\n\ntype SymbolProps = Omit<EdgeMarker, 'type'>;\n\nconst ArrowSymbol = ({ color = 'none', strokeWidth = 1 }: SymbolProps) => {\n return (\n <polyline\n style={{\n stroke: color,\n strokeWidth,\n }}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n points=\"-5,-4 0,0 -5,4\"\n />\n );\n};\n\nconst ArrowClosedSymbol = ({\n color = 'none',\n strokeWidth = 1,\n}: SymbolProps) => {\n return (\n <polyline\n style={{\n stroke: color,\n fill: color,\n strokeWidth,\n }}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n points=\"-5,-4 0,0 -5,4 -5,-4\"\n />\n );\n};\n\nexport const MarkerSymbols = {\n [MarkerType.Arrow]: ArrowSymbol,\n [MarkerType.ArrowClosed]: ArrowClosedSymbol,\n};\n\nexport function useMarkerSymbol(type: MarkerType) {\n const store = useStoreApi();\n\n const symbol = useMemo(() => {\n const symbolExists = Object.prototype.hasOwnProperty.call(\n MarkerSymbols,\n type,\n );\n\n if (!symbolExists) {\n store.getState().onError?.('009', errorMessages['error009'](type));\n\n return null;\n }\n\n return MarkerSymbols[type];\n }, [type]);\n\n return symbol;\n}\n","import {\n EdgeMarkerType,\n EdgeMarker,\n EdgeBase,\n MarkerProps,\n} from '../types/system';\n\nexport function getMarkerId(\n marker: EdgeMarkerType | undefined,\n id?: string | null,\n): string {\n if (!marker) {\n return '';\n }\n\n if (typeof marker === 'string') {\n return marker;\n }\n\n const idPrefix = id ? `${id}__` : '';\n\n return `${idPrefix}${Object.keys(marker)\n .sort()\n .map((key) => `${key}=${marker[key as keyof EdgeMarker]}`)\n .join('&')}`;\n}\n\nexport function createMarkerIds(\n edges: EdgeBase[],\n {\n id,\n defaultColor,\n defaultMarkerStart,\n defaultMarkerEnd,\n }: {\n id?: string | null;\n defaultColor?: string;\n defaultMarkerStart?: EdgeMarkerType;\n defaultMarkerEnd?: EdgeMarkerType;\n },\n) {\n const ids = new Set<string>();\n\n return edges\n .reduce<MarkerProps[]>((markers, edge) => {\n [\n edge.markerStart || defaultMarkerStart,\n edge.markerEnd || defaultMarkerEnd,\n ].forEach((marker) => {\n if (marker && typeof marker === 'object') {\n const markerId = getMarkerId(marker, id);\n if (!ids.has(markerId)) {\n markers.push({\n id: markerId,\n color: marker.color || defaultColor,\n ...marker,\n });\n ids.add(markerId);\n }\n }\n });\n\n return markers;\n }, [])\n .sort((a, b) => a.id.localeCompare(b.id));\n}\n","import { memo, useMemo } from 'react';\n\nimport { useMarkerSymbol } from './MarkerSymbols';\nimport { useStore } from '../../hooks';\nimport { MarkerProps } from '../../types/system';\nimport { createMarkerIds } from '../../utils/marker';\n\ntype MarkerDefinitionsProps = {\n defaultColor: string;\n rfId?: string;\n};\n\nconst Marker = ({\n id,\n type,\n color,\n width = 12.5,\n height = 12.5,\n markerUnits = 'strokeWidth',\n strokeWidth,\n orient = 'auto-start-reverse',\n}: MarkerProps) => {\n const Symbol = useMarkerSymbol(type);\n\n if (!Symbol) {\n return null;\n }\n\n return (\n <marker\n className=\"ink-flow__arrowhead\"\n id={id}\n markerWidth={`${width}`}\n markerHeight={`${height}`}\n viewBox=\"-10 -10 20 20\"\n markerUnits={markerUnits}\n orient={orient}\n refX=\"0\"\n refY=\"0\"\n >\n <Symbol color={color} strokeWidth={strokeWidth} />\n </marker>\n );\n};\n\n// when you have multiple flows on a page and you hide the first one, the other ones have no markers anymore\n// when they do have markers with the same ids. To prevent this the user can pass a unique id to the Ink Flow wrapper\n// that we can then use for creating our unique marker ids\nconst MarkerDefinitions = ({ defaultColor, rfId }: MarkerDefinitionsProps) => {\n const edges = useStore((s) => s.edges);\n const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions); // FIXME\n\n const markers = useMemo(() => {\n const markers = createMarkerIds(edges, {\n id: rfId,\n defaultColor,\n defaultMarkerStart: defaultEdgeOptions?.markerStart,\n defaultMarkerEnd: defaultEdgeOptions?.markerEnd,\n });\n\n return markers;\n }, [edges, defaultEdgeOptions, rfId, defaultColor]);\n\n if (!markers.length) {\n return null;\n }\n\n return (\n <svg className=\"ink-flow__marker\">\n <defs>\n {markers.map((marker: MarkerProps) => (\n <Marker\n id={marker.id}\n key={marker.id}\n type={marker.type}\n color={marker.color}\n width={marker.width}\n height={marker.height}\n markerUnits={marker.markerUnits}\n strokeWidth={marker.strokeWidth}\n orient={marker.orient}\n />\n ))}\n </defs>\n </svg>\n );\n};\n\nMarkerDefinitions.displayName = 'MarkerDefinitions';\n\nexport default memo(MarkerDefinitions);\n","import { memo, useState, useCallback } from 'react';\nimport cc from 'classnames';\nimport { EdgeTextProps } from '../../types';\nimport { Rect } from '../../types/system';\n\nfunction EdgeTextComponent({\n x,\n y,\n label,\n labelStyle = {},\n labelShowBg = true,\n labelBgStyle = {},\n labelBgPadding = [2, 4],\n labelBgBorderRadius = 2,\n children,\n className,\n ...rest\n}: EdgeTextProps) {\n const [edgeTextBbox, setEdgeTextBbox] = useState<Rect>({\n x: 1,\n y: 0,\n width: 0,\n height: 0,\n });\n const edgeTextClasses = cc(['ink-flow__edge-textwrapper', className]);\n\n const onEdgeTextRefChange = useCallback((edgeRef: SVGTextElement) => {\n if (edgeRef === null) return;\n\n const textBbox = edgeRef.getBBox();\n\n setEdgeTextBbox({\n x: textBbox.x,\n y: textBbox.y,\n width: textBbox.width,\n height: textBbox.height,\n });\n }, []);\n\n if (typeof label === 'undefined' || !label) {\n return null;\n }\n\n return (\n <g\n transform={`translate(${x - edgeTextBbox.width / 2} ${\n y - edgeTextBbox.height / 2\n })`}\n className={edgeTextClasses}\n visibility={edgeTextBbox.width ? 'visible' : 'hidden'}\n {...rest}\n >\n {labelShowBg && (\n <rect\n width={edgeTextBbox.width + 2 * labelBgPadding[0]}\n x={-labelBgPadding[0]}\n y={-labelBgPadding[1]}\n height={edgeTextBbox.height + 2 * labelBgPadding[1]}\n className=\"ink-flow__edge-textbg\"\n style={labelBgStyle}\n rx={labelBgBorderRadius}\n ry={labelBgBorderRadius}\n />\n )}\n <text\n className=\"ink-flow__edge-text\"\n y={edgeTextBbox.height / 2}\n dy=\"0.3em\"\n ref={onEdgeTextRefChange}\n style={labelStyle}\n >\n {label}\n </text>\n {children}\n </g>\n );\n}\n\nEdgeTextComponent.displayName = 'EdgeText';\n\nexport const EdgeText = memo(EdgeTextComponent);\n","import cc from 'classnames';\n\nimport { EdgeText } from './EdgeText';\nimport { BaseEdgeProps } from '../../types';\nimport { isNumeric } from '../../utils/general';\n\nexport function BaseEdge({\n id,\n path,\n labelX,\n labelY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n className,\n interactionWidth = 20,\n}: BaseEdgeProps) {\n return (\n <>\n <path\n id={id}\n style={style}\n d={path}\n fill=\"none\"\n className={cc(['ink-flow__edge-path', className])}\n markerEnd={markerEnd}\n markerStart={markerStart}\n />\n {interactionWidth && (\n <path\n d={path}\n fill=\"none\"\n strokeOpacity={0}\n strokeWidth={interactionWidth}\n className=\"ink-flow__edge-interaction\"\n />\n )}\n {label && isNumeric(labelX) && isNumeric(labelY) ? (\n <EdgeText\n x={labelX}\n y={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n />\n ) : null}\n </>\n );\n}\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { SimpleBezierEdgeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { getBezierEdgeCenter } from '../../utils/edges';\n\nexport interface GetSimpleBezierPathParams {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n}\n\ninterface GetControlParams {\n pos: Position;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nfunction getControl({\n pos,\n x1,\n y1,\n x2,\n y2,\n}: GetControlParams): [number, number] {\n if (pos === Position.Left || pos === Position.Right) {\n return [0.5 * (x1 + x2), y1];\n }\n\n return [x1, 0.5 * (y1 + y2)];\n}\n\nexport function getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n}: GetSimpleBezierPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\n\nfunction createSimpleBezierEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n interactionWidth,\n }: SimpleBezierEdgeProps) => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst SimpleBezierEdge = createSimpleBezierEdge({ isInternal: false });\nconst SimpleBezierEdgeInternal = createSimpleBezierEdge({ isInternal: true });\n\nSimpleBezierEdge.displayName = 'SimpleBezierEdge';\nSimpleBezierEdgeInternal.displayName = 'SimpleBezierEdgeInternal';\n\nexport { SimpleBezierEdge, SimpleBezierEdgeInternal };\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { SmoothStepEdgeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { getSmoothStepPath } from '../../utils/edges';\n\nfunction createSmoothStepEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n markerEnd,\n markerStart,\n pathOptions,\n interactionWidth,\n }: SmoothStepEdgeProps) => {\n const [path, labelX, labelY] = getSmoothStepPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n borderRadius: pathOptions?.borderRadius,\n offset: pathOptions?.offset,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst SmoothStepEdge = createSmoothStepEdge({ isInternal: false });\nconst SmoothStepEdgeInternal = createSmoothStepEdge({ isInternal: true });\n\nSmoothStepEdge.displayName = 'SmoothStepEdge';\nSmoothStepEdgeInternal.displayName = 'SmoothStepEdgeInternal';\n\nexport { SmoothStepEdge, SmoothStepEdgeInternal };\n","import { memo, useMemo } from 'react';\n\nimport { SmoothStepEdge } from './SmoothStepEdge';\nimport type { StepEdgeProps } from '../../types';\n\nfunction createStepEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(({ id, ...props }: StepEdgeProps) => {\n const _id = params.isInternal ? undefined : id;\n\n return (\n <SmoothStepEdge\n {...props}\n id={_id}\n pathOptions={useMemo(\n () => ({ borderRadius: 0, offset: props.pathOptions?.offset }),\n [props.pathOptions?.offset]\n )}\n />\n );\n });\n}\n\nconst StepEdge = createStepEdge({ isInternal: false });\nconst StepEdgeInternal = createStepEdge({ isInternal: true });\n\nStepEdge.displayName = 'StepEdge';\nStepEdgeInternal.displayName = 'StepEdgeInternal';\n\nexport { StepEdge, StepEdgeInternal };\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { StraightEdgeProps } from '../../types';\nimport { getStraightPath } from '../../utils/edges';\n\nfunction createStraightEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n interactionWidth,\n }: StraightEdgeProps) => {\n const [path, labelX, labelY] = getStraightPath({\n sourceX,\n sourceY,\n targetX,\n targetY,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst StraightEdge = createStraightEdge({ isInternal: false });\nconst StraightEdgeInternal = createStraightEdge({ isInternal: true });\n\nStraightEdge.displayName = 'StraightEdge';\nStraightEdgeInternal.displayName = 'StraightEdgeInternal';\n\nexport { StraightEdge, StraightEdgeInternal };\n","import { getEdgeCenter } from './general';\n\nexport type GetStraightPathParams = {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n};\n\n/**\n * Get a straight path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n });\n */\nexport function getStraightPath({\n sourceX,\n sourceY,\n targetX,\n targetY,\n}: GetStraightPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number] {\n const [labelX, labelY, offsetX, offsetY] = getEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n });\n\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, labelX, labelY, offsetX, offsetY];\n}\n","import { memo } from 'react';\r\n\r\nimport { BaseEdge } from './BaseEdge';\r\nimport { Position } from '../../types/system';\r\nimport { BezierEdgeProps } from '../../types';\r\nimport { getBezierPath } from '../../utils/edges';\r\n\r\nfunction createBezierEdge(params: { isInternal: boolean }) {\r\n // eslint-disable-next-line react/display-name\r\n return memo(\r\n ({\r\n id,\r\n sourceX,\r\n sourceY,\r\n targetX,\r\n targetY,\r\n sourcePosition = Position.Bottom,\r\n targetPosition = Position.Top,\r\n label,\r\n labelStyle,\r\n labelShowBg,\r\n labelBgStyle,\r\n labelBgPadding,\r\n labelBgBorderRadius,\r\n style,\r\n markerEnd,\r\n markerStart,\r\n pathOptions,\r\n interactionWidth,\r\n }: BezierEdgeProps) => {\r\n const [path, labelX, labelY] = getBezierPath({\r\n sourceX,\r\n sourceY,\r\n sourcePosition,\r\n targetX,\r\n targetY,\r\n targetPosition,\r\n curvature: pathOptions?.curvature,\r\n });\r\n\r\n const _id = params.isInternal ? undefined : id;\r\n\r\n return (\r\n <BaseEdge\r\n id={_id}\r\n path={path}\r\n labelX={labelX}\r\n labelY={labelY}\r\n label={label}\r\n labelStyle={labelStyle}\r\n labelShowBg={labelShowBg}\r\n labelBgStyle={labelBgStyle}\r\n labelBgPadding={labelBgPadding}\r\n labelBgBorderRadius={labelBgBorderRadius}\r\n style={style}\r\n markerEnd={markerEnd}\r\n markerStart={markerStart}\r\n interactionWidth={interactionWidth}\r\n />\r\n );\r\n },\r\n );\r\n}\r\n\r\nconst BezierEdge = createBezierEdge({ isInternal: false });\r\nconst BezierEdgeInternal = createBezierEdge({ isInternal: true });\r\n\r\nBezierEdge.displayName = 'BezierEdge';\r\nBezierEdgeInternal.displayName = 'BezierEdgeInternal';\r\n\r\nexport { BezierEdge, BezierEdgeInternal };\r\n","import type { EdgeTypes } from '../../types';\nimport {\n BezierEdgeInternal,\n StraightEdgeInternal,\n StepEdgeInternal,\n SmoothStepEdgeInternal,\n SimpleBezierEdgeInternal,\n} from '../Edges';\n\nexport const builtinEdgeTypes: EdgeTypes = {\n default: BezierEdgeInternal,\n straight: StraightEdgeInternal,\n step: StepEdgeInternal,\n smoothstep: SmoothStepEdgeInternal,\n simplebezier: SimpleBezierEdgeInternal,\n};\n\nexport const nullPosition = {\n sourceX: null,\n sourceY: null,\n targetX: null,\n targetY: null,\n sourcePosition: null,\n targetPosition: null,\n};\n","import type { MouseEvent as ReactMouseEvent, SVGAttributes } from 'react';\nimport cc from 'classnames';\nimport { Position } from '../../types/system';\n\nconst shiftX = (x: number, shift: number, position: Position): number => {\n if (position === Position.Left) return x - shift;\n if (position === Position.Right) return x + shift;\n return x;\n};\n\nconst shiftY = (y: number, shift: number, position: Position): number => {\n if (position === Position.Top) return y - shift;\n if (position === Position.Bottom) return y + shift;\n return y;\n};\n\nexport interface EdgeAnchorProps extends SVGAttributes<SVGGElement> {\n position: Position;\n centerX: number;\n centerY: number;\n radius?: number;\n onMouseDown: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n onMouseEnter: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n onMouseOut: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n type: string;\n}\n\nconst EdgeUpdaterClassName = 'ink-flow__edgeupdater';\n\nexport function EdgeAnchor({\n position,\n centerX,\n centerY,\n radius = 10,\n onMouseDown,\n onMouseEnter,\n onMouseOut,\n type,\n}: EdgeAnchorProps) {\n return (\n <circle\n onMouseDown={onMouseDown}\n onMouseEnter={onMouseEnter}\n onMouseOut={onMouseOut}\n className={cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`])}\n cx={shiftX(centerX, radius, position)}\n cy={shiftY(centerY, radius, position)}\n r={radius}\n stroke=\"transparent\"\n fill=\"transparent\"\n />\n );\n}\n","// Updatable edges have a anchors around their handles to update the edge.\nimport type { EdgeWrapperProps, Edge } from '../../types/edges';\nimport { useStoreApi } from '../../hooks/useStore';\nimport { EdgePosition, Connection } from '../../types/system';\nimport { XYHandle } from '../../utils/xyhandle';\nimport { EdgeAnchor } from '../Edges/EdgeAnchor';\n\ntype EdgeUpdateAnchorsProps<EdgeType extends Edge = Edge> = {\n edge: EdgeType;\n isUpdatable: boolean | 'source' | 'target';\n edgeUpdaterRadius: EdgeWrapperProps['edgeUpdaterRadius'];\n sourceHandleId: Edge['sourceHandle'];\n targetHandleId: Edge['targetHandle'];\n onEdgeUpdate: EdgeWrapperProps<EdgeType>['onEdgeUpdate'];\n onEdgeUpdateStart: EdgeWrapperProps<EdgeType>['onEdgeUpdateStart'];\n onEdgeUpdateEnd: EdgeWrapperProps<EdgeType>['onEdgeUpdateEnd'];\n setUpdateHover: (hover: boolean) => void;\n setUpdating: (updating: boolean) => void;\n} & EdgePosition;\n\nexport function EdgeUpdateAnchors<EdgeType extends Edge = Edge>({\n isUpdatable,\n edgeUpdaterRadius,\n edge,\n targetHandleId,\n sourceHandleId,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n onEdgeUpdate,\n onEdgeUpdateStart,\n onEdgeUpdateEnd,\n setUpdating,\n setUpdateHover,\n}: EdgeUpdateAnchorsProps<EdgeType>) {\n const store = useStoreApi();\n\n const handleEdgeUpdater = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n isSourceHandle: boolean,\n ) => {\n // avoid triggering edge updater if mouse btn is not left\n if (event.button !== 0) {\n return;\n }\n\n const {\n autoPanOnConnect,\n domNode,\n isValidConnection,\n connectionMode,\n connectionRadius,\n lib,\n onConnectStart,\n onConnectEnd,\n cancelConnection,\n nodeLookup,\n rfId: flowId,\n panBy,\n updateConnection,\n } = store.getState();\n const nodeId = isSourceHandle ? edge.target : edge.source;\n const handleId = (isSourceHandle ? targetHandleId : sourceHandleId) || null;\n const handleType = isSourceHandle ? 'target' : 'source';\n\n const isTarget = isSourceHandle;\n\n setUpdating(true);\n onEdgeUpdateStart?.(event, edge, handleType);\n\n const _onEdgeUpdateEnd = (evt: MouseEvent | TouchEvent) => {\n setUpdating(false);\n onEdgeUpdateEnd?.(evt, edge, handleType);\n };\n\n const onConnectEdge = (connection: Connection) =>\n onEdgeUpdate?.(edge, connection);\n\n XYHandle.onPointerDown(event.nativeEvent, {\n autoPanOnConnect,\n connectionMode,\n connectionRadius,\n domNode,\n handleId,\n nodeId,\n nodeLookup,\n isTarget,\n edgeUpdaterType: handleType,\n lib,\n flowId,\n cancelConnection,\n panBy,\n isValidConnection,\n onConnect: onConnectEdge,\n onConnectStart,\n onConnectEnd,\n onEdgeUpdateEnd: _onEdgeUpdateEnd,\n updateConnection,\n getTransform: () => store.getState().transform,\n getConnectionStartHandle: () => store.getState().connectionStartHandle,\n });\n };\n\n const onEdgeUpdaterSourceMouseDown = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => handleEdgeUpdater(event, true);\n const onEdgeUpdaterTargetMouseDown = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => handleEdgeUpdater(event, false);\n const onEdgeUpdaterMouseEnter = () => setUpdateHover(true);\n const onEdgeUpdaterMouseOut = () => setUpdateHover(false);\n\n return (\n <>\n {(isUpdatable === 'source' || isUpdatable === true) && (\n <EdgeAnchor\n position={sourcePosition}\n centerX={sourceX}\n centerY={sourceY}\n radius={edgeUpdaterRadius}\n onMouseDown={onEdgeUpdaterSourceMouseDown}\n onMouseEnter={onEdgeUpdaterMouseEnter}\n onMouseOut={onEdgeUpdaterMouseOut}\n type=\"source\"\n />\n )}\n {(isUpdatable === 'target' || isUpdatable === true) && (\n <EdgeAnchor\n position={targetPosition}\n centerX={targetX}\n centerY={targetY}\n radius={edgeUpdaterRadius}\n onMouseDown={onEdgeUpdaterTargetMouseDown}\n onMouseEnter={onEdgeUpdaterMouseEnter}\n onMouseOut={onEdgeUpdaterMouseOut}\n type=\"target\"\n />\n )}\n </>\n );\n}\n","import { errorMessages } from '../constants';\nimport {\n InternalNodeBase,\n ConnectionMode,\n OnError,\n EdgePosition,\n Position,\n NodeHandle,\n HandleElement,\n} from '../types/system';\nimport { getNodeDimensions } from './general';\n\nexport type GetEdgePositionParams = {\n id: string;\n sourceNode: InternalNodeBase;\n sourceHandle: string | null;\n targetNode: InternalNodeBase;\n targetHandle: string | null;\n connectionMode: ConnectionMode;\n onError?: OnError;\n};\n\nfunction isNodeInitialized(node: InternalNodeBase): boolean {\n return (\n node &&\n !!(node.internals.handleBounds || node.handles?.length) &&\n !!(node.measured.width || node.width || node.initialWidth)\n );\n}\n\nexport function getEdgePosition(\n params: GetEdgePositionParams,\n): EdgePosition | null {\n const { sourceNode, targetNode } = params;\n\n if (!isNodeInitialized(sourceNode) || !isNodeInitialized(targetNode)) {\n return null;\n }\n\n const sourceHandleBounds =\n sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles);\n const targetHandleBounds =\n targetNode.internals.handleBounds || toHandleBounds(targetNode.handles);\n\n const sourceHandle = getHandle(\n sourceHandleBounds?.source ?? [],\n params.sourceHandle,\n );\n const targetHandle = getHandle(\n // when connection type is loose we can define all handles as sources and connect source -> source\n params.connectionMode === ConnectionMode.Strict\n ? targetHandleBounds?.target ?? []\n : (targetHandleBounds?.target ?? []).concat(\n targetHandleBounds?.source ?? [],\n ),\n params.targetHandle,\n );\n const sourcePosition = sourceHandle?.position || Position.Bottom;\n const targetPosition = targetHandle?.position || Position.Top;\n\n if (!sourceHandle || !targetHandle) {\n params.onError?.(\n '008',\n errorMessages['error008'](!sourceHandle ? 'source' : 'target', {\n id: params.id,\n sourceHandle: params.sourceHandle,\n targetHandle: params.targetHandle,\n }),\n );\n\n return null;\n }\n\n const [sourceX, sourceY] = getHandlePosition(\n sourcePosition,\n sourceNode,\n sourceHandle,\n );\n const [targetX, targetY] = getHandlePosition(\n targetPosition,\n targetNode,\n targetHandle,\n );\n\n return {\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n };\n}\n\nfunction toHandleBounds(handles?: NodeHandle[]) {\n if (!handles) {\n return null;\n }\n\n const source = [];\n const target = [];\n\n for (const handle of handles) {\n handle.width = handle.width ?? 1;\n handle.height = handle.height ?? 1;\n\n if (handle.type === 'source') {\n source.push(handle as HandleElement);\n } else if (handle.type === 'target') {\n target.push(handle as HandleElement);\n }\n }\n\n return {\n source,\n target,\n };\n}\n\nfunction getHandlePosition(\n position: Position,\n node: InternalNodeBase,\n handle: HandleElement | null = null,\n): number[] {\n const x = (handle?.x ?? 0) + node.internals.positionAbsolute.x;\n const y = (handle?.y ?? 0) + node.internals.positionAbsolute.y;\n const { width, height } = handle ?? getNodeDimensions(node);\n\n switch (position) {\n case Position.Top:\n return [x + width / 2, y];\n case Position.Right:\n return [x + width, y + height / 2];\n case Position.Bottom:\n return [x + width / 2, y + height];\n case Position.Left:\n return [x, y + height / 2];\n }\n}\n\nfunction getHandle(\n bounds: HandleElement[],\n handleId?: string | null,\n): HandleElement | null {\n if (!bounds) {\n return null;\n }\n\n // if no handleId is given, we use the first handle, otherwise we check for the id\n return (\n (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null\n );\n}\n","import {\n useState,\n useMemo,\n useRef,\n type KeyboardEvent,\n useCallback,\n} from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStoreApi, useStore } from '../../hooks/useStore';\nimport { builtinEdgeTypes, nullPosition } from './utils';\nimport { EdgeUpdateAnchors } from './EdgeUpdateAnchors';\nimport type { Edge, EdgeWrapperProps } from '../../types';\nimport { errorMessages, elementSelectionKeys } from '../../constants';\nimport { getMarkerId } from '../../utils/marker';\nimport { getEdgePosition } from '../../utils/positions';\nimport { getElevatedEdgeZIndex } from '../../utils/edges';\nimport { ARIA_EDGE_DESC_KEY } from '../A11yDescriptions';\n\nexport function EdgeWrapper<EdgeType extends Edge = Edge>({\n id,\n edgesFocusable,\n edgesUpdatable,\n elementsSelectable,\n onClick,\n onDoubleClick,\n onContextMenu,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n edgeUpdaterRadius,\n onEdgeUpdate,\n onEdgeUpdateStart,\n onEdgeUpdateEnd,\n rfId,\n edgeTypes,\n noPanClassName,\n onError,\n disableKeyboardA11y,\n}: EdgeWrapperProps<EdgeType>): JSX.Element | null {\n let edge = useStore((s) => s.edgeLookup.get(id)!) as EdgeType;\n const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);\n edge = defaultEdgeOptions ? { ...defaultEdgeOptions, ...edge } : edge;\n\n let edgeType = edge.type || 'default';\n let EdgeComponent = edgeTypes?.[edgeType] || builtinEdgeTypes[edgeType];\n\n if (EdgeComponent === undefined) {\n onError?.('011', errorMessages['error011'](edgeType));\n edgeType = 'default';\n EdgeComponent = builtinEdgeTypes.default;\n }\n\n const isFocusable = !!(\n edge.focusable ||\n (edgesFocusable && typeof edge.focusable === 'undefined')\n );\n const isUpdatable =\n typeof onEdgeUpdate !== 'undefined' &&\n (edge.updatable ||\n (edgesUpdatable && typeof edge.updatable === 'undefined'));\n const isSelectable = !!(\n edge.selectable ||\n (elementsSelectable && typeof edge.selectable === 'undefined')\n );\n\n const edgeRef = useRef<SVGGElement>(null);\n const [updateHover, setUpdateHover] = useState<boolean>(false);\n const [updating, setUpdating] = useState<boolean>(false);\n const store = useStoreApi();\n\n const {\n zIndex,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n } = useStore(\n useCallback(\n (store) => {\n const sourceNode = store.nodeLookup.get(edge.source);\n const targetNode = store.nodeLookup.get(edge.target);\n\n if (!sourceNode || !targetNode) {\n return {\n zIndex: edge.zIndex,\n ...nullPosition,\n };\n }\n\n const edgePosition = getEdgePosition({\n id,\n sourceNode,\n targetNode,\n sourceHandle: edge.sourceHandle || null,\n targetHandle: edge.targetHandle || null,\n connectionMode: store.connectionMode,\n onError,\n });\n\n const zIndex = getElevatedEdgeZIndex({\n selected: edge.selected,\n zIndex: edge.zIndex,\n sourceNode,\n targetNode,\n elevateOnSelect: store.elevateEdgesOnSelect,\n });\n\n return {\n zIndex,\n ...(edgePosition || nullPosition),\n };\n },\n [\n edge.source,\n edge.target,\n edge.sourceHandle,\n edge.targetHandle,\n edge.selected,\n edge.zIndex,\n ],\n ),\n shallow,\n );\n\n const markerStartUrl = useMemo(\n () =>\n edge.markerStart\n ? `url('#${getMarkerId(edge.markerStart, rfId)}')`\n : undefined,\n [edge.markerStart, rfId],\n );\n\n const markerEndUrl = useMemo(\n () =>\n edge.markerEnd\n ? `url('#${getMarkerId(edge.markerEnd, rfId)}')`\n : undefined,\n [edge.markerEnd, rfId],\n );\n\n if (\n edge.hidden ||\n sourceX === null ||\n sourceY === null ||\n targetX === null ||\n targetY === null\n ) {\n return null;\n }\n\n const onEdgeClick = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => {\n const { addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } =\n store.getState();\n\n if (isSelectable) {\n store.setState({ nodesSelectionActive: false });\n\n if (edge.selected && multiSelectionActive) {\n unselectNodesAndEdges({ nodes: [], edges: [edge] });\n edgeRef.current?.blur();\n } else {\n addSelectedEdges([id]);\n }\n }\n\n if (onClick) {\n onClick(event, edge);\n }\n };\n\n const onEdgeDoubleClick = onDoubleClick\n ? (event: React.MouseEvent) => {\n onDoubleClick(event, { ...edge });\n }\n : undefined;\n const onEdgeContextMenu = onContextMenu\n ? (event: React.MouseEvent) => {\n onContextMenu(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseEnter = onMouseEnter\n ? (event: React.MouseEvent) => {\n onMouseEnter(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseMove = onMouseMove\n ? (event: React.MouseEvent) => {\n onMouseMove(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseLeave = onMouseLeave\n ? (event: React.MouseEvent) => {\n onMouseLeave(event, { ...edge });\n }\n : undefined;\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n !disableKeyboardA11y &&\n elementSelectionKeys.includes(event.key) &&\n isSelectable\n ) {\n const { unselectNodesAndEdges, addSelectedEdges } = store.getState();\n const unselect = event.key === 'Escape';\n\n if (unselect) {\n edgeRef.current?.blur();\n unselectNodesAndEdges({ edges: [edge] });\n } else {\n addSelectedEdges([id]);\n }\n }\n };\n\n return (\n <svg style={{ zIndex }}>\n <g\n className={cc([\n 'ink-flow__edge',\n `ink-flow__edge-${edgeType}`,\n edge.className,\n noPanClassName,\n {\n selected: edge.selected,\n animated: edge.animated,\n inactive: !isSelectable && !onClick,\n updating: updateHover,\n selectable: isSelectable,\n },\n ])}\n onClick={onEdgeClick}\n onDoubleClick={onEdgeDoubleClick}\n onContextMenu={onEdgeContextMenu}\n onMouseEnter={onEdgeMouseEnter}\n onMouseMove={onEdgeMouseMove}\n onMouseLeave={onEdgeMouseLeave}\n onKeyDown={isFocusable ? onKeyDown : undefined}\n tabIndex={isFocusable ? 0 : undefined}\n role={isFocusable ? 'button' : 'img'}\n data-id={id}\n data-testid={`rf__edge-${id}`}\n aria-label={\n edge.ariaLabel === null\n ? undefined\n : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`\n }\n aria-describedby={\n isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined\n }\n ref={edgeRef}\n >\n {!updating && (\n <EdgeComponent\n id={id}\n source={edge.source}\n target={edge.target}\n type={edge.type}\n selected={edge.selected}\n animated={edge.animated}\n label={edge.label}\n labelStyle={edge.labelStyle}\n labelShowBg={edge.labelShowBg}\n labelBgStyle={edge.labelBgStyle}\n labelBgPadding={edge.labelBgPadding}\n labelBgBorderRadius={edge.labelBgBorderRadius}\n sourceX={sourceX}\n sourceY={sourceY}\n targetX={targetX}\n targetY={targetY}\n sourcePosition={sourcePosition}\n targetPosition={targetPosition}\n data={edge.data}\n style={edge.style}\n sourceHandleId={edge.sourceHandle}\n targetHandleId={edge.targetHandle}\n markerStart={markerStartUrl}\n markerEnd={markerEndUrl}\n pathOptions={'pathOptions' in edge ? edge.pathOptions : undefined}\n interactionWidth={edge.interactionWidth}\n />\n )}\n {isUpdatable && (\n <EdgeUpdateAnchors<EdgeType>\n edge={edge}\n isUpdatable={isUpdatable}\n edgeUpdaterRadius={edgeUpdaterRadius}\n onEdgeUpdate={onEdgeUpdate}\n onEdgeUpdateStart={onEdgeUpdateStart}\n onEdgeUpdateEnd={onEdgeUpdateEnd}\n sourceX={sourceX}\n sourceY={sourceY}\n targetX={targetX}\n targetY={targetY}\n sourcePosition={sourcePosition}\n targetPosition={targetPosition}\n setUpdateHover={setUpdateHover}\n setUpdating={setUpdating}\n sourceHandleId={edge.sourceHandle}\n targetHandleId={edge.targetHandle}\n />\n )}\n </g>\n </svg>\n );\n}\n","import { memo, ReactNode } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport MarkerDefinitions from './MarkerDefinitions';\nimport { GraphViewProps } from '../GraphView';\nimport type { Edge, InkFlowState, Node } from '../../types';\nimport { useStore } from '../../hooks';\nimport { useVisibleEdgeIds } from '../../hooks/useVisibleEdgeIds';\nimport { EdgeWrapper } from '../../components/EdgeWrapper';\n\ntype EdgeRendererProps<EdgeType extends Edge = Edge> = Pick<\n GraphViewProps<Node, EdgeType>,\n // | 'onEdgeClick'\n // | 'onEdgeDoubleClick'\n | 'rfId'\n // | 'onlyRenderVisibleElements'\n | 'onEdgeUpdate'\n // | 'onEdgeContextMenu'\n // | 'onEdgeMouseEnter'\n // | 'onEdgeMouseMove'\n // | 'onEdgeMouseLeave'\n // | 'onEdgeUpdateStart'\n // | 'onEdgeUpdateEnd'\n // | 'edgeUpdaterRadius'\n | 'noPanClassName'\n> & {\n children?: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => ({\n width: s.width,\n height: s.height,\n edgesFocusable: s.edgesFocusable,\n edgesUpdatable: s.edgesUpdatable,\n elementsSelectable: s.elementsSelectable,\n connectionMode: s.connectionMode,\n onError: s.onError,\n});\n\nfunction EdgeRendererComponent<EdgeType extends Edge = Edge>({\n // defaultMarkerColor,\n // onlyRenderVisibleElements,\n rfId,\n noPanClassName,\n onEdgeUpdate,\n}: // edgeTypes,\n\n// onEdgeContextMenu,\n// onEdgeMouseEnter,\n// onEdgeMouseMove,\n// onEdgeMouseLeave,\n// onEdgeClick,\n// edgeUpdaterRadius,\n// onEdgeDoubleClick,\n// onEdgeUpdateStart,\n// onEdgeUpdateEnd,\n// disableKeyboardA11y,\nEdgeRendererProps<EdgeType>) {\n const { edgesFocusable, edgesUpdatable, elementsSelectable, onError } =\n useStore(selector, shallow);\n const edgeIds = useVisibleEdgeIds(false); // TODO onlyRenderVisibleElements\n\n return (\n <div className=\"ink-flow__edges\">\n <MarkerDefinitions defaultColor={''} rfId={rfId} />\n\n {edgeIds.map((id) => {\n return (\n <EdgeWrapper<EdgeType>\n key={id}\n id={id}\n edgesFocusable={edgesFocusable}\n edgesUpdatable={edgesUpdatable}\n elementsSelectable={elementsSelectable}\n noPanClassName={noPanClassName}\n onEdgeUpdate={onEdgeUpdate}\n // onContextMenu={onEdgeContextMenu}\n // onMouseEnter={onEdgeMouseEnter}\n // onMouseMove={onEdgeMouseMove}\n // onMouseLeave={onEdgeMouseLeave}\n // onClick={onEdgeClick}\n // edgeUpdaterRadius={edgeUpdaterRadius}\n // onDoubleClick={onEdgeDoubleClick}\n // onEdgeUpdateStart={onEdgeUpdateStart}\n // onEdgeUpdateEnd={onEdgeUpdateEnd}\n rfId={rfId}\n onError={onError}\n // edgeTypes={edgeTypes}\n // disableKeyboardA11y={disableKeyboardA11y}\n />\n );\n })}\n </div>\n );\n}\n\nEdgeRendererComponent.displayName = 'EdgeRenderer';\n\nexport const EdgeRenderer = memo(\n EdgeRendererComponent,\n) as typeof EdgeRendererComponent;\n","import { useCallback } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore } from './useStore';\nimport { InkFlowState } from '../types';\nimport { isEdgeVisible } from '../utils/edges';\n\n/**\n * Hook for getting the visible edge ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible edge ids\n */\nexport function useVisibleEdgeIds(onlyRenderVisible: boolean): string[] {\n const edgeIds = useStore(\n useCallback(\n (s: InkFlowState) => {\n if (!onlyRenderVisible) {\n return s.edges.map((edge) => edge.id);\n }\n\n const visibleEdgeIds = [];\n\n if (s.width && s.height) {\n for (const edge of s.edges) {\n const sourceNode = s.nodeLookup.get(edge.source);\n const targetNode = s.nodeLookup.get(edge.target);\n\n if (\n sourceNode &&\n targetNode &&\n isEdgeVisible({\n sourceNode,\n targetNode,\n width: s.width,\n height: s.height,\n transform: s.transform,\n })\n ) {\n visibleEdgeIds.push(edge.id);\n }\n }\n }\n\n return visibleEdgeIds;\n },\n [onlyRenderVisible],\n ),\n shallow,\n );\n\n return edgeIds;\n}\n","import type { ReactNode } from 'react';\n\nimport type { InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\n\nconst selector = (s: InkFlowState) => {\n // console.log('yk InkFlowState', s);\n\n return `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;\n};\n\ntype ViewportProps = {\n children: ReactNode;\n};\n\nexport function Viewport({ children }: ViewportProps) {\n const transform = useStore(selector);\n\n return (\n <div\n className=\"ink-flow__viewport xyflow__viewport ink-flow__container\"\n style={{ transform }}\n >\n {children}\n </div>\n );\n}\n","import { memo } from 'react';\n\nimport { FlowRenderer } from '../FlowRenderer';\nimport { NodeRenderer } from '../NodeRenderer';\nimport { EdgeRenderer } from '../EdgeRenderer';\nimport { Viewport } from '../Viewport';\nimport type { Edge, Node, InkFlowProps } from '../../types';\n\nexport type GraphViewProps<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n> = Omit<\n InkFlowProps<NodeType, EdgeType>,\n | 'onSelectionChange'\n | 'nodes'\n | 'edges'\n | 'onMove'\n | 'onMoveStart'\n | 'onMoveEnd'\n | 'elevateEdgesOnSelect'\n> &\n Required<\n Pick<\n InkFlowProps<NodeType, EdgeType>,\n | 'minZoom'\n | 'maxZoom'\n | 'noPanClassName'\n | 'noDragClassName'\n | 'nodeOrigin'\n | 'disableKeyboardA11y'\n >\n > & {\n rfId: string;\n };\n\nfunction GraphViewComponent<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>({\n rfId,\n minZoom,\n maxZoom,\n noPanClassName,\n noDragClassName,\n nodeOrigin,\n viewport,\n disableKeyboardA11y,\n translateExtent,\n defaultViewport,\n nodeTypes,\n elementsSelectable,\n onPaneClick,\n onPaneContextMenu,\n}: GraphViewProps<NodeType, EdgeType>) {\n return (\n <FlowRenderer<NodeType>\n minZoom={minZoom}\n maxZoom={maxZoom}\n noPanClassName={noPanClassName}\n noDragClassName={noDragClassName}\n isControlledViewport={!!viewport}\n disableKeyboardA11y={disableKeyboardA11y}\n translateExtent={translateExtent}\n defaultViewport={defaultViewport}\n elementsSelectable={elementsSelectable}\n onPaneClick={onPaneClick}\n onPaneContextMenu={onPaneContextMenu}\n >\n <Viewport>\n <EdgeRenderer<EdgeType> rfId={rfId} noPanClassName={noPanClassName} />\n {/* <ConnectionLineWrapper /> */}\n <div className=\"ink-flow__edgelabel-renderer\" />\n <NodeRenderer<NodeType>\n rfId={rfId}\n nodeTypes={nodeTypes}\n nodeOrigin={nodeOrigin}\n noDragClassName={noDragClassName}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={false}\n />\n <div className=\"ink-flow__viewport-portal\" />\n </Viewport>\n </FlowRenderer>\n );\n}\n\nGraphViewComponent.displayName = 'GraphView';\n\nexport const GraphView = memo(GraphViewComponent) as typeof GraphViewComponent;\n","import { infiniteExtent } from '../constants';\n\nimport type { Edge, InternalNode, Node, InkFlowStore } from '../types';\nimport { ConnectionMode, Transform } from '../types/system';\nimport { adoptUserNodes, updateConnectionLookup } from '../utils/store';\n\nconst getInitialState = ({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n} = {}): InkFlowStore => {\n const nodeLookup = new Map<string, InternalNode>();\n const parentLookup = new Map();\n const connectionLookup = new Map();\n const edgeLookup = new Map();\n const storeEdges = defaultEdges ?? edges ?? [];\n const storeNodes = defaultNodes ?? nodes ?? [];\n\n updateConnectionLookup(connectionLookup, edgeLookup, storeEdges);\n adoptUserNodes(storeNodes, nodeLookup, parentLookup, {\n nodeOrigin: [0, 0],\n elevateNodesOnSelect: false,\n });\n\n let transform: Transform = [0, 0, 1];\n\n // if (fitView && width && height) {\n // // @todo users nodeOrigin should be used here\n // const bounds = getInternalNodesBounds(nodeLookup, {\n // nodeOrigin: [0, 0],\n // filter: (node) =>\n // !!(\n // (node.width || node.initialWidth) &&\n // (node.height || node.initialHeight)\n // ),\n // });\n // const { x, y, zoom } = getViewportForBounds(\n // bounds,\n // width,\n // height,\n // 0.5,\n // 2,\n // 0.1,\n // );\n // transform = [x, y, zoom];\n // }\n\n return {\n rfId: '1',\n width: 0,\n height: 0,\n transform,\n nodes: storeNodes,\n nodeLookup,\n parentLookup,\n edges: storeEdges,\n edgeLookup,\n connectionLookup,\n onNodesChange: null,\n onEdgesChange: null,\n hasDefaultNodes: defaultNodes !== undefined,\n hasDefaultEdges: defaultEdges !== undefined,\n panZoom: null,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: infiniteExtent,\n nodeExtent: infiniteExtent,\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n connectionPosition: { x: 0, y: 0 },\n connectionStatus: null,\n connectionMode: ConnectionMode.Strict,\n domNode: null,\n paneDragging: false,\n noPanClassName: 'nopan',\n nodeOrigin: [0, 0],\n nodeDragThreshold: 1,\n\n snapGrid: [15, 15],\n snapToGrid: false,\n\n nodesDraggable: true,\n nodesConnectable: true,\n nodesFocusable: true,\n edgesFocusable: true,\n edgesUpdatable: true,\n elementsSelectable: true,\n elevateNodesOnSelect: true,\n elevateEdgesOnSelect: false,\n fitViewOnInit: false,\n fitViewDone: false,\n fitViewOnInitOptions: undefined,\n selectNodesOnDrag: true,\n\n multiSelectionActive: false,\n\n connectionStartHandle: null,\n connectionEndHandle: null,\n connectionClickStartHandle: null,\n connectOnClick: true,\n\n ariaLiveMessage: '',\n autoPanOnConnect: true,\n autoPanOnNodeDrag: true,\n connectionRadius: 20,\n onError: undefined,\n isValidConnection: undefined,\n onSelectionChangeHandlers: [],\n\n lib: 'react',\n debug: false,\n };\n};\n\nexport default getInitialState;\n","import { createWithEqualityFn } from 'zustand/traditional';\n\nimport {\n applyEdgeChanges,\n applyNodeChanges,\n createSelectionChange,\n getSelectionChanges,\n} from '../utils/changes';\nimport getInitialState from './initialState';\nimport type {\n Node,\n Edge,\n InkFlowState,\n FitViewOptions,\n UnselectNodesAndEdgesParams,\n} from '../types';\nimport {\n adoptUserNodes,\n handleExpandParent,\n updateAbsolutePositions,\n updateConnectionLookup,\n updateNodeInternals as updateNodeInternalsSystem,\n} from '../utils/store';\nimport {\n EdgeSelectionChange,\n NodeChange,\n NodeSelectionChange,\n} from '../types/system';\nimport { ParentExpandChild } from '../types/utils/types';\nimport { clampPosition } from '../utils/general';\nimport { fitView as fitViewSystem } from '../utils/graph';\nimport { panBy as panBySystem } from '../utils/store';\n\nconst createStore = ({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n}) =>\n createWithEqualityFn<InkFlowState>(\n (set, get) => ({\n ...getInitialState({\n nodes,\n edges,\n width,\n height,\n fitView,\n defaultNodes,\n defaultEdges,\n }),\n setNodes: (nodes: Node[]) => {\n const { nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect } =\n get();\n // setNodes() is called exclusively in response to user actions:\n // - either when the `<InkFlow nodes>` prop is updated in the controlled InkFlow setup,\n // - or when the user calls something like `InkFlowInstance.setNodes()` in an uncontrolled InkFlow setup.\n //\n // When this happens, we take the note objects passed by the user and extend them with fields\n // relevant for internal Ink Flow operations.\n adoptUserNodes(nodes, nodeLookup, parentLookup, {\n nodeOrigin,\n elevateNodesOnSelect,\n checkEquality: true,\n });\n\n set({ nodes });\n },\n setEdges: (edges: Edge[]) => {\n const { connectionLookup, edgeLookup } = get();\n\n updateConnectionLookup(connectionLookup, edgeLookup, edges);\n\n set({ edges });\n },\n setDefaultNodesAndEdges: (nodes?: Node[], edges?: Edge[]) => {\n if (nodes) {\n const { setNodes } = get();\n setNodes(nodes);\n set({ hasDefaultNodes: true });\n }\n if (edges) {\n const { setEdges } = get();\n setEdges(edges);\n set({ hasDefaultEdges: true });\n }\n },\n // Every node gets registerd at a ResizeObserver. Whenever a node\n // changes its dimensions, this function is called to measure the\n // new dimensions and update the nodes.\n updateNodeInternals: (updates) => {\n const {\n triggerNodeChanges,\n fitView,\n nodeLookup,\n parentLookup,\n fitViewOnInit,\n fitViewDone,\n fitViewOnInitOptions,\n domNode,\n nodeOrigin,\n debug,\n } = get();\n\n const { changes, updatedInternals } = updateNodeInternalsSystem(\n updates,\n nodeLookup,\n parentLookup,\n domNode,\n nodeOrigin,\n );\n\n if (!updatedInternals) {\n return;\n }\n\n updateAbsolutePositions(nodeLookup, { nodeOrigin });\n\n // we call fitView once initially after all dimensions are set\n let nextFitViewDone = fitViewDone;\n if (!fitViewDone && fitViewOnInit) {\n nextFitViewDone = fitView({\n ...fitViewOnInitOptions,\n nodes: fitViewOnInitOptions?.nodes,\n });\n }\n\n // here we are cirmumventing the onNodesChange handler\n // in order to be able to display nodes even if the user\n // has not provided an onNodesChange handler.\n // Nodes are only rendered if they have a width and height\n // attribute which they get from this handler.\n set({ fitViewDone: nextFitViewDone });\n\n if (changes?.length > 0) {\n if (debug) {\n console.log('Ink Flow: trigger node changes', changes);\n }\n triggerNodeChanges?.(changes);\n }\n },\n updateNodePositions: (nodeDragItems, dragging = false) => {\n const parentExpandChildren: ParentExpandChild[] = [];\n const changes = [];\n\n for (const [id, dragItem] of nodeDragItems) {\n // @todo add expandParent to drag item so that we can get rid of the look up here\n const change: NodeChange = {\n id,\n type: 'position',\n position: dragItem.position,\n dragging,\n };\n\n if (dragItem?.expandParent && dragItem?.parentId && change.position) {\n parentExpandChildren.push({\n id,\n parentId: dragItem.parentId,\n rect: {\n ...dragItem.internals.positionAbsolute,\n width: dragItem.measured.width!,\n height: dragItem.measured.height!,\n },\n });\n\n change.position.x = Math.max(0, change.position.x);\n change.position.y = Math.max(0, change.position.y);\n }\n\n changes.push(change);\n }\n\n if (parentExpandChildren.length > 0) {\n const { nodeLookup, parentLookup } = get();\n const parentExpandChanges = handleExpandParent(\n parentExpandChildren,\n nodeLookup,\n parentLookup,\n );\n changes.push(...parentExpandChanges);\n }\n\n get().triggerNodeChanges(changes);\n },\n triggerNodeChanges: (changes) => {\n const { onNodesChange, setNodes, nodes, hasDefaultNodes, debug } =\n get();\n\n if (changes?.length) {\n if (hasDefaultNodes) {\n const updatedNodes = applyNodeChanges(changes, nodes);\n setNodes(updatedNodes);\n }\n\n if (debug) {\n console.log('Ink Flow: trigger node changes', changes);\n }\n\n onNodesChange?.(changes);\n }\n },\n triggerEdgeChanges: (changes) => {\n const { onEdgesChange, setEdges, edges, hasDefaultEdges, debug } =\n get();\n\n if (changes?.length) {\n if (hasDefaultEdges) {\n const updatedEdges = applyEdgeChanges(changes, edges);\n setEdges(updatedEdges);\n }\n\n if (debug) {\n console.log('Ink Flow: trigger edge changes', changes);\n }\n\n onEdgesChange?.(changes);\n }\n },\n addSelectedNodes: (selectedNodeIds) => {\n const {\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n\n if (multiSelectionActive) {\n const nodeChanges = selectedNodeIds.map((nodeId) =>\n createSelectionChange(nodeId, true),\n );\n triggerNodeChanges(nodeChanges as NodeSelectionChange[]);\n return;\n }\n\n triggerNodeChanges(\n getSelectionChanges(nodeLookup, new Set([...selectedNodeIds]), true),\n );\n triggerEdgeChanges(getSelectionChanges(edgeLookup));\n },\n addSelectedEdges: (selectedEdgeIds) => {\n const {\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n\n if (multiSelectionActive) {\n const changedEdges = selectedEdgeIds.map((edgeId) =>\n createSelectionChange(edgeId, true),\n );\n triggerEdgeChanges(changedEdges as EdgeSelectionChange[]);\n return;\n }\n\n triggerEdgeChanges(\n getSelectionChanges(edgeLookup, new Set([...selectedEdgeIds])),\n );\n triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true));\n },\n unselectNodesAndEdges: ({\n nodes,\n edges,\n }: UnselectNodesAndEdgesParams = {}) => {\n const {\n edges: storeEdges,\n nodes: storeNodes,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n const nodesToUnselect = nodes ? nodes : storeNodes;\n const edgesToUnselect = edges ? edges : storeEdges;\n\n const nodeChanges = nodesToUnselect.map((n) => {\n n.selected = false;\n return createSelectionChange(n.id, false);\n });\n const edgeChanges = edgesToUnselect.map((edge) =>\n createSelectionChange(edge.id, false),\n );\n\n triggerNodeChanges(nodeChanges as NodeSelectionChange[]);\n triggerEdgeChanges(edgeChanges as EdgeSelectionChange[]);\n },\n setMinZoom: (minZoom) => {\n const { panZoom, maxZoom } = get();\n panZoom?.setScaleExtent([minZoom, maxZoom]);\n\n set({ minZoom });\n },\n setMaxZoom: (maxZoom) => {\n const { panZoom, minZoom } = get();\n panZoom?.setScaleExtent([minZoom, maxZoom]);\n\n set({ maxZoom });\n },\n setTranslateExtent: (translateExtent) => {\n get().panZoom?.setTranslateExtent(translateExtent);\n\n set({ translateExtent });\n },\n resetSelectedElements: () => {\n const { edges, nodes, triggerNodeChanges, triggerEdgeChanges } = get();\n\n const nodeChanges = nodes.reduce<NodeSelectionChange[]>(\n (res, node) =>\n node.selected\n ? [\n ...res,\n createSelectionChange(node.id, false) as NodeSelectionChange,\n ]\n : res,\n [],\n );\n const edgeChanges = edges.reduce<EdgeSelectionChange[]>(\n (res, edge) =>\n edge.selected\n ? [\n ...res,\n createSelectionChange(edge.id, false) as EdgeSelectionChange,\n ]\n : res,\n [],\n );\n\n triggerNodeChanges(nodeChanges);\n triggerEdgeChanges(edgeChanges);\n },\n setNodeExtent: (nodeExtent) => {\n const { nodeLookup } = get();\n\n for (const [, node] of nodeLookup) {\n const positionAbsolute = clampPosition(node.position, nodeExtent);\n\n nodeLookup.set(node.id, {\n ...node,\n internals: {\n ...node.internals,\n positionAbsolute,\n },\n });\n }\n\n set({\n nodeExtent,\n });\n },\n panBy: (delta): boolean => {\n const { transform, width, height, panZoom, translateExtent } = get();\n return panBySystem({\n delta,\n panZoom,\n transform,\n translateExtent,\n width,\n height,\n });\n },\n fitView: (options?: FitViewOptions): boolean => {\n const {\n panZoom,\n width,\n height,\n minZoom,\n maxZoom,\n nodeOrigin,\n nodeLookup,\n } = get();\n\n if (!panZoom) {\n return false;\n }\n\n return fitViewSystem(\n {\n nodeLookup,\n width,\n height,\n panZoom,\n minZoom,\n maxZoom,\n nodeOrigin,\n },\n options,\n );\n },\n cancelConnection: () =>\n set({\n connectionStatus: null,\n connectionStartHandle: null,\n connectionEndHandle: null,\n }),\n updateConnection: (params) => {\n const { connectionPosition } = get();\n\n const currentConnection = {\n ...params,\n connectionPosition: params.connectionPosition ?? connectionPosition,\n };\n\n set(currentConnection);\n },\n\n reset: () => set({ ...getInitialState() }),\n }),\n Object.is,\n );\n\nexport { createStore };\n","import { useState, type ReactNode } from 'react';\n\nimport { Provider } from '../../contexts/StoreContext';\nimport { createStore } from '../../store';\nimport type { Node, Edge } from '../../types';\nimport { BatchProvider } from '../BatchProvider';\n\nexport type InkFlowProviderProps = {\n initialNodes?: Node[];\n initialEdges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n initialWidth?: number;\n initialHeight?: number;\n fitView?: boolean;\n children: ReactNode;\n};\n\nexport function InkFlowProvider({\n initialNodes: nodes,\n initialEdges: edges,\n defaultNodes,\n defaultEdges,\n initialWidth: width,\n initialHeight: height,\n fitView,\n children,\n}: InkFlowProviderProps) {\n const [store] = useState(() =>\n createStore({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n }),\n );\n\n return (\n <Provider value={store}>\n <BatchProvider>{children}</BatchProvider>\n </Provider>\n );\n}\n","import { useContext, type ReactNode } from 'react';\n\nimport StoreContext from '../../contexts/StoreContext';\nimport type { Node, Edge } from '../../types';\nimport { InkFlowProvider } from '../../components/InkFlowProvider';\n\nexport function Wrapper({\n children,\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n children: ReactNode;\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n}) {\n const isWrapped = useContext(StoreContext);\n\n if (isWrapped) {\n return <>{children}</>;\n }\n\n return (\n <InkFlowProvider\n initialNodes={nodes}\n initialEdges={edges}\n defaultNodes={defaultNodes}\n defaultEdges={defaultEdges}\n initialWidth={width}\n initialHeight={height}\n fitView={fitView}\n >\n {children}\n </InkFlowProvider>\n );\n}\n","import { NodeOrigin, Viewport } from '../../types/system';\n\nexport const defaultNodeOrigin: NodeOrigin = [0, 0];\nexport const defaultViewport: Viewport = { x: 0, y: 0, zoom: 1 };\n","/*\n * This component helps us to update the store with the vlues coming from the user.\n * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`)\n * and values that have a dedicated setter function in the store (like `setNodes`).\n */\nimport { useEffect, useRef } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport type {\n Node,\n Edge,\n InkFlowState,\n InkFlowProps,\n FitViewOptions,\n} from '../../types';\nimport { infiniteExtent } from '../../constants';\nimport { CoordinateExtent } from '../../types/system';\nimport { defaultNodeOrigin } from '../../container/InkFlow/init-values';\n\n// these fields exist in the global store and we need to keep them up to date\nconst InkFlowFieldsToTrack = [\n 'nodes',\n 'edges',\n 'defaultNodes',\n 'defaultEdges',\n // 'onConnect',\n // 'onConnectStart',\n // 'onConnectEnd',\n // 'onClickConnectStart',\n // 'onClickConnectEnd',\n 'nodesDraggable',\n // 'nodesConnectable',\n // 'nodesFocusable',\n // 'edgesFocusable',\n // 'edgesUpdatable',\n // 'elevateNodesOnSelect',\n // 'elevateEdgesOnSelect',\n 'minZoom',\n 'maxZoom',\n 'nodeExtent',\n 'onNodesChange',\n 'onEdgesChange',\n 'elementsSelectable',\n // 'connectionMode',\n // 'snapGrid',\n // 'snapToGrid',\n 'translateExtent',\n // 'connectOnClick',\n 'defaultEdgeOptions',\n 'fitView',\n 'fitViewOptions',\n // 'onNodesDelete',\n // 'onEdgesDelete',\n // 'onDelete',\n // 'onNodeDrag',\n // 'onNodeDragStart',\n // 'onNodeDragStop',\n // 'onSelectionDrag',\n // 'onSelectionDragStart',\n // 'onSelectionDragStop',\n // 'onMoveStart',\n // 'onMove',\n // 'onMoveEnd',\n // 'noPanClassName',\n // 'nodeOrigin',\n // 'autoPanOnConnect',\n // 'autoPanOnNodeDrag',\n // 'onError',\n // 'connectionRadius',\n // 'isValidConnection',\n // 'selectNodesOnDrag',\n // 'nodeDragThreshold',\n // 'onBeforeDelete',\n // 'debug',\n] as const;\n\ntype InkFlowFieldsToTrack = typeof InkFlowFieldsToTrack[number];\ntype StoreUpdaterProps<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n> = Pick<InkFlowProps<NodeType, EdgeType>, InkFlowFieldsToTrack> & {\n rfId: string;\n};\n\n// rfId doesn't exist in InkFlowProps, but it's one of the fields we want to update\nconst fieldsToTrack = [...InkFlowFieldsToTrack, 'rfId'] as const;\n\nconst selector = (s: InkFlowState) => ({\n setNodes: s.setNodes,\n setEdges: s.setEdges,\n setMinZoom: s.setMinZoom,\n setMaxZoom: s.setMaxZoom,\n setTranslateExtent: s.setTranslateExtent,\n setNodeExtent: s.setNodeExtent,\n reset: s.reset,\n setDefaultNodesAndEdges: s.setDefaultNodesAndEdges,\n});\n\nconst initPrevValues = {\n // these are values that are also passed directly to other components\n // than the StoreUpdater. We can reduce the number of setStore calls\n // by setting the same values here as prev fields.\n translateExtent: infiniteExtent,\n nodeOrigin: defaultNodeOrigin,\n minZoom: 0.5,\n maxZoom: 2,\n elementsSelectable: true,\n noPanClassName: 'nopan',\n rfId: '1',\n};\n\nexport function StoreUpdater<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>(props: StoreUpdaterProps<NodeType, EdgeType>) {\n const {\n setNodes,\n setEdges,\n setMinZoom,\n setMaxZoom,\n setTranslateExtent,\n setNodeExtent,\n reset,\n setDefaultNodesAndEdges,\n } = useStore(selector, shallow);\n const store = useStoreApi<NodeType, EdgeType>();\n\n useEffect(() => {\n setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges);\n\n return () => {\n // when we reset the store we also need to reset the previous fields\n previousFields.current = initPrevValues;\n reset();\n };\n }, []);\n\n const previousFields =\n useRef<Partial<StoreUpdaterProps<NodeType, EdgeType>>>(initPrevValues);\n\n useEffect(\n () => {\n for (const fieldName of fieldsToTrack) {\n const fieldValue = props[fieldName];\n const previousFieldValue = previousFields.current[fieldName];\n\n if (fieldValue === previousFieldValue) continue;\n if (typeof props[fieldName] === 'undefined') continue;\n // Custom handling with dedicated setters for some fields\n if (fieldName === 'nodes') setNodes(fieldValue as Node[]);\n else if (fieldName === 'edges') setEdges(fieldValue as Edge[]);\n else if (fieldName === 'minZoom') setMinZoom(fieldValue as number);\n else if (fieldName === 'maxZoom') setMaxZoom(fieldValue as number);\n else if (fieldName === 'translateExtent')\n setTranslateExtent(fieldValue as CoordinateExtent);\n else if (fieldName === 'nodeExtent')\n setNodeExtent(fieldValue as CoordinateExtent);\n // Renamed fields\n else if (fieldName === 'fitView')\n store.setState({ fitViewOnInit: fieldValue as boolean });\n else if (fieldName === 'fitViewOptions')\n store.setState({\n fitViewOnInitOptions: fieldValue as FitViewOptions,\n });\n // General case\n else store.setState({ [fieldName]: fieldValue });\n }\n\n previousFields.current = props;\n },\n // Only re-run the effect if one of the fields we track changes\n fieldsToTrack.map((fieldName) => props[fieldName]),\n );\n\n return null;\n}\n","import { ForwardedRef, type CSSProperties } from 'react';\nimport cls from 'classnames';\nimport type { Edge, Node, InkFlowProps } from '../../types';\nimport { GraphView } from '../GraphView';\nimport { Wrapper } from './Wrapper';\nimport { StoreUpdater } from '../../components/StoreUpdater';\nimport { fixedForwardRef } from '../../utils/general';\nimport { infiniteExtent } from '../../constants';\nimport {\n defaultViewport as initViewport,\n defaultNodeOrigin,\n} from './init-values';\n\nconst wrapperStyle: CSSProperties = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n zIndex: 0,\n};\n\nfunction InkFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(\n {\n nodes,\n edges,\n translateExtent = infiniteExtent,\n defaultViewport = initViewport,\n minZoom = 0.5,\n maxZoom = 2,\n nodeOrigin,\n noDragClassName,\n noPanClassName,\n disableKeyboardA11y,\n nodeTypes,\n onNodesChange,\n onEdgesChange,\n fitView,\n fitViewOptions,\n nodeExtent,\n nodesDraggable,\n children,\n id,\n width,\n height,\n onPaneClick,\n onPaneContextMenu,\n ...rest\n }: InkFlowProps<NodeType, EdgeType>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const rfId = id || '1';\n console.log('yk 22', onPaneClick, onPaneContextMenu);\n\n return (\n <div\n {...rest}\n ref={ref}\n style={{ ...wrapperStyle }}\n className={cls(['ink-flow'])}\n data-testid=\"rf__wrapper\"\n id={id}\n >\n <Wrapper\n nodes={nodes}\n edges={edges}\n width={width}\n height={height}\n fitView={fitView}\n >\n <GraphView<NodeType, EdgeType>\n rfId={rfId}\n nodeTypes={nodeTypes}\n minZoom={minZoom}\n maxZoom={maxZoom}\n nodeOrigin={nodeOrigin}\n noDragClassName={noDragClassName}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={disableKeyboardA11y}\n translateExtent={translateExtent}\n defaultViewport={defaultViewport}\n onPaneClick={onPaneClick}\n onPaneContextMenu={onPaneContextMenu}\n />\n <StoreUpdater<NodeType, EdgeType>\n nodes={nodes}\n edges={edges}\n rfId={rfId}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n fitView={fitView}\n fitViewOptions={fitViewOptions}\n nodeExtent={nodeExtent}\n nodesDraggable={nodesDraggable}\n />\n {children}\n </Wrapper>\n </div>\n );\n}\n\nexport default fixedForwardRef(InkFlow);\n","export function PlusIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10 4.375C10.3452 4.375 10.625 4.65482 10.625 5V9.375H15C15.3452 9.375 15.625 9.65482 15.625 10C15.625 10.3452 15.3452 10.625 15 10.625H10.625V15C10.625 15.3452 10.3452 15.625 10 15.625C9.65482 15.625 9.375 15.3452 9.375 15V10.625H5C4.65482 10.625 4.375 10.3452 4.375 10C4.375 9.65482 4.65482 9.375 5 9.375H9.375V5C9.375 4.65482 9.65482 4.375 10 4.375Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function MinusIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.375 10C4.375 9.65482 4.65482 9.375 5 9.375H15C15.3452 9.375 15.625 9.65482 15.625 10C15.625 10.3452 15.3452 10.625 15 10.625H5C4.65482 10.625 4.375 10.3452 4.375 10Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function FitViewIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10 1.875C10.3452 1.875 10.625 2.15482 10.625 2.5V3.57152C13.6929 3.86613 16.1339 6.30708 16.4285 9.375H17.5C17.8452 9.375 18.125 9.65482 18.125 10C18.125 10.3452 17.8452 10.625 17.5 10.625H16.4285C16.1339 13.6929 13.6929 16.1339 10.625 16.4285V17.5C10.625 17.8452 10.3452 18.125 10 18.125C9.65482 18.125 9.375 17.8452 9.375 17.5V16.4285C6.30708 16.1339 3.86613 13.6929 3.57152 10.625H2.5C2.15482 10.625 1.875 10.3452 1.875 10C1.875 9.65482 2.15482 9.375 2.5 9.375H3.57152C3.86613 6.30708 6.30708 3.86613 9.375 3.57152V2.5C9.375 2.15482 9.65482 1.875 10 1.875ZM4.82878 10.625H5.83333C6.17851 10.625 6.45833 10.3452 6.45833 10C6.45833 9.65482 6.17851 9.375 5.83333 9.375H4.82878C5.11304 6.99811 6.99811 5.11304 9.375 4.82878V5.83333C9.375 6.17851 9.65482 6.45833 10 6.45833C10.3452 6.45833 10.625 6.17851 10.625 5.83333V4.82878C13.0019 5.11304 14.887 6.99811 15.1712 9.375H14.1667C13.8215 9.375 13.5417 9.65482 13.5417 10C13.5417 10.3452 13.8215 10.625 14.1667 10.625H15.1712C14.887 13.0019 13.0019 14.887 10.625 15.1712V14.1667C10.625 13.8215 10.3452 13.5417 10 13.5417C9.65482 13.5417 9.375 13.8215 9.375 14.1667V15.1712C6.99811 14.887 5.11304 13.0019 4.82878 10.625Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function LockIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 32\">\n <path d=\"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z\" />\n </svg>\n );\n}\n","export function UnlockIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 32\">\n <path d=\"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z\" />\n </svg>\n );\n}\n","import cc from 'classnames';\n\nimport type { ControlButtonProps } from './types';\n\nexport function ControlButton({\n children,\n className,\n ...rest\n}: ControlButtonProps) {\n return (\n <button\n type=\"button\"\n className={cc(['ink-flow__controls-button', className])}\n {...rest}\n >\n {children}\n </button>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport cc from 'classnames';\n\nimport { useStore } from '../../hooks/useStore';\nimport type { InkFlowState } from '../../types';\nimport { PanelPosition } from '../../types/system';\n\nexport type PanelProps = HTMLAttributes<HTMLDivElement> & {\n /** Set position of the panel\n * @example 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'\n */\n position?: PanelPosition;\n children: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => (s.userSelectionActive ? 'none' : 'all');\n\nexport function Panel({\n position = 'top-left',\n children,\n className,\n style,\n ...rest\n}: PanelProps) {\n const pointerEvents = useStore(selector);\n const positionClasses = `${position}`.split('-');\n\n return (\n <div\n className={cc(['ink-flow__panel', className, ...positionClasses])}\n style={{ ...style, pointerEvents }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","import { memo } from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\n\nimport { PlusIcon } from './Icons/Plus';\nimport { MinusIcon } from './Icons/Minus';\nimport { FitViewIcon } from './Icons/FitView';\nimport { LockIcon } from './Icons/Lock';\nimport { UnlockIcon } from './Icons/Unlock';\nimport { ControlButton } from './ControlButton';\nimport type { ControlProps } from './types';\nimport { InkFlowState } from '../../types';\nimport { useInkFlow } from '../../hooks/useInkFlow';\nimport { Panel } from '../../components/Panel';\n\nconst selector = (s: InkFlowState) => ({\n isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,\n minZoomReached: s.transform[2] <= s.minZoom,\n maxZoomReached: s.transform[2] >= s.maxZoom,\n});\n\nfunction ControlsComponent({\n style,\n showZoom = true,\n showFitView = true,\n showInteractive = true,\n fitViewOptions,\n onZoomIn,\n onZoomOut,\n onFitView,\n onInteractiveChange,\n className,\n children,\n position = 'bottom-left',\n orientation = 'vertical',\n 'aria-label': ariaLabel = 'Ink Flow controls',\n}: ControlProps) {\n const store = useStoreApi();\n const { isInteractive, minZoomReached, maxZoomReached } = useStore(\n selector,\n shallow,\n );\n const { zoomIn, zoomOut, fitView } = useInkFlow();\n\n const onZoomInHandler = () => {\n zoomIn();\n onZoomIn?.();\n };\n\n const onZoomOutHandler = () => {\n zoomOut();\n onZoomOut?.();\n };\n\n const onFitViewHandler = () => {\n fitView(fitViewOptions);\n onFitView?.();\n };\n\n const onToggleInteractivity = () => {\n store.setState({\n nodesDraggable: !isInteractive,\n nodesConnectable: !isInteractive,\n elementsSelectable: !isInteractive,\n });\n\n onInteractiveChange?.(!isInteractive);\n };\n\n const orientationClass =\n orientation === 'horizontal' ? 'horizontal' : 'vertical';\n\n return (\n <Panel\n className={cc(['ink-flow__controls', orientationClass, className])}\n position={position}\n style={style}\n data-testid=\"rf__controls\"\n aria-label={ariaLabel}\n >\n {showFitView && (\n <ControlButton\n className=\"ink-flow__controls-fitview\"\n onClick={onFitViewHandler}\n title=\"fit view\"\n aria-label=\"fit view\"\n >\n <FitViewIcon />\n </ControlButton>\n )}\n\n {showZoom && (\n <div className=\"ink-flow__controls-zoom\">\n <ControlButton\n onClick={onZoomInHandler}\n className=\"ink-flow__controls-zoomin\"\n title=\"zoom in\"\n aria-label=\"zoom in\"\n disabled={maxZoomReached}\n >\n <PlusIcon />\n </ControlButton>\n <ControlButton\n onClick={onZoomOutHandler}\n className=\"ink-flow__controls-zoomout\"\n title=\"zoom out\"\n aria-label=\"zoom out\"\n disabled={minZoomReached}\n >\n <MinusIcon />\n </ControlButton>\n </div>\n )}\n\n {showInteractive && (\n <ControlButton\n className=\"ink-flow__controls-interactive\"\n onClick={onToggleInteractivity}\n title=\"toggle interactivity\"\n aria-label=\"toggle interactivity\"\n >\n {isInteractive ? <UnlockIcon /> : <LockIcon />}\n </ControlButton>\n )}\n {children}\n </Panel>\n );\n}\n\nControlsComponent.displayName = 'Controls';\n\nexport const Controls = memo(ControlsComponent);\n","console.log('types');\nexport * from './nodes';\nexport * from './edges';\nexport * from './props';\nexport * from './general';\nexport * from './store';\nexport * from './system/utils';\n// export * from './instance';\n","var n,r,t,e,o,i,u,a,f,c,s,d,h,v,l,p,g,y,b,m,_,w,E,j,k,x,N,O,I,C,A,M,L,P,S,T,R,z,F,D,B,U,G,V,q,$,Y,W,J,K,Q,H,X,Z,nn,rn,tn,en,on,un,an,fn,cn,sn,dn,hn,vn,ln,pn,gn,yn,bn,mn,_n,wn,En,jn,kn,xn,Nn,On,In,Cn,An,Mn,Ln,Pn,Sn,Tn,Rn,zn,Fn,Dn,Bn,Un,Gn,Vn,qn,$n,Yn,Wn,Jn,Kn,Qn,Hn,Xn,Zn,nr,rr=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function tr(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,\"default\")?n.default:n}function er(){if(e)return t;return e=1,t=function(n,r){return n===r||n!=n&&r!=r}}function or(){if(i)return o;i=1;var n=er();return o=function(r,t){for(var e=r.length;e--;)if(n(r[e][0],t))return e;return-1}}function ir(){if(p)return l;p=1;var t=r?n:(r=1,n=function(){this.__data__=[],this.size=0}),e=function(){if(a)return u;a=1;var n=or(),r=Array.prototype.splice;return u=function(t){var e=this.__data__,o=n(e,t);return!(o<0||(o==e.length-1?e.pop():r.call(e,o,1),--this.size,0))}}(),o=function(){if(c)return f;c=1;var n=or();return f=function(r){var t=this.__data__,e=n(t,r);return e<0?void 0:t[e][1]}}(),i=function(){if(d)return s;d=1;var n=or();return s=function(r){return n(this.__data__,r)>-1}}(),g=function(){if(v)return h;v=1;var n=or();return h=function(r,t){var e=this.__data__,o=n(e,r);return o<0?(++this.size,e.push([r,t])):e[o][1]=t,this}}();function y(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return y.prototype.clear=t,y.prototype.delete=e,y.prototype.get=o,y.prototype.has=i,y.prototype.set=g,l=y}function ur(){if(x)return k;x=1;var n=\"object\"==typeof rr&&rr&&rr.Object===Object&&rr;return k=n}function ar(){if(O)return N;O=1;var n=ur(),r=\"object\"==typeof self&&self&&self.Object===Object&&self,t=n||r||Function(\"return this\")();return N=t}function fr(){if(C)return I;C=1;var n=ar().Symbol;return I=n}function cr(){if(T)return S;T=1;var n=fr(),r=function(){if(M)return A;M=1;var n=fr(),r=Object.prototype,t=r.hasOwnProperty,e=r.toString,o=n?n.toStringTag:void 0;return A=function(n){var r=t.call(n,o),i=n[o];try{n[o]=void 0;var u=!0}catch(n){}var a=e.call(n);return u&&(r?n[o]=i:delete n[o]),a}}(),t=function(){if(P)return L;P=1;var n=Object.prototype.toString;return L=function(r){return n.call(r)}}(),e=n?n.toStringTag:void 0;return S=function(n){return null==n?void 0===n?\"[object Undefined]\":\"[object Null]\":e&&e in Object(n)?r(n):t(n)}}function sr(){if(z)return R;return z=1,R=function(n){var r=typeof n;return null!=n&&(\"object\"==r||\"function\"==r)}}function dr(){if(D)return F;D=1;var n=cr(),r=sr();return F=function(t){if(!r(t))return!1;var e=n(t);return\"[object Function]\"==e||\"[object GeneratorFunction]\"==e||\"[object AsyncFunction]\"==e||\"[object Proxy]\"==e}}function hr(){if(V)return G;V=1;var n,r=function(){if(U)return B;U=1;var n=ar()[\"__core-js_shared__\"];return B=n}(),t=(n=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+n:\"\";return G=function(n){return!!t&&t in n}}function vr(){if($)return q;$=1;var n=Function.prototype.toString;return q=function(r){if(null!=r){try{return n.call(r)}catch(n){}try{return r+\"\"}catch(n){}}return\"\"}}function lr(){if(H)return Q;H=1;var n=function(){if(W)return Y;W=1;var n=dr(),r=hr(),t=sr(),e=vr(),o=/^\\[object .+?Constructor\\]$/,i=Function.prototype,u=Object.prototype,a=i.toString,f=u.hasOwnProperty,c=RegExp(\"^\"+a.call(f).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");return Y=function(i){return!(!t(i)||r(i))&&(n(i)?c:o).test(e(i))}}(),r=K?J:(K=1,J=function(n,r){return null==n?void 0:n[r]});return Q=function(t,e){var o=r(t,e);return n(o)?o:void 0}}function pr(){if(Z)return X;Z=1;var n=lr()(ar(),\"Map\");return X=n}function gr(){if(rn)return nn;rn=1;var n=lr()(Object,\"create\");return nn=n}function yr(){if(ln)return vn;ln=1;var n=function(){if(en)return tn;en=1;var n=gr();return tn=function(){this.__data__=n?n(null):{},this.size=0}}(),r=un?on:(un=1,on=function(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}),t=function(){if(fn)return an;fn=1;var n=gr(),r=Object.prototype.hasOwnProperty;return an=function(t){var e=this.__data__;if(n){var o=e[t];return\"__lodash_hash_undefined__\"===o?void 0:o}return r.call(e,t)?e[t]:void 0}}(),e=function(){if(sn)return cn;sn=1;var n=gr(),r=Object.prototype.hasOwnProperty;return cn=function(t){var e=this.__data__;return n?void 0!==e[t]:r.call(e,t)}}(),o=function(){if(hn)return dn;hn=1;var n=gr();return dn=function(r,t){var e=this.__data__;return this.size+=this.has(r)?0:1,e[r]=n&&void 0===t?\"__lodash_hash_undefined__\":t,this}}();function i(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return i.prototype.clear=n,i.prototype.delete=r,i.prototype.get=t,i.prototype.has=e,i.prototype.set=o,vn=i}function br(){if(_n)return mn;_n=1;var n=bn?yn:(bn=1,yn=function(n){var r=typeof n;return\"string\"==r||\"number\"==r||\"symbol\"==r||\"boolean\"==r?\"__proto__\"!==n:null===n});return mn=function(r,t){var e=r.__data__;return n(t)?e[\"string\"==typeof t?\"string\":\"hash\"]:e.map}}function mr(){if(An)return Cn;An=1;var n=function(){if(gn)return pn;gn=1;var n=yr(),r=ir(),t=pr();return pn=function(){this.size=0,this.__data__={hash:new n,map:new(t||r),string:new n}}}(),r=function(){if(En)return wn;En=1;var n=br();return wn=function(r){var t=n(this,r).delete(r);return this.size-=t?1:0,t}}(),t=function(){if(kn)return jn;kn=1;var n=br();return jn=function(r){return n(this,r).get(r)}}(),e=function(){if(Nn)return xn;Nn=1;var n=br();return xn=function(r){return n(this,r).has(r)}}(),o=function(){if(In)return On;In=1;var n=br();return On=function(r,t){var e=n(this,r),o=e.size;return e.set(r,t),this.size+=e.size==o?0:1,this}}();function i(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return i.prototype.clear=n,i.prototype.delete=r,i.prototype.get=t,i.prototype.has=e,i.prototype.set=o,Cn=i}function _r(){if(Sn)return Pn;Sn=1;var n=ir(),r=function(){if(y)return g;y=1;var n=ir();return g=function(){this.__data__=new n,this.size=0}}(),t=m?b:(m=1,b=function(n){var r=this.__data__,t=r.delete(n);return this.size=r.size,t}),e=w?_:(w=1,_=function(n){return this.__data__.get(n)}),o=j?E:(j=1,E=function(n){return this.__data__.has(n)}),i=function(){if(Ln)return Mn;Ln=1;var n=ir(),r=pr(),t=mr();return Mn=function(e,o){var i=this.__data__;if(i instanceof n){var u=i.__data__;if(!r||u.length<199)return u.push([e,o]),this.size=++i.size,this;i=this.__data__=new t(u)}return i.set(e,o),this.size=i.size,this}}();function u(r){var t=this.__data__=new n(r);this.size=t.size}return u.prototype.clear=r,u.prototype.delete=t,u.prototype.get=e,u.prototype.has=o,u.prototype.set=i,Pn=u}function wr(){if(Rn)return Tn;return Rn=1,Tn=function(n,r){for(var t=-1,e=null==n?0:n.length;++t<e&&!1!==r(n[t],t,n););return n}}function Er(){if(Fn)return zn;Fn=1;var n=lr(),r=function(){try{var r=n(Object,\"defineProperty\");return r({},\"\",{}),r}catch(n){}}();return zn=r}function jr(){if(Bn)return Dn;Bn=1;var n=Er();return Dn=function(r,t,e){\"__proto__\"==t&&n?n(r,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):r[t]=e}}function kr(){if(Gn)return Un;Gn=1;var n=jr(),r=er(),t=Object.prototype.hasOwnProperty;return Un=function(e,o,i){var u=e[o];t.call(e,o)&&r(u,i)&&(void 0!==i||o in e)||n(e,o,i)}}function xr(){if(qn)return Vn;qn=1;var n=kr(),r=jr();return Vn=function(t,e,o,i){var u=!o;o||(o={});for(var a=-1,f=e.length;++a<f;){var c=e[a],s=i?i(o[c],t[c],c,o,t):void 0;void 0===s&&(s=t[c]),u?r(o,c,s):n(o,c,s)}return o}}function Nr(){if(Jn)return Wn;return Jn=1,Wn=function(n){return null!=n&&\"object\"==typeof n}}function Or(){if(Xn)return Hn;Xn=1;var n=function(){if(Qn)return Kn;Qn=1;var n=cr(),r=Nr();return Kn=function(t){return r(t)&&\"[object Arguments]\"==n(t)}}(),r=Nr(),t=Object.prototype,e=t.hasOwnProperty,o=t.propertyIsEnumerable,i=n(function(){return arguments}())?n:function(n){return r(n)&&e.call(n,\"callee\")&&!o.call(n,\"callee\")};return Hn=i}function Ir(){if(nr)return Zn;nr=1;var n=Array.isArray;return Zn=n}var Cr,Ar,Mr,Lr,Pr,Sr,Tr,Rr,zr,Fr,Dr,Br={exports:{}};function Ur(){return Mr||(Mr=1,function(n,r){var t=ar(),e=Ar?Cr:(Ar=1,Cr=function(){return!1}),o=r&&!r.nodeType&&r,i=o&&n&&!n.nodeType&&n,u=i&&i.exports===o?t.Buffer:void 0,a=(u?u.isBuffer:void 0)||e;n.exports=a}(Br,Br.exports)),Br.exports}function Gr(){if(Pr)return Lr;Pr=1;var n=/^(?:0|[1-9]\\d*)$/;return Lr=function(r,t){var e=typeof r;return!!(t=null==t?9007199254740991:t)&&(\"number\"==e||\"symbol\"!=e&&n.test(r))&&r>-1&&r%1==0&&r<t}}function Vr(){if(Tr)return Sr;Tr=1;return Sr=function(n){return\"number\"==typeof n&&n>-1&&n%1==0&&n<=9007199254740991}}function qr(){if(Dr)return Fr;return Dr=1,Fr=function(n){return function(r){return n(r)}}}Br.exports;var $r,Yr,Wr,Jr,Kr,Qr,Hr,Xr,Zr,nt,rt,tt,et,ot,it,ut,at,ft,ct,st,dt,ht,vt,lt,pt,gt,yt,bt={exports:{}};function mt(){return $r||($r=1,n=bt,r=bt.exports,t=ur(),e=r&&!r.nodeType&&r,o=e&&n&&!n.nodeType&&n,i=o&&o.exports===e&&t.process,u=function(){try{var n=o&&o.require&&o.require(\"util\").types;return n||i&&i.binding&&i.binding(\"util\")}catch(n){}}(),n.exports=u),bt.exports;var n,r,t,e,o,i,u}function _t(){if(Wr)return Yr;Wr=1;var n=function(){if(zr)return Rr;zr=1;var n=cr(),r=Vr(),t=Nr(),e={};return e[\"[object Float32Array]\"]=e[\"[object Float64Array]\"]=e[\"[object Int8Array]\"]=e[\"[object Int16Array]\"]=e[\"[object Int32Array]\"]=e[\"[object Uint8Array]\"]=e[\"[object Uint8ClampedArray]\"]=e[\"[object Uint16Array]\"]=e[\"[object Uint32Array]\"]=!0,e[\"[object Arguments]\"]=e[\"[object Array]\"]=e[\"[object ArrayBuffer]\"]=e[\"[object Boolean]\"]=e[\"[object DataView]\"]=e[\"[object Date]\"]=e[\"[object Error]\"]=e[\"[object Function]\"]=e[\"[object Map]\"]=e[\"[object Number]\"]=e[\"[object Object]\"]=e[\"[object RegExp]\"]=e[\"[object Set]\"]=e[\"[object String]\"]=e[\"[object WeakMap]\"]=!1,Rr=function(o){return t(o)&&r(o.length)&&!!e[n(o)]}}(),r=qr(),t=mt(),e=t&&t.isTypedArray,o=e?r(e):n;return Yr=o}function wt(){if(Kr)return Jr;Kr=1;var n=Yn?$n:(Yn=1,$n=function(n,r){for(var t=-1,e=Array(n);++t<n;)e[t]=r(t);return e}),r=Or(),t=Ir(),e=Ur(),o=Gr(),i=_t(),u=Object.prototype.hasOwnProperty;return Jr=function(a,f){var c=t(a),s=!c&&r(a),d=!c&&!s&&e(a),h=!c&&!s&&!d&&i(a),v=c||s||d||h,l=v?n(a.length,String):[],p=l.length;for(var g in a)!f&&!u.call(a,g)||v&&(\"length\"==g||d&&(\"offset\"==g||\"parent\"==g)||h&&(\"buffer\"==g||\"byteLength\"==g||\"byteOffset\"==g)||o(g,p))||l.push(g);return l}}function Et(){if(Hr)return Qr;Hr=1;var n=Object.prototype;return Qr=function(r){var t=r&&r.constructor;return r===(\"function\"==typeof t&&t.prototype||n)}}function jt(){if(Zr)return Xr;return Zr=1,Xr=function(n,r){return function(t){return n(r(t))}}}function kt(){if(et)return tt;et=1;var n=Et(),r=function(){if(rt)return nt;rt=1;var n=jt()(Object.keys,Object);return nt=n}(),t=Object.prototype.hasOwnProperty;return tt=function(e){if(!n(e))return r(e);var o=[];for(var i in Object(e))t.call(e,i)&&\"constructor\"!=i&&o.push(i);return o}}function xt(){if(it)return ot;it=1;var n=dr(),r=Vr();return ot=function(t){return null!=t&&r(t.length)&&!n(t)}}function Nt(){if(at)return ut;at=1;var n=wt(),r=kt(),t=xt();return ut=function(e){return t(e)?n(e):r(e)}}function Ot(){if(vt)return ht;vt=1;var n=sr(),r=Et(),t=dt?st:(dt=1,st=function(n){var r=[];if(null!=n)for(var t in Object(n))r.push(t);return r}),e=Object.prototype.hasOwnProperty;return ht=function(o){if(!n(o))return t(o);var i=r(o),u=[];for(var a in o)(\"constructor\"!=a||!i&&e.call(o,a))&&u.push(a);return u}}function It(){if(pt)return lt;pt=1;var n=wt(),r=Ot(),t=xt();return lt=function(e){return t(e)?n(e,!0):r(e)}}bt.exports;var Ct,At,Mt,Lt,Pt,St,Tt,Rt,zt,Ft,Dt,Bt,Ut,Gt,Vt,qt,$t,Yt,Wt,Jt,Kt,Qt,Ht,Xt,Zt,ne,re,te,ee,oe,ie,ue,ae,fe,ce,se,de,he,ve,le,pe,ge,ye,be,me,_e,we,Ee,je,ke,xe,Ne,Oe,Ie,Ce,Ae,Me,Le,Pe,Se,Te,Re,ze,Fe,De,Be,Ue,Ge,Ve,qe,$e,Ye,We,Je,Ke,Qe,He,Xe,Ze,no,ro,to,eo,oo,io,uo,ao,fo,co,so,ho,vo,lo,po,go,yo,bo,mo,_o,wo,Eo,jo,ko,xo,No,Oo,Io,Co,Ao,Mo,Lo,Po,So,To,Ro,zo,Fo,Do,Bo,Uo,Go,Vo,qo,$o,Yo,Wo,Jo,Ko,Qo,Ho,Xo,Zo,ni,ri,ti,ei,oi,ii,ui,ai,fi,ci,si,di,hi,vi,li,pi,gi,yi,bi,mi,_i,wi,Ei,ji,ki,xi,Ni,Oi,Ii,Ci,Ai,Mi,Li,Pi,Si,Ti,Ri,zi,Fi,Di,Bi,Ui,Gi,Vi,qi,$i,Yi,Wi,Ji,Ki,Qi,Hi,Xi,Zi,nu,ru,tu,eu,ou,iu,uu,au,fu,cu,su,du,hu,vu,lu,pu,gu,yu,bu,mu,_u,wu,Eu,ju,ku,xu,Nu,Ou,Iu,Cu,Au,Mu,Lu,Pu,Su,Tu,Ru,zu,Fu,Du,Bu,Uu,Gu,Vu,qu,$u,Yu,Wu,Ju,Ku,Qu,Hu,Xu,Zu,na,ra,ta,ea,oa,ia,ua,aa,fa,ca,sa,da,ha,va,la,pa,ga,ya,ba,ma,_a,wa,Ea,ja,ka,xa,Na,Oa,Ia,Ca,Aa,Ma,La,Pa,Sa,Ta,Ra,za,Fa,Da,Ba={exports:{}};function Ua(){return Ct||(Ct=1,n=Ba,r=Ba.exports,t=ar(),e=r&&!r.nodeType&&r,o=e&&n&&!n.nodeType&&n,i=o&&o.exports===e?t.Buffer:void 0,u=i?i.allocUnsafe:void 0,n.exports=function(n,r){if(r)return n.slice();var t=n.length,e=u?u(t):new n.constructor(t);return n.copy(e),e}),Ba.exports;var n,r,t,e,o,i,u}function Ga(){if(Mt)return At;return Mt=1,At=function(n,r){var t=-1,e=n.length;for(r||(r=Array(e));++t<e;)r[t]=n[t];return r}}function Va(){if(Pt)return Lt;return Pt=1,Lt=function(n,r){for(var t=-1,e=null==n?0:n.length,o=0,i=[];++t<e;){var u=n[t];r(u,t,n)&&(i[o++]=u)}return i}}function qa(){if(Tt)return St;return Tt=1,St=function(){return[]}}function $a(){if(zt)return Rt;zt=1;var n=Va(),r=qa(),t=Object.prototype.propertyIsEnumerable,e=Object.getOwnPropertySymbols;return Rt=e?function(r){return null==r?[]:(r=Object(r),n(e(r),(function(n){return t.call(r,n)})))}:r}function Ya(){if(Ut)return Bt;return Ut=1,Bt=function(n,r){for(var t=-1,e=r.length,o=n.length;++t<e;)n[o+t]=r[t];return n}}function Wa(){if(Vt)return Gt;Vt=1;var n=jt()(Object.getPrototypeOf,Object);return Gt=n}function Ja(){if($t)return qt;$t=1;var n=Ya(),r=Wa(),t=$a(),e=qa(),o=Object.getOwnPropertySymbols;return qt=o?function(e){for(var o=[];e;)n(o,t(e)),e=r(e);return o}:e}function Ka(){if(Kt)return Jt;Kt=1;var n=Ya(),r=Ir();return Jt=function(t,e,o){var i=e(t);return r(t)?i:n(i,o(t))}}function Qa(){if(Ht)return Qt;Ht=1;var n=Ka(),r=$a(),t=Nt();return Qt=function(e){return n(e,t,r)}}function Ha(){if(ie)return oe;ie=1;var n=lr()(ar(),\"Set\");return oe=n}function Xa(){if(ce)return fe;ce=1;var n=function(){if(re)return ne;re=1;var n=lr()(ar(),\"DataView\");return ne=n}(),r=pr(),t=function(){if(ee)return te;ee=1;var n=lr()(ar(),\"Promise\");return te=n}(),e=Ha(),o=function(){if(ae)return ue;ae=1;var n=lr()(ar(),\"WeakMap\");return ue=n}(),i=cr(),u=vr(),a=\"[object Map]\",f=\"[object Promise]\",c=\"[object Set]\",s=\"[object WeakMap]\",d=\"[object DataView]\",h=u(n),v=u(r),l=u(t),p=u(e),g=u(o),y=i;return(n&&y(new n(new ArrayBuffer(1)))!=d||r&&y(new r)!=a||t&&y(t.resolve())!=f||e&&y(new e)!=c||o&&y(new o)!=s)&&(y=function(n){var r=i(n),t=\"[object Object]\"==r?n.constructor:void 0,e=t?u(t):\"\";if(e)switch(e){case h:return d;case v:return a;case l:return f;case p:return c;case g:return s}return r}),fe=y}function Za(){if(ve)return he;ve=1;var n=ar().Uint8Array;return he=n}function nf(){if(pe)return le;pe=1;var n=Za();return le=function(r){var t=new r.constructor(r.byteLength);return new n(t).set(new n(r)),t}}function rf(){if(je)return Ee;je=1;var n=nf();return Ee=function(r,t){var e=t?n(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.length)}}function tf(){if(xe)return ke;xe=1;var n=nf(),r=function(){if(ye)return ge;ye=1;var n=nf();return ge=function(r,t){var e=t?n(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.byteLength)}}(),t=function(){if(me)return be;me=1;var n=/\\w*$/;return be=function(r){var t=new r.constructor(r.source,n.exec(r));return t.lastIndex=r.lastIndex,t}}(),e=function(){if(we)return _e;we=1;var n=fr(),r=n?n.prototype:void 0,t=r?r.valueOf:void 0;return _e=function(n){return t?Object(t.call(n)):{}}}(),o=rf();return ke=function(i,u,a){var f=i.constructor;switch(u){case\"[object ArrayBuffer]\":return n(i);case\"[object Boolean]\":case\"[object Date]\":return new f(+i);case\"[object DataView]\":return r(i,a);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":case\"[object Uint16Array]\":case\"[object Uint32Array]\":return o(i,a);case\"[object Map]\":case\"[object Set]\":return new f;case\"[object Number]\":case\"[object String]\":return new f(i);case\"[object RegExp]\":return t(i);case\"[object Symbol]\":return e(i)}}}function ef(){if(Oe)return Ne;Oe=1;var n=sr(),r=Object.create,t=function(){function t(){}return function(e){if(!n(e))return{};if(r)return r(e);t.prototype=e;var o=new t;return t.prototype=void 0,o}}();return Ne=t}function of(){if(Ce)return Ie;Ce=1;var n=ef(),r=Wa(),t=Et();return Ie=function(e){return\"function\"!=typeof e.constructor||t(e)?{}:n(r(e))}}function uf(){if(Pe)return Le;Pe=1;var n=function(){if(Me)return Ae;Me=1;var n=Xa(),r=Nr();return Ae=function(t){return r(t)&&\"[object Map]\"==n(t)}}(),r=qr(),t=mt(),e=t&&t.isMap,o=e?r(e):n;return Le=o}function af(){if(ze)return Re;ze=1;var n=function(){if(Te)return Se;Te=1;var n=Xa(),r=Nr();return Se=function(t){return r(t)&&\"[object Set]\"==n(t)}}(),r=qr(),t=mt(),e=t&&t.isSet,o=e?r(e):n;return Re=o}function ff(){if(De)return Fe;De=1;var n=_r(),r=wr(),t=kr(),e=function(){if(ct)return ft;ct=1;var n=xr(),r=Nt();return ft=function(t,e){return t&&n(e,r(e),t)}}(),o=function(){if(yt)return gt;yt=1;var n=xr(),r=It();return gt=function(t,e){return t&&n(e,r(e),t)}}(),i=Ua(),u=Ga(),a=function(){if(Dt)return Ft;Dt=1;var n=xr(),r=$a();return Ft=function(t,e){return n(t,r(t),e)}}(),f=function(){if(Wt)return Yt;Wt=1;var n=xr(),r=Ja();return Yt=function(t,e){return n(t,r(t),e)}}(),c=Qa(),s=function(){if(Zt)return Xt;Zt=1;var n=Ka(),r=Ja(),t=It();return Xt=function(e){return n(e,t,r)}}(),d=Xa(),h=function(){if(de)return se;de=1;var n=Object.prototype.hasOwnProperty;return se=function(r){var t=r.length,e=new r.constructor(t);return t&&\"string\"==typeof r[0]&&n.call(r,\"index\")&&(e.index=r.index,e.input=r.input),e}}(),v=tf(),l=of(),p=Ir(),g=Ur(),y=uf(),b=sr(),m=af(),_=Nt(),w=It(),E=\"[object Arguments]\",j=\"[object Function]\",k=\"[object Object]\",x={};return x[E]=x[\"[object Array]\"]=x[\"[object ArrayBuffer]\"]=x[\"[object DataView]\"]=x[\"[object Boolean]\"]=x[\"[object Date]\"]=x[\"[object Float32Array]\"]=x[\"[object Float64Array]\"]=x[\"[object Int8Array]\"]=x[\"[object Int16Array]\"]=x[\"[object Int32Array]\"]=x[\"[object Map]\"]=x[\"[object Number]\"]=x[k]=x[\"[object RegExp]\"]=x[\"[object Set]\"]=x[\"[object String]\"]=x[\"[object Symbol]\"]=x[\"[object Uint8Array]\"]=x[\"[object Uint8ClampedArray]\"]=x[\"[object Uint16Array]\"]=x[\"[object Uint32Array]\"]=!0,x[\"[object Error]\"]=x[j]=x[\"[object WeakMap]\"]=!1,Fe=function N(O,I,C,A,M,L){var P,S=1&I,T=2&I,R=4&I;if(C&&(P=M?C(O,A,M,L):C(O)),void 0!==P)return P;if(!b(O))return O;var z=p(O);if(z){if(P=h(O),!S)return u(O,P)}else{var F=d(O),D=F==j||\"[object GeneratorFunction]\"==F;if(g(O))return i(O,S);if(F==k||F==E||D&&!M){if(P=T||D?{}:l(O),!S)return T?f(O,o(P,O)):a(O,e(P,O))}else{if(!x[F])return M?O:{};P=v(O,F,S)}}L||(L=new n);var B=L.get(O);if(B)return B;L.set(O,P),m(O)?O.forEach((function(n){P.add(N(n,I,C,n,O,L))})):y(O)&&O.forEach((function(n,r){P.set(r,N(n,I,C,r,O,L))}));var U=z?void 0:(R?T?s:c:T?w:_)(O);return r(U||O,(function(n,r){U&&(n=O[r=n]),t(P,r,N(n,I,C,r,O,L))})),P},Fe}function cf(){if(Ue)return Be;Ue=1;var n=ff();return Be=function(r){return n(r,4)}}function sf(){if(Ve)return Ge;return Ve=1,Ge=function(n){return function(){return n}}}function df(){if(We)return Ye;We=1;var n=($e?qe:($e=1,qe=function(n){return function(r,t,e){for(var o=-1,i=Object(r),u=e(r),a=u.length;a--;){var f=u[n?a:++o];if(!1===t(i[f],f,i))break}return r}}))();return Ye=n}function hf(){if(Ke)return Je;Ke=1;var n=df(),r=Nt();return Je=function(t,e){return t&&n(t,e,r)}}function vf(){if(Ze)return Xe;Ze=1;var n=hf(),r=function(){if(He)return Qe;He=1;var n=xt();return Qe=function(r,t){return function(e,o){if(null==e)return e;if(!n(e))return r(e,o);for(var i=e.length,u=t?i:-1,a=Object(e);(t?u--:++u<i)&&!1!==o(a[u],u,a););return e}}}()(n);return Xe=r}function lf(){if(ro)return no;return ro=1,no=function(n){return n}}function pf(){if(eo)return to;eo=1;var n=lf();return to=function(r){return\"function\"==typeof r?r:n}}function gf(){if(io)return oo;io=1;var n=wr(),r=vf(),t=pf(),e=Ir();return oo=function(o,i){return(e(o)?n:r)(o,t(i))}}function yf(){return ao?uo:(ao=1,uo=gf())}function bf(){if(go)return po;go=1;var n=mr(),r=ho?so:(ho=1,so=function(n){return this.__data__.set(n,\"__lodash_hash_undefined__\"),this}),t=lo?vo:(lo=1,vo=function(n){return this.__data__.has(n)});function e(r){var t=-1,e=null==r?0:r.length;for(this.__data__=new n;++t<e;)this.add(r[t])}return e.prototype.add=e.prototype.push=r,e.prototype.has=t,po=e}function mf(){if(_o)return mo;return _o=1,mo=function(n,r){return n.has(r)}}function _f(){if(Eo)return wo;Eo=1;var n=bf(),r=bo?yo:(bo=1,yo=function(n,r){for(var t=-1,e=null==n?0:n.length;++t<e;)if(r(n[t],t,n))return!0;return!1}),t=mf();return wo=function(e,o,i,u,a,f){var c=1&i,s=e.length,d=o.length;if(s!=d&&!(c&&d>s))return!1;var h=f.get(e),v=f.get(o);if(h&&v)return h==o&&v==e;var l=-1,p=!0,g=2&i?new n:void 0;for(f.set(e,o),f.set(o,e);++l<s;){var y=e[l],b=o[l];if(u)var m=c?u(b,y,l,o,e,f):u(y,b,l,e,o,f);if(void 0!==m){if(m)continue;p=!1;break}if(g){if(!r(o,(function(n,r){if(!t(g,r)&&(y===n||a(y,n,i,u,f)))return g.push(r)}))){p=!1;break}}else if(y!==b&&!a(y,b,i,u,f)){p=!1;break}}return f.delete(e),f.delete(o),p}}function wf(){if(No)return xo;return No=1,xo=function(n){var r=-1,t=Array(n.size);return n.forEach((function(n){t[++r]=n})),t}}function Ef(){if(Io)return Oo;Io=1;var n=fr(),r=Za(),t=er(),e=_f(),o=ko?jo:(ko=1,jo=function(n){var r=-1,t=Array(n.size);return n.forEach((function(n,e){t[++r]=[e,n]})),t}),i=wf(),u=n?n.prototype:void 0,a=u?u.valueOf:void 0;return Oo=function(n,u,f,c,s,d,h){switch(f){case\"[object DataView]\":if(n.byteLength!=u.byteLength||n.byteOffset!=u.byteOffset)return!1;n=n.buffer,u=u.buffer;case\"[object ArrayBuffer]\":return!(n.byteLength!=u.byteLength||!d(new r(n),new r(u)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return t(+n,+u);case\"[object Error]\":return n.name==u.name&&n.message==u.message;case\"[object RegExp]\":case\"[object String]\":return n==u+\"\";case\"[object Map]\":var v=o;case\"[object Set]\":var l=1&c;if(v||(v=i),n.size!=u.size&&!l)return!1;var p=h.get(n);if(p)return p==u;c|=2,h.set(n,u);var g=e(v(n),v(u),c,s,d,h);return h.delete(n),g;case\"[object Symbol]\":if(a)return a.call(n)==a.call(u)}return!1}}function jf(){if(Lo)return Mo;Lo=1;var n=_r(),r=_f(),t=Ef(),e=function(){if(Ao)return Co;Ao=1;var n=Qa(),r=Object.prototype.hasOwnProperty;return Co=function(t,e,o,i,u,a){var f=1&o,c=n(t),s=c.length;if(s!=n(e).length&&!f)return!1;for(var d=s;d--;){var h=c[d];if(!(f?h in e:r.call(e,h)))return!1}var v=a.get(t),l=a.get(e);if(v&&l)return v==e&&l==t;var p=!0;a.set(t,e),a.set(e,t);for(var g=f;++d<s;){var y=t[h=c[d]],b=e[h];if(i)var m=f?i(b,y,h,e,t,a):i(y,b,h,t,e,a);if(!(void 0===m?y===b||u(y,b,o,i,a):m)){p=!1;break}g||(g=\"constructor\"==h)}if(p&&!g){var _=t.constructor,w=e.constructor;_==w||!(\"constructor\"in t)||!(\"constructor\"in e)||\"function\"==typeof _&&_ instanceof _&&\"function\"==typeof w&&w instanceof w||(p=!1)}return a.delete(t),a.delete(e),p}}(),o=Xa(),i=Ir(),u=Ur(),a=_t(),f=\"[object Arguments]\",c=\"[object Array]\",s=\"[object Object]\",d=Object.prototype.hasOwnProperty;return Mo=function(h,v,l,p,g,y){var b=i(h),m=i(v),_=b?c:o(h),w=m?c:o(v),E=(_=_==f?s:_)==s,j=(w=w==f?s:w)==s,k=_==w;if(k&&u(h)){if(!u(v))return!1;b=!0,E=!1}if(k&&!E)return y||(y=new n),b||a(h)?r(h,v,l,p,g,y):t(h,v,_,l,p,g,y);if(!(1&l)){var x=E&&d.call(h,\"__wrapped__\"),N=j&&d.call(v,\"__wrapped__\");if(x||N){var O=x?h.value():h,I=N?v.value():v;return y||(y=new n),g(O,I,l,p,y)}}return!!k&&(y||(y=new n),e(h,v,l,p,g,y))}}function kf(){if(So)return Po;So=1;var n=jf(),r=Nr();return Po=function t(e,o,i,u,a){return e===o||(null==e||null==o||!r(e)&&!r(o)?e!=e&&o!=o:n(e,o,i,u,t,a))},Po}function xf(){if(Fo)return zo;Fo=1;var n=sr();return zo=function(r){return r==r&&!n(r)}}function Nf(){if(Go)return Uo;return Go=1,Uo=function(n,r){return function(t){return null!=t&&(t[n]===r&&(void 0!==r||n in Object(t)))}}}function Of(){if(qo)return Vo;qo=1;var n=function(){if(Ro)return To;Ro=1;var n=_r(),r=kf();return To=function(t,e,o,i){var u=o.length,a=u,f=!i;if(null==t)return!a;for(t=Object(t);u--;){var c=o[u];if(f&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++u<a;){var s=(c=o[u])[0],d=t[s],h=c[1];if(f&&c[2]){if(void 0===d&&!(s in t))return!1}else{var v=new n;if(i)var l=i(d,h,s,t,e,v);if(!(void 0===l?r(h,d,3,i,v):l))return!1}}return!0}}(),r=function(){if(Bo)return Do;Bo=1;var n=xf(),r=Nt();return Do=function(t){for(var e=r(t),o=e.length;o--;){var i=e[o],u=t[i];e[o]=[i,u,n(u)]}return e}}(),t=Nf();return Vo=function(e){var o=r(e);return 1==o.length&&o[0][2]?t(o[0][0],o[0][1]):function(r){return r===e||n(r,e,o)}}}function If(){if(Yo)return $o;Yo=1;var n=cr(),r=Nr();return $o=function(t){return\"symbol\"==typeof t||r(t)&&\"[object Symbol]\"==n(t)}}function Cf(){if(Jo)return Wo;Jo=1;var n=Ir(),r=If(),t=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,e=/^\\w*$/;return Wo=function(o,i){if(n(o))return!1;var u=typeof o;return!(\"number\"!=u&&\"symbol\"!=u&&\"boolean\"!=u&&null!=o&&!r(o))||(e.test(o)||!t.test(o)||null!=i&&o in Object(i))}}function Af(){if(Xo)return Ho;Xo=1;var n=function(){if(Qo)return Ko;Qo=1;var n=mr();function r(t,e){if(\"function\"!=typeof t||null!=e&&\"function\"!=typeof e)throw new TypeError(\"Expected a function\");var o=function(){var n=arguments,r=e?e.apply(this,n):n[0],i=o.cache;if(i.has(r))return i.get(r);var u=t.apply(this,n);return o.cache=i.set(r,u)||i,u};return o.cache=new(r.Cache||n),o}return r.Cache=n,Ko=r}();return Ho=function(r){var t=n(r,(function(n){return 500===e.size&&e.clear(),n})),e=t.cache;return t}}function Mf(){if(ti)return ri;return ti=1,ri=function(n,r){for(var t=-1,e=null==n?0:n.length,o=Array(e);++t<e;)o[t]=r(n[t],t,n);return o}}function Lf(){if(ui)return ii;ui=1;var n=function(){if(oi)return ei;oi=1;var n=fr(),r=Mf(),t=Ir(),e=If(),o=n?n.prototype:void 0,i=o?o.toString:void 0;return ei=function n(o){if(\"string\"==typeof o)return o;if(t(o))return r(o,n)+\"\";if(e(o))return i?i.call(o):\"\";var u=o+\"\";return\"0\"==u&&1/o==-1/0?\"-0\":u},ei}();return ii=function(r){return null==r?\"\":n(r)}}function Pf(){if(fi)return ai;fi=1;var n=Ir(),r=Cf(),t=function(){if(ni)return Zo;ni=1;var n=Af(),r=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,t=/\\\\(\\\\)?/g,e=n((function(n){var e=[];return 46===n.charCodeAt(0)&&e.push(\"\"),n.replace(r,(function(n,r,o,i){e.push(o?i.replace(t,\"$1\"):r||n)})),e}));return Zo=e}(),e=Lf();return ai=function(o,i){return n(o)?o:r(o,i)?[o]:t(e(o))}}function Sf(){if(si)return ci;si=1;var n=If();return ci=function(r){if(\"string\"==typeof r||n(r))return r;var t=r+\"\";return\"0\"==t&&1/r==-1/0?\"-0\":t}}function Tf(){if(hi)return di;hi=1;var n=Pf(),r=Sf();return di=function(t,e){for(var o=0,i=(e=n(e,t)).length;null!=t&&o<i;)t=t[r(e[o++])];return o&&o==i?t:void 0}}function Rf(){if(bi)return yi;bi=1;var n=Pf(),r=Or(),t=Ir(),e=Gr(),o=Vr(),i=Sf();return yi=function(u,a,f){for(var c=-1,s=(a=n(a,u)).length,d=!1;++c<s;){var h=i(a[c]);if(!(d=null!=u&&f(u,h)))break;u=u[h]}return d||++c!=s?d:!!(s=null==u?0:u.length)&&o(s)&&e(h,s)&&(t(u)||r(u))}}function zf(){if(_i)return mi;_i=1;var n=gi?pi:(gi=1,pi=function(n,r){return null!=n&&r in Object(n)}),r=Rf();return mi=function(t,e){return null!=t&&r(t,e,n)}}function Ff(){if(Ei)return wi;Ei=1;var n=kf(),r=function(){if(li)return vi;li=1;var n=Tf();return vi=function(r,t,e){var o=null==r?void 0:n(r,t);return void 0===o?e:o}}(),t=zf(),e=Cf(),o=xf(),i=Nf(),u=Sf();return wi=function(a,f){return e(a)&&o(f)?i(u(a),f):function(e){var o=r(e,a);return void 0===o&&o===f?t(e,a):n(f,o,3)}}}function Df(){if(ki)return ji;return ki=1,ji=function(n){return function(r){return null==r?void 0:r[n]}}}function Bf(){if(Ii)return Oi;Ii=1;var n=Df(),r=function(){if(Ni)return xi;Ni=1;var n=Tf();return xi=function(r){return function(t){return n(t,r)}}}(),t=Cf(),e=Sf();return Oi=function(o){return t(o)?n(e(o)):r(o)}}function Uf(){if(Ai)return Ci;Ai=1;var n=Of(),r=Ff(),t=lf(),e=Ir(),o=Bf();return Ci=function(i){return\"function\"==typeof i?i:null==i?t:\"object\"==typeof i?e(i)?r(i[0],i[1]):n(i):o(i)}}function Gf(){if(Li)return Mi;Li=1;var n=Va(),r=function(){if(co)return fo;co=1;var n=vf();return fo=function(r,t){var e=[];return n(r,(function(n,r,o){t(n,r,o)&&e.push(n)})),e}}(),t=Uf(),e=Ir();return Mi=function(o,i){return(e(o)?n:r)(o,t(i,3))}}function Vf(){if(Ri)return Ti;Ri=1;var n=function(){if(Si)return Pi;Si=1;var n=Object.prototype.hasOwnProperty;return Pi=function(r,t){return null!=r&&n.call(r,t)}}(),r=Rf();return Ti=function(t,e){return null!=t&&r(t,e,n)}}function qf(){if(Fi)return zi;Fi=1;var n=kt(),r=Xa(),t=Or(),e=Ir(),o=xt(),i=Ur(),u=Et(),a=_t(),f=Object.prototype.hasOwnProperty;return zi=function(c){if(null==c)return!0;if(o(c)&&(e(c)||\"string\"==typeof c||\"function\"==typeof c.splice||i(c)||a(c)||t(c)))return!c.length;var s=r(c);if(\"[object Map]\"==s||\"[object Set]\"==s)return!c.size;if(u(c))return!n(c).length;for(var d in c)if(f.call(c,d))return!1;return!0}}function $f(){if(Bi)return Di;return Bi=1,Di=function(n){return void 0===n}}function Yf(){if(Gi)return Ui;Gi=1;var n=vf(),r=xt();return Ui=function(t,e){var o=-1,i=r(t)?Array(t.length):[];return n(t,(function(n,r,t){i[++o]=e(n,r,t)})),i}}function Wf(){if(qi)return Vi;qi=1;var n=Mf(),r=Uf(),t=Yf(),e=Ir();return Vi=function(o,i){return(e(o)?n:t)(o,r(i,3))}}function Jf(){if(Qi)return Ki;Qi=1;var n=Yi?$i:(Yi=1,$i=function(n,r,t,e){var o=-1,i=null==n?0:n.length;for(e&&i&&(t=n[++o]);++o<i;)t=r(t,n[o],o,n);return t}),r=vf(),t=Uf(),e=Ji?Wi:(Ji=1,Wi=function(n,r,t,e,o){return o(n,(function(n,o,i){t=e?(e=!1,n):r(t,n,o,i)})),t}),o=Ir();return Ki=function(i,u,a){var f=o(i)?n:e,c=arguments.length<3;return f(i,t(u,4),a,c,r)},Ki}function Kf(){if(uu)return iu;uu=1;var n=function(){if(nu)return Zi;nu=1;var n=Df()(\"length\");return Zi=n}(),r=function(){if(tu)return ru;tu=1;var n=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\");return ru=function(r){return n.test(r)}}(),t=function(){if(ou)return eu;ou=1;var n=\"\\\\ud800-\\\\udfff\",r=\"[\"+n+\"]\",t=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",e=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",o=\"[^\"+n+\"]\",i=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",u=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",a=\"(?:\"+t+\"|\"+e+\")?\",f=\"[\\\\ufe0e\\\\ufe0f]?\",c=f+a+\"(?:\\\\u200d(?:\"+[o,i,u].join(\"|\")+\")\"+f+a+\")*\",s=\"(?:\"+[o+t+\"?\",t,i,u,r].join(\"|\")+\")\",d=RegExp(e+\"(?=\"+e+\")|\"+s+c,\"g\");return eu=function(n){for(var r=d.lastIndex=0;d.test(n);)++r;return r}}();return iu=function(e){return r(e)?t(e):n(e)}}function Qf(){if(fu)return au;fu=1;var n=kt(),r=Xa(),t=xt(),e=function(){if(Xi)return Hi;Xi=1;var n=cr(),r=Ir(),t=Nr();return Hi=function(e){return\"string\"==typeof e||!r(e)&&t(e)&&\"[object String]\"==n(e)}}(),o=Kf();return au=function(i){if(null==i)return 0;if(t(i))return e(i)?o(i):i.length;var u=r(i);return\"[object Map]\"==u||\"[object Set]\"==u?i.size:n(i).length}}function Hf(){if(su)return cu;su=1;var n=wr(),r=ef(),t=hf(),e=Uf(),o=Wa(),i=Ir(),u=Ur(),a=dr(),f=sr(),c=_t();return cu=function(s,d,h){var v=i(s),l=v||u(s)||c(s);if(d=e(d,4),null==h){var p=s&&s.constructor;h=l?v?new p:[]:f(s)&&a(p)?r(o(s)):{}}return(l?n:t)(s,(function(n,r,t){return d(h,n,r,t)})),h}}function Xf(){if(lu)return vu;lu=1;var n=Ya(),r=function(){if(hu)return du;hu=1;var n=fr(),r=Or(),t=Ir(),e=n?n.isConcatSpreadable:void 0;return du=function(n){return t(n)||r(n)||!!(e&&n&&n[e])}}();return vu=function t(e,o,i,u,a){var f=-1,c=e.length;for(i||(i=r),a||(a=[]);++f<c;){var s=e[f];o>0&&i(s)?o>1?t(s,o-1,i,u,a):n(a,s):u||(a[a.length]=s)}return a},vu}function Zf(){if(bu)return yu;bu=1;var n=gu?pu:(gu=1,pu=function(n,r,t){switch(t.length){case 0:return n.call(r);case 1:return n.call(r,t[0]);case 2:return n.call(r,t[0],t[1]);case 3:return n.call(r,t[0],t[1],t[2])}return n.apply(r,t)}),r=Math.max;return yu=function(t,e,o){return e=r(void 0===e?t.length-1:e,0),function(){for(var i=arguments,u=-1,a=r(i.length-e,0),f=Array(a);++u<a;)f[u]=i[e+u];u=-1;for(var c=Array(e+1);++u<e;)c[u]=i[u];return c[e]=o(f),n(t,this,c)}},yu}function nc(){if(ku)return ju;ku=1;var n=function(){if(_u)return mu;_u=1;var n=sf(),r=Er(),t=lf();return mu=r?function(t,e){return r(t,\"toString\",{configurable:!0,enumerable:!1,value:n(e),writable:!0})}:t}(),r=function(){if(Eu)return wu;Eu=1;var n=Date.now;return wu=function(r){var t=0,e=0;return function(){var o=n(),i=16-(o-e);if(e=o,i>0){if(++t>=800)return arguments[0]}else t=0;return r.apply(void 0,arguments)}},wu}(),t=r(n);return ju=t}function rc(){if(Nu)return xu;Nu=1;var n=lf(),r=Zf(),t=nc();return xu=function(e,o){return t(r(e,o,n),e+\"\")}}function tc(){if(Iu)return Ou;return Iu=1,Ou=function(n,r,t,e){for(var o=n.length,i=t+(e?1:-1);e?i--:++i<o;)if(r(n[i],i,n))return i;return-1}}function ec(){if(Su)return Pu;Su=1;var n=tc(),r=Au?Cu:(Au=1,Cu=function(n){return n!=n}),t=Lu?Mu:(Lu=1,Mu=function(n,r,t){for(var e=t-1,o=n.length;++e<o;)if(n[e]===r)return e;return-1});return Pu=function(e,o,i){return o==o?t(e,o,i):n(e,r,i)}}function oc(){if(Gu)return Uu;Gu=1;var n=Ha(),r=Bu?Du:(Bu=1,Du=function(){}),t=wf(),e=n&&1/t(new n([,-0]))[1]==1/0?function(r){return new n(r)}:r;return Uu=e}function ic(){if(qu)return Vu;qu=1;var n=bf(),r=function(){if(Ru)return Tu;Ru=1;var n=ec();return Tu=function(r,t){return!(null==r||!r.length)&&n(r,t,0)>-1}}(),t=Fu?zu:(Fu=1,zu=function(n,r,t){for(var e=-1,o=null==n?0:n.length;++e<o;)if(t(r,n[e]))return!0;return!1}),e=mf(),o=oc(),i=wf();return Vu=function(u,a,f){var c=-1,s=r,d=u.length,h=!0,v=[],l=v;if(f)h=!1,s=t;else if(d>=200){var p=a?null:o(u);if(p)return i(p);h=!1,s=e,l=new n}else l=a?[]:v;n:for(;++c<d;){var g=u[c],y=a?a(g):g;if(g=f||0!==g?g:0,h&&y==y){for(var b=l.length;b--;)if(l[b]===y)continue n;a&&l.push(y),v.push(g)}else s(l,y,f)||(l!==v&&l.push(y),v.push(g))}return v}}function uc(){if(Yu)return $u;Yu=1;var n=xt(),r=Nr();return $u=function(t){return r(t)&&n(t)}}function ac(){if(Ju)return Wu;Ju=1;var n=Xf(),r=rc(),t=ic(),e=uc(),o=r((function(r){return t(n(r,1,e,!0))}));return Wu=o}function fc(){if(Xu)return Hu;Xu=1;var n=function(){if(Qu)return Ku;Qu=1;var n=Mf();return Ku=function(r,t){return n(t,(function(n){return r[n]}))}}(),r=Nt();return Hu=function(t){return null==t?[]:n(t,r(t))}}function cc(){if(na)return Zu;var n;na=1;try{n={clone:cf(),constant:sf(),each:yf(),filter:Gf(),has:Vf(),isArray:Ir(),isEmpty:qf(),isFunction:dr(),isUndefined:$f(),keys:Nt(),map:Wf(),reduce:Jf(),size:Qf(),transform:Hf(),union:ac(),values:fc()}}catch(n){}return n||(n=window._),Zu=n}function sc(){if(ta)return ra;ta=1;var n=cc();ra=o;var r=\"\\0\",t=\"\\0\",e=\"\u0001\";function o(r){this._isDirected=!n.has(r,\"directed\")||r.directed,this._isMultigraph=!!n.has(r,\"multigraph\")&&r.multigraph,this._isCompound=!!n.has(r,\"compound\")&&r.compound,this._label=void 0,this._defaultNodeLabelFn=n.constant(void 0),this._defaultEdgeLabelFn=n.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[t]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function i(n,r){n[r]?n[r]++:n[r]=1}function u(n,r){--n[r]||delete n[r]}function a(t,o,i,u){var a=\"\"+o,f=\"\"+i;if(!t&&a>f){var c=a;a=f,f=c}return a+e+f+e+(n.isUndefined(u)?r:u)}function f(n,r){return a(n,r.v,r.w,r.name)}return o.prototype._nodeCount=0,o.prototype._edgeCount=0,o.prototype.isDirected=function(){return this._isDirected},o.prototype.isMultigraph=function(){return this._isMultigraph},o.prototype.isCompound=function(){return this._isCompound},o.prototype.setGraph=function(n){return this._label=n,this},o.prototype.graph=function(){return this._label},o.prototype.setDefaultNodeLabel=function(r){return n.isFunction(r)||(r=n.constant(r)),this._defaultNodeLabelFn=r,this},o.prototype.nodeCount=function(){return this._nodeCount},o.prototype.nodes=function(){return n.keys(this._nodes)},o.prototype.sources=function(){var r=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(r._in[t])}))},o.prototype.sinks=function(){var r=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(r._out[t])}))},o.prototype.setNodes=function(r,t){var e=arguments,o=this;return n.each(r,(function(n){e.length>1?o.setNode(n,t):o.setNode(n)})),this},o.prototype.setNode=function(r,e){return n.has(this._nodes,r)?(arguments.length>1&&(this._nodes[r]=e),this):(this._nodes[r]=arguments.length>1?e:this._defaultNodeLabelFn(r),this._isCompound&&(this._parent[r]=t,this._children[r]={},this._children[t][r]=!0),this._in[r]={},this._preds[r]={},this._out[r]={},this._sucs[r]={},++this._nodeCount,this)},o.prototype.node=function(n){return this._nodes[n]},o.prototype.hasNode=function(r){return n.has(this._nodes,r)},o.prototype.removeNode=function(r){var t=this;if(n.has(this._nodes,r)){var e=function(n){t.removeEdge(t._edgeObjs[n])};delete this._nodes[r],this._isCompound&&(this._removeFromParentsChildList(r),delete this._parent[r],n.each(this.children(r),(function(n){t.setParent(n)})),delete this._children[r]),n.each(n.keys(this._in[r]),e),delete this._in[r],delete this._preds[r],n.each(n.keys(this._out[r]),e),delete this._out[r],delete this._sucs[r],--this._nodeCount}return this},o.prototype.setParent=function(r,e){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(n.isUndefined(e))e=t;else{for(var o=e+=\"\";!n.isUndefined(o);o=this.parent(o))if(o===r)throw new Error(\"Setting \"+e+\" as parent of \"+r+\" would create a cycle\");this.setNode(e)}return this.setNode(r),this._removeFromParentsChildList(r),this._parent[r]=e,this._children[e][r]=!0,this},o.prototype._removeFromParentsChildList=function(n){delete this._children[this._parent[n]][n]},o.prototype.parent=function(n){if(this._isCompound){var r=this._parent[n];if(r!==t)return r}},o.prototype.children=function(r){if(n.isUndefined(r)&&(r=t),this._isCompound){var e=this._children[r];if(e)return n.keys(e)}else{if(r===t)return this.nodes();if(this.hasNode(r))return[]}},o.prototype.predecessors=function(r){var t=this._preds[r];if(t)return n.keys(t)},o.prototype.successors=function(r){var t=this._sucs[r];if(t)return n.keys(t)},o.prototype.neighbors=function(r){var t=this.predecessors(r);if(t)return n.union(t,this.successors(r))},o.prototype.isLeaf=function(n){return 0===(this.isDirected()?this.successors(n):this.neighbors(n)).length},o.prototype.filterNodes=function(r){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var e=this;n.each(this._nodes,(function(n,e){r(e)&&t.setNode(e,n)})),n.each(this._edgeObjs,(function(n){t.hasNode(n.v)&&t.hasNode(n.w)&&t.setEdge(n,e.edge(n))}));var o={};function i(n){var r=e.parent(n);return void 0===r||t.hasNode(r)?(o[n]=r,r):r in o?o[r]:i(r)}return this._isCompound&&n.each(t.nodes(),(function(n){t.setParent(n,i(n))})),t},o.prototype.setDefaultEdgeLabel=function(r){return n.isFunction(r)||(r=n.constant(r)),this._defaultEdgeLabelFn=r,this},o.prototype.edgeCount=function(){return this._edgeCount},o.prototype.edges=function(){return n.values(this._edgeObjs)},o.prototype.setPath=function(r,t){var e=this,o=arguments;return n.reduce(r,(function(n,r){return o.length>1?e.setEdge(n,r,t):e.setEdge(n,r),r})),this},o.prototype.setEdge=function(){var r,t,e,o,u=!1,f=arguments[0];\"object\"==typeof f&&null!==f&&\"v\"in f?(r=f.v,t=f.w,e=f.name,2===arguments.length&&(o=arguments[1],u=!0)):(r=f,t=arguments[1],e=arguments[3],arguments.length>2&&(o=arguments[2],u=!0)),r=\"\"+r,t=\"\"+t,n.isUndefined(e)||(e=\"\"+e);var c=a(this._isDirected,r,t,e);if(n.has(this._edgeLabels,c))return u&&(this._edgeLabels[c]=o),this;if(!n.isUndefined(e)&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(r),this.setNode(t),this._edgeLabels[c]=u?o:this._defaultEdgeLabelFn(r,t,e);var s=function(n,r,t,e){var o=\"\"+r,i=\"\"+t;if(!n&&o>i){var u=o;o=i,i=u}var a={v:o,w:i};e&&(a.name=e);return a}(this._isDirected,r,t,e);return r=s.v,t=s.w,Object.freeze(s),this._edgeObjs[c]=s,i(this._preds[t],r),i(this._sucs[r],t),this._in[t][c]=s,this._out[r][c]=s,this._edgeCount++,this},o.prototype.edge=function(n,r,t){var e=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,n,r,t);return this._edgeLabels[e]},o.prototype.hasEdge=function(r,t,e){var o=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,r,t,e);return n.has(this._edgeLabels,o)},o.prototype.removeEdge=function(n,r,t){var e=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,n,r,t),o=this._edgeObjs[e];return o&&(n=o.v,r=o.w,delete this._edgeLabels[e],delete this._edgeObjs[e],u(this._preds[r],n),u(this._sucs[n],r),delete this._in[r][e],delete this._out[n][e],this._edgeCount--),this},o.prototype.inEdges=function(r,t){var e=this._in[r];if(e){var o=n.values(e);return t?n.filter(o,(function(n){return n.v===t})):o}},o.prototype.outEdges=function(r,t){var e=this._out[r];if(e){var o=n.values(e);return t?n.filter(o,(function(n){return n.w===t})):o}},o.prototype.nodeEdges=function(n,r){var t=this.inEdges(n,r);if(t)return t.concat(this.outEdges(n,r))},ra}function dc(){return ua?ia:(ua=1,ia={Graph:sc(),version:oa?ea:(oa=1,ea=\"2.1.8\")})}function hc(){if(fa)return aa;fa=1;var n=cc(),r=sc();function t(r){return n.map(r.nodes(),(function(t){var e=r.node(t),o=r.parent(t),i={v:t};return n.isUndefined(e)||(i.value=e),n.isUndefined(o)||(i.parent=o),i}))}function e(r){return n.map(r.edges(),(function(t){var e=r.edge(t),o={v:t.v,w:t.w};return n.isUndefined(t.name)||(o.name=t.name),n.isUndefined(e)||(o.value=e),o}))}return aa={write:function(r){var o={options:{directed:r.isDirected(),multigraph:r.isMultigraph(),compound:r.isCompound()},nodes:t(r),edges:e(r)};n.isUndefined(r.graph())||(o.value=n.clone(r.graph()));return o},read:function(t){var e=new r(t.options).setGraph(t.value);return n.each(t.nodes,(function(n){e.setNode(n.v,n.value),n.parent&&e.setParent(n.v,n.parent)})),n.each(t.edges,(function(n){e.setEdge({v:n.v,w:n.w,name:n.name},n.value)})),e}}}function vc(){if(sa)return ca;sa=1;var n=cc();return ca=function(r){var t,e={},o=[];function i(o){n.has(e,o)||(e[o]=!0,t.push(o),n.each(r.successors(o),i),n.each(r.predecessors(o),i))}return n.each(r.nodes(),(function(n){t=[],i(n),t.length&&o.push(t)})),o},ca}function lc(){if(ha)return da;ha=1;var n=cc();function r(){this._arr=[],this._keyIndices={}}return da=r,r.prototype.size=function(){return this._arr.length},r.prototype.keys=function(){return this._arr.map((function(n){return n.key}))},r.prototype.has=function(r){return n.has(this._keyIndices,r)},r.prototype.priority=function(n){var r=this._keyIndices[n];if(void 0!==r)return this._arr[r].priority},r.prototype.min=function(){if(0===this.size())throw new Error(\"Queue underflow\");return this._arr[0].key},r.prototype.add=function(r,t){var e=this._keyIndices;if(r=String(r),!n.has(e,r)){var o=this._arr,i=o.length;return e[r]=i,o.push({key:r,priority:t}),this._decrease(i),!0}return!1},r.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},r.prototype.decrease=function(n,r){var t=this._keyIndices[n];if(r>this._arr[t].priority)throw new Error(\"New priority is greater than current priority. Key: \"+n+\" Old: \"+this._arr[t].priority+\" New: \"+r);this._arr[t].priority=r,this._decrease(t)},r.prototype._heapify=function(n){var r=this._arr,t=2*n,e=t+1,o=n;t<r.length&&(o=r[t].priority<r[o].priority?t:o,e<r.length&&(o=r[e].priority<r[o].priority?e:o),o!==n&&(this._swap(n,o),this._heapify(o)))},r.prototype._decrease=function(n){for(var r,t=this._arr,e=t[n].priority;0!==n&&!(t[r=n>>1].priority<e);)this._swap(n,r),n=r},r.prototype._swap=function(n,r){var t=this._arr,e=this._keyIndices,o=t[n],i=t[r];t[n]=i,t[r]=o,e[i.key]=n,e[o.key]=r},da}function pc(){if(la)return va;la=1;var n=cc(),r=lc();va=function(n,e,o,i){return function(n,t,e,o){var i,u,a={},f=new r,c=function(n){var r=n.v!==i?n.v:n.w,t=a[r],o=e(n),c=u.distance+o;if(o<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+n+\" Weight: \"+o);c<t.distance&&(t.distance=c,t.predecessor=i,f.decrease(r,c))};n.nodes().forEach((function(n){var r=n===t?0:Number.POSITIVE_INFINITY;a[n]={distance:r},f.add(n,r)}));for(;f.size()>0&&(i=f.removeMin(),(u=a[i]).distance!==Number.POSITIVE_INFINITY);)o(i).forEach(c);return a}(n,String(e),o||t,i||function(r){return n.outEdges(r)})};var t=n.constant(1);return va}function gc(){if(ga)return pa;ga=1;var n=pc(),r=cc();return pa=function(t,e,o){return r.transform(t.nodes(),(function(r,i){r[i]=n(t,i,e,o)}),{})}}function yc(){if(ba)return ya;ba=1;var n=cc();return ya=function(r){var t=0,e=[],o={},i=[];function u(a){var f=o[a]={onStack:!0,lowlink:t,index:t++};if(e.push(a),r.successors(a).forEach((function(r){n.has(o,r)?o[r].onStack&&(f.lowlink=Math.min(f.lowlink,o[r].index)):(u(r),f.lowlink=Math.min(f.lowlink,o[r].lowlink))})),f.lowlink===f.index){var c,s=[];do{c=e.pop(),o[c].onStack=!1,s.push(c)}while(a!==c);i.push(s)}}return r.nodes().forEach((function(r){n.has(o,r)||u(r)})),i},ya}function bc(){if(_a)return ma;_a=1;var n=cc(),r=yc();return ma=function(t){return n.filter(r(t),(function(n){return n.length>1||1===n.length&&t.hasEdge(n[0],n[0])}))}}function mc(){if(Ea)return wa;Ea=1;var n=cc();wa=function(n,t,e){return function(n,r,t){var e={},o=n.nodes();return o.forEach((function(n){e[n]={},e[n][n]={distance:0},o.forEach((function(r){n!==r&&(e[n][r]={distance:Number.POSITIVE_INFINITY})})),t(n).forEach((function(t){var o=t.v===n?t.w:t.v,i=r(t);e[n][o]={distance:i,predecessor:n}}))})),o.forEach((function(n){var r=e[n];o.forEach((function(t){var i=e[t];o.forEach((function(t){var e=i[n],o=r[t],u=i[t],a=e.distance+o.distance;a<u.distance&&(u.distance=a,u.predecessor=o.predecessor)}))}))})),e}(n,t||r,e||function(r){return n.outEdges(r)})};var r=n.constant(1);return wa}function _c(){if(ka)return ja;ka=1;var n=cc();function r(r){var e={},o={},i=[];if(n.each(r.sinks(),(function u(a){if(n.has(o,a))throw new t;n.has(e,a)||(o[a]=!0,e[a]=!0,n.each(r.predecessors(a),u),delete o[a],i.push(a))})),n.size(e)!==r.nodeCount())throw new t;return i}function t(){}return ja=r,r.CycleException=t,t.prototype=new Error,ja}function wc(){if(Na)return xa;Na=1;var n=_c();return xa=function(r){try{n(r)}catch(r){if(r instanceof n.CycleException)return!1;throw r}return!0}}function Ec(){if(Ia)return Oa;Ia=1;var n=cc();function r(t,e,o,i,u,a){n.has(i,e)||(i[e]=!0,o||a.push(e),n.each(u(e),(function(n){r(t,n,o,i,u,a)})),o&&a.push(e))}return Oa=function(t,e,o){n.isArray(e)||(e=[e]);var i=(t.isDirected()?t.successors:t.neighbors).bind(t),u=[],a={};return n.each(e,(function(n){if(!t.hasNode(n))throw new Error(\"Graph does not have node: \"+n);r(t,n,\"post\"===o,a,i,u)})),u},Oa}function jc(){if(Aa)return Ca;Aa=1;var n=Ec();return Ca=function(r,t){return n(r,t,\"post\")}}function kc(){if(La)return Ma;La=1;var n=Ec();return Ma=function(r,t){return n(r,t,\"pre\")}}function xc(){if(Sa)return Pa;Sa=1;var n=cc(),r=sc(),t=lc();return Pa=function(e,o){var i,u=new r,a={},f=new t;function c(n){var r=n.v===i?n.w:n.v,t=f.priority(r);if(void 0!==t){var e=o(n);e<t&&(a[r]=i,f.decrease(r,e))}}if(0===e.nodeCount())return u;n.each(e.nodes(),(function(n){f.add(n,Number.POSITIVE_INFINITY),u.setNode(n)})),f.decrease(e.nodes()[0],0);var s=!1;for(;f.size()>0;){if(i=f.removeMin(),n.has(a,i))u.setEdge(i,a[i]);else{if(s)throw new Error(\"Input graph is not connected: \"+e);s=!0}e.nodeEdges(i).forEach(c)}return u}}Ba.exports;try{Da=function(){if(Fa)return za;Fa=1;var n=dc();return za={Graph:n.Graph,json:hc(),alg:Ra?Ta:(Ra=1,Ta={components:vc(),dijkstra:pc(),dijkstraAll:gc(),findCycles:bc(),floydWarshall:mc(),isAcyclic:wc(),postorder:jc(),preorder:kc(),prim:xc(),tarjan:yc(),topsort:_c()}),version:n.version}}()}catch(n){}Da||(Da=window.graphlib);var Nc,Oc,Ic,Cc,Ac,Mc,Lc,Pc,Sc,Tc,Rc,zc,Fc,Dc,Bc,Uc,Gc,Vc,qc,$c,Yc,Wc,Jc,Kc,Qc,Hc,Xc,Zc,ns,rs,ts,es,os,is,us,as,fs,cs,ss,ds,hs,vs,ls,ps,gs,ys,bs,ms,_s,ws,Es,js,ks,xs,Ns,Os,Is,Cs,As,Ms,Ls,Ps,Ss,Ts,Rs,zs,Fs,Ds,Bs,Us,Gs,Vs,qs,$s,Ys,Ws,Js,Ks,Qs,Hs,Xs,Zs,nd,rd,td,ed,od,id,ud,ad,fd,cd,sd,dd=Da;function hd(){if(Cc)return Ic;Cc=1;var n=er(),r=xt(),t=Gr(),e=sr();return Ic=function(o,i,u){if(!e(u))return!1;var a=typeof i;return!!(\"number\"==a?r(u)&&t(i,u.length):\"string\"==a&&i in u)&&n(u[i],o)}}function vd(){if(zc)return Rc;zc=1;var n=function(){if(Tc)return Sc;Tc=1;var n=/\\s/;return Sc=function(r){for(var t=r.length;t--&&n.test(r.charAt(t)););return t}}(),r=/^\\s+/;return Rc=function(t){return t?t.slice(0,n(t)+1).replace(r,\"\"):t}}function ld(){if(Uc)return Bc;Uc=1;var n=function(){if(Dc)return Fc;Dc=1;var n=vd(),r=sr(),t=If(),e=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,i=/^0o[0-7]+$/i,u=parseInt;return Fc=function(a){if(\"number\"==typeof a)return a;if(t(a))return NaN;if(r(a)){var f=\"function\"==typeof a.valueOf?a.valueOf():a;a=r(f)?f+\"\":f}if(\"string\"!=typeof a)return 0===a?a:+a;a=n(a);var c=o.test(a);return c||i.test(a)?u(a.slice(2),c?2:8):e.test(a)?NaN:+a}}(),r=1/0;return Bc=function(t){return t?(t=n(t))===r||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}}function pd(){if($c)return qc;$c=1;var n=tc(),r=Uf(),t=function(){if(Vc)return Gc;Vc=1;var n=ld();return Gc=function(r){var t=n(r),e=t%1;return t==t?e?t-e:t:0}}(),e=Math.max;return qc=function(o,i,u){var a=null==o?0:o.length;if(!a)return-1;var f=null==u?0:t(u);return f<0&&(f=e(a+f,0)),n(o,r(i,3),f)}}function gd(){if(Kc)return Jc;Kc=1;var n=Xf();return Jc=function(r){return(null==r?0:r.length)?n(r,1):[]}}function yd(){if(es)return ts;es=1;var n=If();return ts=function(r,t,e){for(var o=-1,i=r.length;++o<i;){var u=r[o],a=t(u);if(null!=a&&(void 0===f?a==a&&!n(a):e(a,f)))var f=a,c=u}return c}}function bd(){if(cs)return fs;cs=1;var n=jr(),r=er();return fs=function(t,e,o){(void 0!==o&&!r(t[e],o)||void 0===o&&!(e in t))&&n(t,e,o)}}function md(){if(vs)return hs;return vs=1,hs=function(n,r){if((\"constructor\"!==r||\"function\"!=typeof n[r])&&\"__proto__\"!=r)return n[r]}}function _d(){if(ys)return gs;ys=1;var n=bd(),r=Ua(),t=rf(),e=Ga(),o=of(),i=Or(),u=Ir(),a=uc(),f=Ur(),c=dr(),s=sr(),d=function(){if(ds)return ss;ds=1;var n=cr(),r=Wa(),t=Nr(),e=Function.prototype,o=Object.prototype,i=e.toString,u=o.hasOwnProperty,a=i.call(Object);return ss=function(e){if(!t(e)||\"[object Object]\"!=n(e))return!1;var o=r(e);if(null===o)return!0;var f=u.call(o,\"constructor\")&&o.constructor;return\"function\"==typeof f&&f instanceof f&&i.call(f)==a}}(),h=_t(),v=md(),l=function(){if(ps)return ls;ps=1;var n=xr(),r=It();return ls=function(t){return n(t,r(t))}}();return gs=function(p,g,y,b,m,_,w){var E=v(p,y),j=v(g,y),k=w.get(j);if(k)n(p,y,k);else{var x=_?_(E,j,y+\"\",p,g,w):void 0,N=void 0===x;if(N){var O=u(j),I=!O&&f(j),C=!O&&!I&&h(j);x=j,O||I||C?u(E)?x=E:a(E)?x=e(E):I?(N=!1,x=r(j,!0)):C?(N=!1,x=t(j,!0)):x=[]:d(j)||i(j)?(x=E,i(E)?x=l(E):s(E)&&!c(E)||(x=o(j))):N=!1}N&&(w.set(j,x),m(x,j,b,_,w),w.delete(j)),n(p,y,x)}}}function wd(){if(xs)return ks;return xs=1,ks=function(n,r){return n<r}}function Ed(){if(Ts)return Ss;Ts=1;var n=Tf(),r=function(){if(Ps)return Ls;Ps=1;var n=kr(),r=Pf(),t=Gr(),e=sr(),o=Sf();return Ls=function(i,u,a,f){if(!e(i))return i;for(var c=-1,s=(u=r(u,i)).length,d=s-1,h=i;null!=h&&++c<s;){var v=o(u[c]),l=a;if(\"__proto__\"===v||\"constructor\"===v||\"prototype\"===v)return i;if(c!=d){var p=h[v];void 0===(l=f?f(p,v,h):void 0)&&(l=e(p)?p:t(u[c+1])?[]:{})}n(h,v,l),h=h[v]}return i}}(),t=Pf();return Ss=function(e,o,i){for(var u=-1,a=o.length,f={};++u<a;){var c=o[u],s=n(e,c);i(s,c)&&r(f,t(c,e),s)}return f}}function jd(){if($s)return qs;$s=1;var n=function(){if(Vs)return Gs;Vs=1;var n=Math.ceil,r=Math.max;return Gs=function(t,e,o,i){for(var u=-1,a=r(n((e-t)/(o||1)),0),f=Array(a);a--;)f[i?a:++u]=t,t+=o;return f}}(),r=hd(),t=ld();return qs=function(e){return function(o,i,u){return u&&\"number\"!=typeof u&&r(o,i,u)&&(i=u=void 0),o=t(o),void 0===i?(i=o,o=0):i=t(i),u=void 0===u?o<i?1:-1:t(u),n(o,i,u,e)}}}function kd(){if(Zs)return Xs;Zs=1;var n=function(){if(Hs)return Qs;Hs=1;var n=If();return Qs=function(r,t){if(r!==t){var e=void 0!==r,o=null===r,i=r==r,u=n(r),a=void 0!==t,f=null===t,c=t==t,s=n(t);if(!f&&!s&&!u&&r>t||u&&a&&c&&!f&&!s||o&&a&&c||!e&&c||!i)return 1;if(!o&&!u&&!s&&r<t||s&&e&&i&&!o&&!u||f&&e&&i||!a&&i||!c)return-1}return 0}}();return Xs=function(r,t,e){for(var o=-1,i=r.criteria,u=t.criteria,a=i.length,f=e.length;++o<a;){var c=n(i[o],u[o]);if(c)return o>=f?c:c*(\"desc\"==e[o]?-1:1)}return r.index-t.index}}function xd(){if(rd)return nd;rd=1;var n=Mf(),r=Tf(),t=Uf(),e=Yf(),o=Ks?Js:(Ks=1,Js=function(n,r){var t=n.length;for(n.sort(r);t--;)n[t]=n[t].value;return n}),i=qr(),u=kd(),a=lf(),f=Ir();return nd=function(c,s,d){s=s.length?n(s,(function(n){return f(n)?function(t){return r(t,1===n.length?n[0]:n)}:n})):[a];var h=-1;s=n(s,i(t));var v=e(c,(function(r,t,e){return{criteria:n(s,(function(n){return n(r)})),index:++h,value:r}}));return o(v,(function(n,r){return u(n,r,d)}))}}try{sd={cloneDeep:function(){if(Oc)return Nc;Oc=1;var n=ff();return Nc=function(r){return n(r,5)}}(),constant:sf(),defaults:function(){if(Mc)return Ac;Mc=1;var n=rc(),r=er(),t=hd(),e=It(),o=Object.prototype,i=o.hasOwnProperty,u=n((function(n,u){n=Object(n);var a=-1,f=u.length,c=f>2?u[2]:void 0;for(c&&t(u[0],u[1],c)&&(f=1);++a<f;)for(var s=u[a],d=e(s),h=-1,v=d.length;++h<v;){var l=d[h],p=n[l];(void 0===p||r(p,o[l])&&!i.call(n,l))&&(n[l]=s[l])}return n}));return Ac=u}(),each:yf(),filter:Gf(),find:function(){if(Wc)return Yc;Wc=1;var n=function(){if(Pc)return Lc;Pc=1;var n=Uf(),r=xt(),t=Nt();return Lc=function(e){return function(o,i,u){var a=Object(o);if(!r(o)){var f=n(i,3);o=t(o),i=function(n){return f(a[n],n,a)}}var c=e(o,i,u);return c>-1?a[f?o[c]:c]:void 0}}}()(pd());return Yc=n}(),flatten:gd(),forEach:gf(),forIn:function(){if(Hc)return Qc;Hc=1;var n=df(),r=pf(),t=It();return Qc=function(e,o){return null==e?e:n(e,r(o),t)}}(),has:Vf(),isUndefined:$f(),last:Zc?Xc:(Zc=1,Xc=function(n){var r=null==n?0:n.length;return r?n[r-1]:void 0}),map:Wf(),mapValues:function(){if(rs)return ns;rs=1;var n=jr(),r=hf(),t=Uf();return ns=function(e,o){var i={};return o=t(o,3),r(e,(function(r,t,e){n(i,t,o(r,t,e))})),i}}(),max:function(){if(as)return us;as=1;var n=yd(),r=is?os:(is=1,os=function(n,r){return n>r}),t=lf();return us=function(e){return e&&e.length?n(e,t,r):void 0}}(),merge:function(){if(js)return Es;js=1;var n=function(){if(ms)return bs;ms=1;var n=_r(),r=bd(),t=df(),e=_d(),o=sr(),i=It(),u=md();return bs=function a(f,c,s,d,h){f!==c&&t(c,(function(t,i){if(h||(h=new n),o(t))e(f,c,i,s,a,d,h);else{var v=d?d(u(f,i),t,i+\"\",f,c,h):void 0;void 0===v&&(v=t),r(f,i,v)}}),i)},bs}(),r=function(){if(ws)return _s;ws=1;var n=rc(),r=hd();return _s=function(t){return n((function(n,e){var o=-1,i=e.length,u=i>1?e[i-1]:void 0,a=i>2?e[2]:void 0;for(u=t.length>3&&\"function\"==typeof u?(i--,u):void 0,a&&r(e[0],e[1],a)&&(u=i<3?void 0:u,i=1),n=Object(n);++o<i;){var f=e[o];f&&t(n,f,o,u)}return n}))}}()((function(r,t,e){n(r,t,e)}));return Es=r}(),min:function(){if(Os)return Ns;Os=1;var n=yd(),r=wd(),t=lf();return Ns=function(e){return e&&e.length?n(e,t,r):void 0}}(),minBy:function(){if(Cs)return Is;Cs=1;var n=yd(),r=Uf(),t=wd();return Is=function(e,o){return e&&e.length?n(e,r(o,2),t):void 0}}(),now:function(){if(Ms)return As;Ms=1;var n=ar();return As=function(){return n.Date.now()}}(),pick:function(){if(Us)return Bs;Us=1;var n=function(){if(zs)return Rs;zs=1;var n=Ed(),r=zf();return Rs=function(t,e){return n(t,e,(function(n,e){return r(t,e)}))}}(),r=function(){if(Ds)return Fs;Ds=1;var n=gd(),r=Zf(),t=nc();return Fs=function(e){return t(r(e,void 0,n),e+\"\")}}()((function(r,t){return null==r?{}:n(r,t)}));return Bs=r}(),range:function(){if(Ws)return Ys;Ws=1;var n=jd()();return Ys=n}(),reduce:Jf(),sortBy:function(){if(ed)return td;ed=1;var n=Xf(),r=xd(),t=rc(),e=hd(),o=t((function(t,o){if(null==t)return[];var i=o.length;return i>1&&e(t,o[0],o[1])?o=[]:i>2&&e(o[0],o[1],o[2])&&(o=[o[0]]),r(t,n(o,1),[])}));return td=o}(),uniqueId:function(){if(id)return od;id=1;var n=Lf(),r=0;return od=function(t){var e=++r;return n(t)+e}}(),values:fc(),zipObject:function(){if(cd)return fd;cd=1;var n=kr(),r=ad?ud:(ad=1,ud=function(n,r,t){for(var e=-1,o=n.length,i=r.length,u={};++e<o;){var a=e<i?r[e]:void 0;t(u,n[e],a)}return u});return fd=function(t,e){return r(t||[],e||[],n)}}()}}catch(n){}sd||(sd=window._);var Nd=sd,Od=Id;function Id(){var n={};n._next=n._prev=n,this._sentinel=n}function Cd(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function Ad(n,r){if(\"_next\"!==n&&\"_prev\"!==n)return r}Id.prototype.dequeue=function(){var n=this._sentinel,r=n._prev;if(r!==n)return Cd(r),r},Id.prototype.enqueue=function(n){var r=this._sentinel;n._prev&&n._next&&Cd(n),n._next=r._next,r._next._prev=n,r._next=n,n._prev=r},Id.prototype.toString=function(){for(var n=[],r=this._sentinel,t=r._prev;t!==r;)n.push(JSON.stringify(t,Ad)),t=t._prev;return\"[\"+n.join(\", \")+\"]\"};var Md=Nd,Ld=dd.Graph,Pd=Od,Sd=function(n,r){if(n.nodeCount()<=1)return[];var t=function(n,r){var t=new Ld,e=0,o=0;Md.forEach(n.nodes(),(function(n){t.setNode(n,{v:n,in:0,out:0})})),Md.forEach(n.edges(),(function(n){var i=t.edge(n.v,n.w)||0,u=r(n),a=i+u;t.setEdge(n.v,n.w,a),o=Math.max(o,t.node(n.v).out+=u),e=Math.max(e,t.node(n.w).in+=u)}));var i=Md.range(o+e+3).map((function(){return new Pd})),u=e+1;return Md.forEach(t.nodes(),(function(n){zd(i,u,t.node(n))})),{graph:t,buckets:i,zeroIdx:u}}(n,r||Td),e=function(n,r,t){var e,o=[],i=r[r.length-1],u=r[0];for(;n.nodeCount();){for(;e=u.dequeue();)Rd(n,r,t,e);for(;e=i.dequeue();)Rd(n,r,t,e);if(n.nodeCount())for(var a=r.length-2;a>0;--a)if(e=r[a].dequeue()){o=o.concat(Rd(n,r,t,e,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return Md.flatten(Md.map(e,(function(r){return n.outEdges(r.v,r.w)})),!0)},Td=Md.constant(1);function Rd(n,r,t,e,o){var i=o?[]:void 0;return Md.forEach(n.inEdges(e.v),(function(e){var u=n.edge(e),a=n.node(e.v);o&&i.push({v:e.v,w:e.w}),a.out-=u,zd(r,t,a)})),Md.forEach(n.outEdges(e.v),(function(e){var o=n.edge(e),i=e.w,u=n.node(i);u.in-=o,zd(r,t,u)})),n.removeNode(e.v),i}function zd(n,r,t){t.out?t.in?n[t.out-t.in+r].enqueue(t):n[n.length-1].enqueue(t):n[0].enqueue(t)}var Fd=Nd,Dd=Sd,Bd={run:function(n){var r=\"greedy\"===n.graph().acyclicer?Dd(n,function(n){return function(r){return n.edge(r).weight}}(n)):function(n){var r=[],t={},e={};function o(i){Fd.has(e,i)||(e[i]=!0,t[i]=!0,Fd.forEach(n.outEdges(i),(function(n){Fd.has(t,n.w)?r.push(n):o(n.w)})),delete t[i])}return Fd.forEach(n.nodes(),o),r}(n);Fd.forEach(r,(function(r){var t=n.edge(r);n.removeEdge(r),t.forwardName=r.name,t.reversed=!0,n.setEdge(r.w,r.v,t,Fd.uniqueId(\"rev\"))}))},undo:function(n){Fd.forEach(n.edges(),(function(r){var t=n.edge(r);if(t.reversed){n.removeEdge(r);var e=t.forwardName;delete t.reversed,delete t.forwardName,n.setEdge(r.w,r.v,t,e)}}))}};var Ud=Nd,Gd=dd.Graph,Vd={addDummyNode:qd,simplify:function(n){var r=(new Gd).setGraph(n.graph());return Ud.forEach(n.nodes(),(function(t){r.setNode(t,n.node(t))})),Ud.forEach(n.edges(),(function(t){var e=r.edge(t.v,t.w)||{weight:0,minlen:1},o=n.edge(t);r.setEdge(t.v,t.w,{weight:e.weight+o.weight,minlen:Math.max(e.minlen,o.minlen)})})),r},asNonCompoundGraph:function(n){var r=new Gd({multigraph:n.isMultigraph()}).setGraph(n.graph());return Ud.forEach(n.nodes(),(function(t){n.children(t).length||r.setNode(t,n.node(t))})),Ud.forEach(n.edges(),(function(t){r.setEdge(t,n.edge(t))})),r},successorWeights:function(n){var r=Ud.map(n.nodes(),(function(r){var t={};return Ud.forEach(n.outEdges(r),(function(r){t[r.w]=(t[r.w]||0)+n.edge(r).weight})),t}));return Ud.zipObject(n.nodes(),r)},predecessorWeights:function(n){var r=Ud.map(n.nodes(),(function(r){var t={};return Ud.forEach(n.inEdges(r),(function(r){t[r.v]=(t[r.v]||0)+n.edge(r).weight})),t}));return Ud.zipObject(n.nodes(),r)},intersectRect:function(n,r){var t,e,o=n.x,i=n.y,u=r.x-o,a=r.y-i,f=n.width/2,c=n.height/2;if(!u&&!a)throw new Error(\"Not possible to find intersection inside of the rectangle\");Math.abs(a)*f>Math.abs(u)*c?(a<0&&(c=-c),t=c*u/a,e=c):(u<0&&(f=-f),t=f,e=f*a/u);return{x:o+t,y:i+e}},buildLayerMatrix:function(n){var r=Ud.map(Ud.range($d(n)+1),(function(){return[]}));return Ud.forEach(n.nodes(),(function(t){var e=n.node(t),o=e.rank;Ud.isUndefined(o)||(r[o][e.order]=t)})),r},normalizeRanks:function(n){var r=Ud.min(Ud.map(n.nodes(),(function(r){return n.node(r).rank})));Ud.forEach(n.nodes(),(function(t){var e=n.node(t);Ud.has(e,\"rank\")&&(e.rank-=r)}))},removeEmptyRanks:function(n){var r=Ud.min(Ud.map(n.nodes(),(function(r){return n.node(r).rank}))),t=[];Ud.forEach(n.nodes(),(function(e){var o=n.node(e).rank-r;t[o]||(t[o]=[]),t[o].push(e)}));var e=0,o=n.graph().nodeRankFactor;Ud.forEach(t,(function(r,t){Ud.isUndefined(r)&&t%o!=0?--e:e&&Ud.forEach(r,(function(r){n.node(r).rank+=e}))}))},addBorderNode:function(n,r,t,e){var o={width:0,height:0};arguments.length>=4&&(o.rank=t,o.order=e);return qd(n,\"border\",o,r)},maxRank:$d,partition:function(n,r){var t={lhs:[],rhs:[]};return Ud.forEach(n,(function(n){r(n)?t.lhs.push(n):t.rhs.push(n)})),t},time:function(n,r){var t=Ud.now();try{return r()}finally{console.log(n+\" time: \"+(Ud.now()-t)+\"ms\")}},notime:function(n,r){return r()}};function qd(n,r,t,e){var o;do{o=Ud.uniqueId(e)}while(n.hasNode(o));return t.dummy=r,n.setNode(o,t),o}function $d(n){return Ud.max(Ud.map(n.nodes(),(function(r){var t=n.node(r).rank;if(!Ud.isUndefined(t))return t})))}var Yd=Nd,Wd=Vd,Jd={run:function(n){n.graph().dummyChains=[],Yd.forEach(n.edges(),(function(r){!function(n,r){var t,e,o,i=r.v,u=n.node(i).rank,a=r.w,f=n.node(a).rank,c=r.name,s=n.edge(r),d=s.labelRank;if(f===u+1)return;for(n.removeEdge(r),o=0,++u;u<f;++o,++u)s.points=[],e={width:0,height:0,edgeLabel:s,edgeObj:r,rank:u},t=Wd.addDummyNode(n,\"edge\",e,\"_d\"),u===d&&(e.width=s.width,e.height=s.height,e.dummy=\"edge-label\",e.labelpos=s.labelpos),n.setEdge(i,t,{weight:s.weight},c),0===o&&n.graph().dummyChains.push(t),i=t;n.setEdge(i,a,{weight:s.weight},c)}(n,r)}))},undo:function(n){Yd.forEach(n.graph().dummyChains,(function(r){var t,e=n.node(r),o=e.edgeLabel;for(n.setEdge(e.edgeObj,o);e.dummy;)t=n.successors(r)[0],n.removeNode(r),o.points.push({x:e.x,y:e.y}),\"edge-label\"===e.dummy&&(o.x=e.x,o.y=e.y,o.width=e.width,o.height=e.height),r=t,e=n.node(r)}))}};var Kd=Nd,Qd={longestPath:function(n){var r={};Kd.forEach(n.sources(),(function t(e){var o=n.node(e);if(Kd.has(r,e))return o.rank;r[e]=!0;var i=Kd.min(Kd.map(n.outEdges(e),(function(r){return t(r.w)-n.edge(r).minlen})));return i!==Number.POSITIVE_INFINITY&&null!=i||(i=0),o.rank=i}))},slack:function(n,r){return n.node(r.w).rank-n.node(r.v).rank-n.edge(r).minlen}};var Hd=Nd,Xd=dd.Graph,Zd=Qd.slack,nh=function(n){var r,t,e=new Xd({directed:!1}),o=n.nodes()[0],i=n.nodeCount();e.setNode(o,{});for(;rh(e,n)<i;)r=th(e,n),t=e.hasNode(r.v)?Zd(n,r):-Zd(n,r),eh(e,n,t);return e};function rh(n,r){return Hd.forEach(n.nodes(),(function t(e){Hd.forEach(r.nodeEdges(e),(function(o){var i=o.v,u=e===i?o.w:i;n.hasNode(u)||Zd(r,o)||(n.setNode(u,{}),n.setEdge(e,u,{}),t(u))}))})),n.nodeCount()}function th(n,r){return Hd.minBy(r.edges(),(function(t){if(n.hasNode(t.v)!==n.hasNode(t.w))return Zd(r,t)}))}function eh(n,r,t){Hd.forEach(n.nodes(),(function(n){r.node(n).rank+=t}))}var oh=Nd,ih=nh,uh=Qd.slack,ah=Qd.longestPath,fh=dd.alg.preorder,ch=dd.alg.postorder,sh=Vd.simplify,dh=hh;function hh(n){n=sh(n),ah(n);var r,t=ih(n);for(ph(t),vh(t,n);r=yh(t);)mh(t,n,r,bh(t,n,r))}function vh(n,r){var t=ch(n,n.nodes());t=t.slice(0,t.length-1),oh.forEach(t,(function(t){!function(n,r,t){var e=n.node(t),o=e.parent;n.edge(t,o).cutvalue=lh(n,r,t)}(n,r,t)}))}function lh(n,r,t){var e=n.node(t).parent,o=!0,i=r.edge(t,e),u=0;return i||(o=!1,i=r.edge(e,t)),u=i.weight,oh.forEach(r.nodeEdges(t),(function(i){var a,f,c=i.v===t,s=c?i.w:i.v;if(s!==e){var d=c===o,h=r.edge(i).weight;if(u+=d?h:-h,a=t,f=s,n.hasEdge(a,f)){var v=n.edge(t,s).cutvalue;u+=d?-v:v}}})),u}function ph(n,r){arguments.length<2&&(r=n.nodes()[0]),gh(n,{},1,r)}function gh(n,r,t,e,o){var i=t,u=n.node(e);return r[e]=!0,oh.forEach(n.neighbors(e),(function(o){oh.has(r,o)||(t=gh(n,r,t,o,e))})),u.low=i,u.lim=t++,o?u.parent=o:delete u.parent,t}function yh(n){return oh.find(n.edges(),(function(r){return n.edge(r).cutvalue<0}))}function bh(n,r,t){var e=t.v,o=t.w;r.hasEdge(e,o)||(e=t.w,o=t.v);var i=n.node(e),u=n.node(o),a=i,f=!1;i.lim>u.lim&&(a=u,f=!0);var c=oh.filter(r.edges(),(function(r){return f===_h(n,n.node(r.v),a)&&f!==_h(n,n.node(r.w),a)}));return oh.minBy(c,(function(n){return uh(r,n)}))}function mh(n,r,t,e){var o=t.v,i=t.w;n.removeEdge(o,i),n.setEdge(e.v,e.w,{}),ph(n),vh(n,r),function(n,r){var t=oh.find(n.nodes(),(function(n){return!r.node(n).parent})),e=fh(n,t);e=e.slice(1),oh.forEach(e,(function(t){var e=n.node(t).parent,o=r.edge(t,e),i=!1;o||(o=r.edge(e,t),i=!0),r.node(t).rank=r.node(e).rank+(i?o.minlen:-o.minlen)}))}(n,r)}function _h(n,r,t){return t.low<=r.lim&&r.lim<=t.lim}hh.initLowLimValues=ph,hh.initCutValues=vh,hh.calcCutValue=lh,hh.leaveEdge=yh,hh.enterEdge=bh,hh.exchangeEdges=mh;var wh=Qd.longestPath,Eh=nh,jh=dh,kh=function(n){switch(n.graph().ranker){case\"network-simplex\":default:Nh(n);break;case\"tight-tree\":!function(n){wh(n),Eh(n)}(n);break;case\"longest-path\":xh(n)}};var xh=wh;function Nh(n){jh(n)}var Oh=Nd,Ih=function(n){var r=function(n){var r={},t=0;function e(o){var i=t;Oh.forEach(n.children(o),e),r[o]={low:i,lim:t++}}return Oh.forEach(n.children(),e),r}(n);Oh.forEach(n.graph().dummyChains,(function(t){for(var e=n.node(t),o=e.edgeObj,i=function(n,r,t,e){var o,i,u=[],a=[],f=Math.min(r[t].low,r[e].low),c=Math.max(r[t].lim,r[e].lim);o=t;do{o=n.parent(o),u.push(o)}while(o&&(r[o].low>f||c>r[o].lim));i=o,o=e;for(;(o=n.parent(o))!==i;)a.push(o);return{path:u.concat(a.reverse()),lca:i}}(n,r,o.v,o.w),u=i.path,a=i.lca,f=0,c=u[f],s=!0;t!==o.w;){if(e=n.node(t),s){for(;(c=u[f])!==a&&n.node(c).maxRank<e.rank;)f++;c===a&&(s=!1)}if(!s){for(;f<u.length-1&&n.node(c=u[f+1]).minRank<=e.rank;)f++;c=u[f]}n.setParent(t,c),t=n.successors(t)[0]}}))};var Ch=Nd,Ah=Vd,Mh={run:function(n){var r=Ah.addDummyNode(n,\"root\",{},\"_root\"),t=function(n){var r={};function t(e,o){var i=n.children(e);i&&i.length&&Ch.forEach(i,(function(n){t(n,o+1)})),r[e]=o}return Ch.forEach(n.children(),(function(n){t(n,1)})),r}(n),e=Ch.max(Ch.values(t))-1,o=2*e+1;n.graph().nestingRoot=r,Ch.forEach(n.edges(),(function(r){n.edge(r).minlen*=o}));var i=function(n){return Ch.reduce(n.edges(),(function(r,t){return r+n.edge(t).weight}),0)}(n)+1;Ch.forEach(n.children(),(function(u){Lh(n,r,o,i,e,t,u)})),n.graph().nodeRankFactor=o},cleanup:function(n){var r=n.graph();n.removeNode(r.nestingRoot),delete r.nestingRoot,Ch.forEach(n.edges(),(function(r){n.edge(r).nestingEdge&&n.removeEdge(r)}))}};function Lh(n,r,t,e,o,i,u){var a=n.children(u);if(a.length){var f=Ah.addBorderNode(n,\"_bt\"),c=Ah.addBorderNode(n,\"_bb\"),s=n.node(u);n.setParent(f,u),s.borderTop=f,n.setParent(c,u),s.borderBottom=c,Ch.forEach(a,(function(a){Lh(n,r,t,e,o,i,a);var s=n.node(a),d=s.borderTop?s.borderTop:a,h=s.borderBottom?s.borderBottom:a,v=s.borderTop?e:2*e,l=d!==h?1:o-i[u]+1;n.setEdge(f,d,{weight:v,minlen:l,nestingEdge:!0}),n.setEdge(h,c,{weight:v,minlen:l,nestingEdge:!0})})),n.parent(u)||n.setEdge(r,f,{weight:0,minlen:o+i[u]})}else u!==r&&n.setEdge(r,u,{weight:0,minlen:t})}var Ph=Nd,Sh=Vd,Th=function(n){Ph.forEach(n.children(),(function r(t){var e=n.children(t),o=n.node(t);if(e.length&&Ph.forEach(e,r),Ph.has(o,\"minRank\")){o.borderLeft=[],o.borderRight=[];for(var i=o.minRank,u=o.maxRank+1;i<u;++i)Rh(n,\"borderLeft\",\"_bl\",t,o,i),Rh(n,\"borderRight\",\"_br\",t,o,i)}}))};function Rh(n,r,t,e,o,i){var u={width:0,height:0,rank:i,borderType:r},a=o[r][i-1],f=Sh.addDummyNode(n,\"border\",u,t);o[r][i]=f,n.setParent(f,e),a&&n.setEdge(a,f,{weight:1})}var zh=Nd,Fh={adjust:function(n){var r=n.graph().rankdir.toLowerCase();\"lr\"!==r&&\"rl\"!==r||Dh(n)},undo:function(n){var r=n.graph().rankdir.toLowerCase();\"bt\"!==r&&\"rl\"!==r||function(n){zh.forEach(n.nodes(),(function(r){Uh(n.node(r))})),zh.forEach(n.edges(),(function(r){var t=n.edge(r);zh.forEach(t.points,Uh),zh.has(t,\"y\")&&Uh(t)}))}(n);\"lr\"!==r&&\"rl\"!==r||(!function(n){zh.forEach(n.nodes(),(function(r){Gh(n.node(r))})),zh.forEach(n.edges(),(function(r){var t=n.edge(r);zh.forEach(t.points,Gh),zh.has(t,\"x\")&&Gh(t)}))}(n),Dh(n))}};function Dh(n){zh.forEach(n.nodes(),(function(r){Bh(n.node(r))})),zh.forEach(n.edges(),(function(r){Bh(n.edge(r))}))}function Bh(n){var r=n.width;n.width=n.height,n.height=r}function Uh(n){n.y=-n.y}function Gh(n){var r=n.x;n.x=n.y,n.y=r}var Vh=Nd,qh=function(n){var r={},t=Vh.filter(n.nodes(),(function(r){return!n.children(r).length})),e=Vh.max(Vh.map(t,(function(r){return n.node(r).rank}))),o=Vh.map(Vh.range(e+1),(function(){return[]}));function i(t){if(!Vh.has(r,t)){r[t]=!0;var e=n.node(t);o[e.rank].push(t),Vh.forEach(n.successors(t),i)}}var u=Vh.sortBy(t,(function(r){return n.node(r).rank}));return Vh.forEach(u,i),o};var $h=Nd,Yh=function(n,r){for(var t=0,e=1;e<r.length;++e)t+=Wh(n,r[e-1],r[e]);return t};function Wh(n,r,t){for(var e=$h.zipObject(t,$h.map(t,(function(n,r){return r}))),o=$h.flatten($h.map(r,(function(r){return $h.sortBy($h.map(n.outEdges(r),(function(r){return{pos:e[r.w],weight:n.edge(r).weight}})),\"pos\")})),!0),i=1;i<t.length;)i<<=1;var u=2*i-1;i-=1;var a=$h.map(new Array(u),(function(){return 0})),f=0;return $h.forEach(o.forEach((function(n){var r=n.pos+i;a[r]+=n.weight;for(var t=0;r>0;)r%2&&(t+=a[r+1]),a[r=r-1>>1]+=n.weight;f+=n.weight*t}))),f}var Jh=Nd;var Kh=Nd;var Qh=Nd,Hh=Vd;function Xh(n,r,t){for(var e;r.length&&(e=Qh.last(r)).i<=t;)r.pop(),n.push(e.vs),t++;return t}var Zh=Nd,nv=function(n,r){return Jh.map(r,(function(r){var t=n.inEdges(r);if(t.length){var e=Jh.reduce(t,(function(r,t){var e=n.edge(t),o=n.node(t.v);return{sum:r.sum+e.weight*o.order,weight:r.weight+e.weight}}),{sum:0,weight:0});return{v:r,barycenter:e.sum/e.weight,weight:e.weight}}return{v:r}}))},rv=function(n,r){var t={};return Kh.forEach(n,(function(n,r){var e=t[n.v]={indegree:0,in:[],out:[],vs:[n.v],i:r};Kh.isUndefined(n.barycenter)||(e.barycenter=n.barycenter,e.weight=n.weight)})),Kh.forEach(r.edges(),(function(n){var r=t[n.v],e=t[n.w];Kh.isUndefined(r)||Kh.isUndefined(e)||(e.indegree++,r.out.push(t[n.w]))})),function(n){var r=[];function t(n){return function(r){r.merged||(Kh.isUndefined(r.barycenter)||Kh.isUndefined(n.barycenter)||r.barycenter>=n.barycenter)&&function(n,r){var t=0,e=0;n.weight&&(t+=n.barycenter*n.weight,e+=n.weight);r.weight&&(t+=r.barycenter*r.weight,e+=r.weight);n.vs=r.vs.concat(n.vs),n.barycenter=t/e,n.weight=e,n.i=Math.min(r.i,n.i),r.merged=!0}(n,r)}}function e(r){return function(t){t.in.push(r),0==--t.indegree&&n.push(t)}}for(;n.length;){var o=n.pop();r.push(o),Kh.forEach(o.in.reverse(),t(o)),Kh.forEach(o.out,e(o))}return Kh.map(Kh.filter(r,(function(n){return!n.merged})),(function(n){return Kh.pick(n,[\"vs\",\"i\",\"barycenter\",\"weight\"])}))}(Kh.filter(t,(function(n){return!n.indegree})))},tv=function(n,r){var t=Hh.partition(n,(function(n){return Qh.has(n,\"barycenter\")})),e=t.lhs,o=Qh.sortBy(t.rhs,(function(n){return-n.i})),i=[],u=0,a=0,f=0;e.sort((c=!!r,function(n,r){return n.barycenter<r.barycenter?-1:n.barycenter>r.barycenter?1:c?r.i-n.i:n.i-r.i})),f=Xh(i,o,f),Qh.forEach(e,(function(n){f+=n.vs.length,i.push(n.vs),u+=n.barycenter*n.weight,a+=n.weight,f=Xh(i,o,f)}));var c;var s={vs:Qh.flatten(i,!0)};a&&(s.barycenter=u/a,s.weight=a);return s},ev=function n(r,t,e,o){var i=r.children(t),u=r.node(t),a=u?u.borderLeft:void 0,f=u?u.borderRight:void 0,c={};a&&(i=Zh.filter(i,(function(n){return n!==a&&n!==f})));var s=nv(r,i);Zh.forEach(s,(function(t){if(r.children(t.v).length){var i=n(r,t.v,e,o);c[t.v]=i,Zh.has(i,\"barycenter\")&&(u=t,a=i,Zh.isUndefined(u.barycenter)?(u.barycenter=a.barycenter,u.weight=a.weight):(u.barycenter=(u.barycenter*u.weight+a.barycenter*a.weight)/(u.weight+a.weight),u.weight+=a.weight))}var u,a}));var d=rv(s,e);!function(n,r){Zh.forEach(n,(function(n){n.vs=Zh.flatten(n.vs.map((function(n){return r[n]?r[n].vs:n})),!0)}))}(d,c);var h=tv(d,o);if(a&&(h.vs=Zh.flatten([a,h.vs,f],!0),r.predecessors(a).length)){var v=r.node(r.predecessors(a)[0]),l=r.node(r.predecessors(f)[0]);Zh.has(h,\"barycenter\")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+v.order+l.order)/(h.weight+2),h.weight+=2}return h};var ov=Nd,iv=dd.Graph,uv=function(n,r,t){var e=function(n){var r;for(;n.hasNode(r=ov.uniqueId(\"_root\")););return r}(n),o=new iv({compound:!0}).setGraph({root:e}).setDefaultNodeLabel((function(r){return n.node(r)}));return ov.forEach(n.nodes(),(function(i){var u=n.node(i),a=n.parent(i);(u.rank===r||u.minRank<=r&&r<=u.maxRank)&&(o.setNode(i),o.setParent(i,a||e),ov.forEach(n[t](i),(function(r){var t=r.v===i?r.w:r.v,e=o.edge(t,i),u=ov.isUndefined(e)?0:e.weight;o.setEdge(t,i,{weight:n.edge(r).weight+u})})),ov.has(u,\"minRank\")&&o.setNode(i,{borderLeft:u.borderLeft[r],borderRight:u.borderRight[r]}))})),o};var av=Nd;var fv=Nd,cv=qh,sv=Yh,dv=ev,hv=uv,vv=function(n,r,t){var e,o={};av.forEach(t,(function(t){for(var i,u,a=n.parent(t);a;){if((i=n.parent(a))?(u=o[i],o[i]=a):(u=e,e=a),u&&u!==a)return void r.setEdge(u,a);a=i}}))},lv=dd.Graph,pv=Vd,gv=function(n){var r=pv.maxRank(n),t=yv(n,fv.range(1,r+1),\"inEdges\"),e=yv(n,fv.range(r-1,-1,-1),\"outEdges\"),o=cv(n);mv(n,o);for(var i,u=Number.POSITIVE_INFINITY,a=0,f=0;f<4;++a,++f){bv(a%2?t:e,a%4>=2),o=pv.buildLayerMatrix(n);var c=sv(n,o);c<u&&(f=0,i=fv.cloneDeep(o),u=c)}mv(n,i)};function yv(n,r,t){return fv.map(r,(function(r){return hv(n,r,t)}))}function bv(n,r){var t=new lv;fv.forEach(n,(function(n){var e=n.graph().root,o=dv(n,e,t,r);fv.forEach(o.vs,(function(r,t){n.node(r).order=t})),vv(n,t,o.vs)}))}function mv(n,r){fv.forEach(r,(function(r){fv.forEach(r,(function(r,t){n.node(r).order=t}))}))}var _v=Nd,wv=dd.Graph,Ev=Vd,jv=function(n){var r,t=Ev.buildLayerMatrix(n),e=_v.merge(kv(n,t),xv(n,t)),o={};_v.forEach([\"u\",\"d\"],(function(i){r=\"u\"===i?t:_v.values(t).reverse(),_v.forEach([\"l\",\"r\"],(function(t){\"r\"===t&&(r=_v.map(r,(function(n){return _v.values(n).reverse()})));var u=(\"u\"===i?n.predecessors:n.successors).bind(n),a=Iv(n,r,e,u),f=Cv(n,r,a.root,a.align,\"r\"===t);\"r\"===t&&(f=_v.mapValues(f,(function(n){return-n}))),o[i+t]=f}))}));var i=Av(n,o);return Mv(o,i),Lv(o,n.graph().align)};function kv(n,r){var t={};return _v.reduce(r,(function(r,e){var o=0,i=0,u=r.length,a=_v.last(e);return _v.forEach(e,(function(r,f){var c=function(n,r){if(n.node(r).dummy)return _v.find(n.predecessors(r),(function(r){return n.node(r).dummy}))}(n,r),s=c?n.node(c).order:u;(c||r===a)&&(_v.forEach(e.slice(i,f+1),(function(r){_v.forEach(n.predecessors(r),(function(e){var i=n.node(e),u=i.order;!(u<o||s<u)||i.dummy&&n.node(r).dummy||Nv(t,e,r)}))})),i=f+1,o=s)})),e})),t}function xv(n,r){var t={};function e(r,e,o,i,u){var a;_v.forEach(_v.range(e,o),(function(e){a=r[e],n.node(a).dummy&&_v.forEach(n.predecessors(a),(function(r){var e=n.node(r);e.dummy&&(e.order<i||e.order>u)&&Nv(t,r,a)}))}))}return _v.reduce(r,(function(r,t){var o,i=-1,u=0;return _v.forEach(t,(function(a,f){if(\"border\"===n.node(a).dummy){var c=n.predecessors(a);c.length&&(o=n.node(c[0]).order,e(t,u,f,i,o),u=f,i=o)}e(t,u,t.length,o,r.length)})),t})),t}function Nv(n,r,t){if(r>t){var e=r;r=t,t=e}var o=n[r];o||(n[r]=o={}),o[t]=!0}function Ov(n,r,t){if(r>t){var e=r;r=t,t=e}return _v.has(n[r],t)}function Iv(n,r,t,e){var o={},i={},u={};return _v.forEach(r,(function(n){_v.forEach(n,(function(n,r){o[n]=n,i[n]=n,u[n]=r}))})),_v.forEach(r,(function(n){var r=-1;_v.forEach(n,(function(n){var a=e(n);if(a.length){a=_v.sortBy(a,(function(n){return u[n]}));for(var f=(a.length-1)/2,c=Math.floor(f),s=Math.ceil(f);c<=s;++c){var d=a[c];i[n]===n&&r<u[d]&&!Ov(t,n,d)&&(i[d]=n,i[n]=o[n]=o[d],r=u[d])}}}))})),{root:o,align:i}}function Cv(n,r,t,e,o){var i={},u=function(n,r,t,e){var o=new wv,i=n.graph(),u=function(n,r,t){return function(e,o,i){var u,a=e.node(o),f=e.node(i),c=0;if(c+=a.width/2,_v.has(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":u=-a.width/2;break;case\"r\":u=a.width/2}if(u&&(c+=t?u:-u),u=0,c+=(a.dummy?r:n)/2,c+=(f.dummy?r:n)/2,c+=f.width/2,_v.has(f,\"labelpos\"))switch(f.labelpos.toLowerCase()){case\"l\":u=f.width/2;break;case\"r\":u=-f.width/2}return u&&(c+=t?u:-u),u=0,c}}(i.nodesep,i.edgesep,e);return _v.forEach(r,(function(r){var e;_v.forEach(r,(function(r){var i=t[r];if(o.setNode(i),e){var a=t[e],f=o.edge(a,i);o.setEdge(a,i,Math.max(u(n,r,e),f||0))}e=r}))})),o}(n,r,t,o),a=o?\"borderLeft\":\"borderRight\";function f(n,r){for(var t=u.nodes(),e=t.pop(),o={};e;)o[e]?n(e):(o[e]=!0,t.push(e),t=t.concat(r(e))),e=t.pop()}return f((function(n){i[n]=u.inEdges(n).reduce((function(n,r){return Math.max(n,i[r.v]+u.edge(r))}),0)}),u.predecessors.bind(u)),f((function(r){var t=u.outEdges(r).reduce((function(n,r){return Math.min(n,i[r.w]-u.edge(r))}),Number.POSITIVE_INFINITY),e=n.node(r);t!==Number.POSITIVE_INFINITY&&e.borderType!==a&&(i[r]=Math.max(i[r],t))}),u.successors.bind(u)),_v.forEach(e,(function(n){i[n]=i[t[n]]})),i}function Av(n,r){return _v.minBy(_v.values(r),(function(r){var t=Number.NEGATIVE_INFINITY,e=Number.POSITIVE_INFINITY;return _v.forIn(r,(function(r,o){var i=function(n,r){return n.node(r).width}(n,o)/2;t=Math.max(r+i,t),e=Math.min(r-i,e)})),t-e}))}function Mv(n,r){var t=_v.values(r),e=_v.min(t),o=_v.max(t);_v.forEach([\"u\",\"d\"],(function(t){_v.forEach([\"l\",\"r\"],(function(i){var u,a=t+i,f=n[a];if(f!==r){var c=_v.values(f);(u=\"l\"===i?e-_v.min(c):o-_v.max(c))&&(n[a]=_v.mapValues(f,(function(n){return n+u})))}}))}))}function Lv(n,r){return _v.mapValues(n.ul,(function(t,e){if(r)return n[r.toLowerCase()][e];var o=_v.sortBy(_v.map(n,e));return(o[1]+o[2])/2}))}var Pv=Nd,Sv=Vd,Tv=jv;var Rv=Nd,zv=Bd,Fv=Jd,Dv=kh,Bv=Vd.normalizeRanks,Uv=Ih,Gv=Vd.removeEmptyRanks,Vv=Mh,qv=Th,$v=Fh,Yv=gv,Wv=function(n){(function(n){var r=Sv.buildLayerMatrix(n),t=n.graph().ranksep,e=0;Pv.forEach(r,(function(r){var o=Pv.max(Pv.map(r,(function(r){return n.node(r).height})));Pv.forEach(r,(function(r){n.node(r).y=e+o/2})),e+=o+t}))})(n=Sv.asNonCompoundGraph(n)),Pv.forEach(Tv(n),(function(r,t){n.node(t).x=r}))},Jv=Vd,Kv=dd.Graph,Qv=function(n,r){var t=r&&r.debugTiming?Jv.time:Jv.notime;t(\"layout\",(function(){var r=t(\" buildLayoutGraph\",(function(){return function(n){var r=new Kv({multigraph:!0,compound:!0}),t=ul(n.graph());return r.setGraph(Rv.merge({},Xv,il(t,Hv),Rv.pick(t,Zv))),Rv.forEach(n.nodes(),(function(t){var e=ul(n.node(t));r.setNode(t,Rv.defaults(il(e,nl),rl)),r.setParent(t,n.parent(t))})),Rv.forEach(n.edges(),(function(t){var e=ul(n.edge(t));r.setEdge(t,Rv.merge({},el,il(e,tl),Rv.pick(e,ol)))})),r}(n)}));t(\" runLayout\",(function(){!function(n,r){r(\" makeSpaceForEdgeLabels\",(function(){!function(n){var r=n.graph();r.ranksep/=2,Rv.forEach(n.edges(),(function(t){var e=n.edge(t);e.minlen*=2,\"c\"!==e.labelpos.toLowerCase()&&(\"TB\"===r.rankdir||\"BT\"===r.rankdir?e.width+=e.labeloffset:e.height+=e.labeloffset)}))}(n)})),r(\" removeSelfEdges\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){if(r.v===r.w){var t=n.node(r.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:r,label:n.edge(r)}),n.removeEdge(r)}}))}(n)})),r(\" acyclic\",(function(){zv.run(n)})),r(\" nestingGraph.run\",(function(){Vv.run(n)})),r(\" rank\",(function(){Dv(Jv.asNonCompoundGraph(n))})),r(\" injectEdgeLabelProxies\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);if(t.width&&t.height){var e=n.node(r.v),o={rank:(n.node(r.w).rank-e.rank)/2+e.rank,e:r};Jv.addDummyNode(n,\"edge-proxy\",o,\"_ep\")}}))}(n)})),r(\" removeEmptyRanks\",(function(){Gv(n)})),r(\" nestingGraph.cleanup\",(function(){Vv.cleanup(n)})),r(\" normalizeRanks\",(function(){Bv(n)})),r(\" assignRankMinMax\",(function(){!function(n){var r=0;Rv.forEach(n.nodes(),(function(t){var e=n.node(t);e.borderTop&&(e.minRank=n.node(e.borderTop).rank,e.maxRank=n.node(e.borderBottom).rank,r=Rv.max(r,e.maxRank))})),n.graph().maxRank=r}(n)})),r(\" removeEdgeLabelProxies\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){var t=n.node(r);\"edge-proxy\"===t.dummy&&(n.edge(t.e).labelRank=t.rank,n.removeNode(r))}))}(n)})),r(\" normalize.run\",(function(){Fv.run(n)})),r(\" parentDummyChains\",(function(){Uv(n)})),r(\" addBorderSegments\",(function(){qv(n)})),r(\" order\",(function(){Yv(n)})),r(\" insertSelfEdges\",(function(){!function(n){var r=Jv.buildLayerMatrix(n);Rv.forEach(r,(function(r){var t=0;Rv.forEach(r,(function(r,e){var o=n.node(r);o.order=e+t,Rv.forEach(o.selfEdges,(function(r){Jv.addDummyNode(n,\"selfedge\",{width:r.label.width,height:r.label.height,rank:o.rank,order:e+ ++t,e:r.e,label:r.label},\"_se\")})),delete o.selfEdges}))}))}(n)})),r(\" adjustCoordinateSystem\",(function(){$v.adjust(n)})),r(\" position\",(function(){Wv(n)})),r(\" positionSelfEdges\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){var t=n.node(r);if(\"selfedge\"===t.dummy){var e=n.node(t.e.v),o=e.x+e.width/2,i=e.y,u=t.x-o,a=e.height/2;n.setEdge(t.e,t.label),n.removeNode(r),t.label.points=[{x:o+2*u/3,y:i-a},{x:o+5*u/6,y:i-a},{x:o+u,y:i},{x:o+5*u/6,y:i+a},{x:o+2*u/3,y:i+a}],t.label.x=t.x,t.label.y=t.y}}))}(n)})),r(\" removeBorderNodes\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){if(n.children(r).length){var t=n.node(r),e=n.node(t.borderTop),o=n.node(t.borderBottom),i=n.node(Rv.last(t.borderLeft)),u=n.node(Rv.last(t.borderRight));t.width=Math.abs(u.x-i.x),t.height=Math.abs(o.y-e.y),t.x=i.x+t.width/2,t.y=e.y+t.height/2}})),Rv.forEach(n.nodes(),(function(r){\"border\"===n.node(r).dummy&&n.removeNode(r)}))}(n)})),r(\" normalize.undo\",(function(){Fv.undo(n)})),r(\" fixupEdgeLabelCoords\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);if(Rv.has(t,\"x\"))switch(\"l\"!==t.labelpos&&\"r\"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case\"l\":t.x-=t.width/2+t.labeloffset;break;case\"r\":t.x+=t.width/2+t.labeloffset}}))}(n)})),r(\" undoCoordinateSystem\",(function(){$v.undo(n)})),r(\" translateGraph\",(function(){!function(n){var r=Number.POSITIVE_INFINITY,t=0,e=Number.POSITIVE_INFINITY,o=0,i=n.graph(),u=i.marginx||0,a=i.marginy||0;function f(n){var i=n.x,u=n.y,a=n.width,f=n.height;r=Math.min(r,i-a/2),t=Math.max(t,i+a/2),e=Math.min(e,u-f/2),o=Math.max(o,u+f/2)}Rv.forEach(n.nodes(),(function(r){f(n.node(r))})),Rv.forEach(n.edges(),(function(r){var t=n.edge(r);Rv.has(t,\"x\")&&f(t)})),r-=u,e-=a,Rv.forEach(n.nodes(),(function(t){var o=n.node(t);o.x-=r,o.y-=e})),Rv.forEach(n.edges(),(function(t){var o=n.edge(t);Rv.forEach(o.points,(function(n){n.x-=r,n.y-=e})),Rv.has(o,\"x\")&&(o.x-=r),Rv.has(o,\"y\")&&(o.y-=e)})),i.width=t-r+u,i.height=o-e+a}(n)})),r(\" assignNodeIntersects\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t,e,o=n.edge(r),i=n.node(r.v),u=n.node(r.w);o.points?(t=o.points[0],e=o.points[o.points.length-1]):(o.points=[],t=u,e=i),o.points.unshift(Jv.intersectRect(i,t)),o.points.push(Jv.intersectRect(u,e))}))}(n)})),r(\" reversePoints\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);t.reversed&&t.points.reverse()}))}(n)})),r(\" acyclic.undo\",(function(){zv.undo(n)}))}(r,t)})),t(\" updateInputGraph\",(function(){!function(n,r){Rv.forEach(n.nodes(),(function(t){var e=n.node(t),o=r.node(t);e&&(e.x=o.x,e.y=o.y,r.children(t).length&&(e.width=o.width,e.height=o.height))})),Rv.forEach(n.edges(),(function(t){var e=n.edge(t),o=r.edge(t);e.points=o.points,Rv.has(o,\"x\")&&(e.x=o.x,e.y=o.y)})),n.graph().width=r.graph().width,n.graph().height=r.graph().height}(n,r)}))}))};var Hv=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],Xv={ranksep:50,edgesep:20,nodesep:50,rankdir:\"tb\"},Zv=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\"],nl=[\"width\",\"height\"],rl={width:0,height:0},tl=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],el={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},ol=[\"labelpos\"];function il(n,r){return Rv.mapValues(Rv.pick(n,r),Number)}function ul(n){var r={};return Rv.forEach(n,(function(n,t){r[t.toLowerCase()]=n})),r}var al=Nd,fl=Vd,cl=dd.Graph;var sl=tr({graphlib:dd,layout:Qv,debug:{debugOrdering:function(n){var r=fl.buildLayerMatrix(n),t=new cl({compound:!0,multigraph:!0}).setGraph({});return al.forEach(n.nodes(),(function(r){t.setNode(r,{label:r}),t.setParent(r,\"layer\"+n.node(r).rank)})),al.forEach(n.edges(),(function(n){t.setEdge(n.v,n.w,{},n.name)})),al.forEach(r,(function(n,r){var e=\"layer\"+r;t.setNode(e,{rank:\"same\"}),al.reduce(n,(function(n,r){return t.setEdge(n,r,{style:\"invis\"}),r}))})),t}},util:{time:Vd.time,notime:Vd.notime},version:\"0.8.5\"});function dl(n,r,t){void 0===t&&(t={rankdir:\"TB\"});var e=t.rankdir,o=new sl.graphlib.Graph;return o.setDefaultEdgeLabel((function(){return{}})),o.setGraph({rankdir:e}),n.forEach((function(n){var r,t;if(!n.id)throw new Error('Node \"id\" does not exist');var e=(null===(r=n.data)||void 0===r?void 0:r.width)||200,i=(null===(t=n.data)||void 0===t?void 0:t.height)||56;o.setNode(n.id,{width:e,height:i})})),r.forEach((function(n){o.setEdge(n.source,n.target)})),sl.layout(o),n.forEach((function(n){var r=o.node(n.id),t=\"bottom\",i=\"top\";switch(e){case\"TB\":t=\"bottom\",i=\"top\";break;case\"BT\":t=\"top\",i=\"bottom\";break;case\"LR\":case\"RL\":t=\"right\",i=\"left\"}n.targetPosition=i,n.sourcePosition=t,n.position={x:r.x-r.width/2,y:r.y-r.height/2}})),{nodes:n,edges:r}}export{dl as dagreLayout};\n//# sourceMappingURL=index.esm.js.map\n","import {\n useState,\n useCallback,\n type Dispatch,\n type SetStateAction,\n} from 'react';\nimport { applyEdgeChanges } from '../utils/changes';\nimport { Edge, OnEdgesChange } from '../types';\n\nexport function useEdgesState<EdgeType extends Edge = Edge>(\n initialEdges: EdgeType[],\n): [EdgeType[], Dispatch<SetStateAction<EdgeType[]>>, OnEdgesChange<EdgeType>] {\n const [edges, setEdges] = useState(initialEdges);\n const onEdgesChange: OnEdgesChange<EdgeType> = useCallback(\n (changes) => setEdges((eds) => applyEdgeChanges(changes, eds)),\n [],\n );\n\n return [edges, setEdges, onEdgesChange];\n}\n","import {\n useState,\n useCallback,\n type Dispatch,\n type SetStateAction,\n} from 'react';\nimport { applyNodeChanges } from '../utils/changes';\nimport { Node, OnNodesChange } from '../types';\n\nexport function useNodesState<NodeType extends Node>(\n initialNodes: NodeType[],\n): [NodeType[], Dispatch<SetStateAction<NodeType[]>>, OnNodesChange<NodeType>] {\n const [nodes, setNodes] = useState(initialNodes);\n const onNodesChange: OnNodesChange<NodeType> = useCallback(\n (changes) => setNodes((nds) => applyNodeChanges(changes, nds)),\n [],\n );\n\n return [nodes, setNodes, onNodesChange];\n}\n"],"names":["jsxRuntimeModule","exports","f","require$$0","k","Symbol","for","l","m","Object","prototype","hasOwnProperty","n","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","p","key","ref","__self","__source","q","c","a","g","b","d","e","h","call","defaultProps","$$typeof","type","props","_owner","current","reactJsxRuntime_production_min","jsx","jsxs","hasOwn","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","join","module","default","window","shimModule","is","useState","useEffect","useLayoutEffect","useDebugValue","r","getSnapshot","value","u","document","createElement","inst","useSyncExternalStoreShim_production_min","useSyncExternalStore","withSelectorModule","require$$1","t","useRef","v","useMemo","w","withSelector_production_min","useSyncExternalStoreWithSelector","hasValue","createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","subscribe","add","delete","destroy","console","warn","clear","ReactExports","useSyncExternalStoreExports","identity","useStoreWithEqualityFn","selector","equalityFn","slice","getServerState","createWithEqualityFnImpl","defaultEqualityFn","createStore","useBoundStoreWithEqualityFn","StoreContext","createContext","Provider","errorMessages","error001","error002","error003","nodeType","concat","error004","error005","error006","error007","id","error009","error008","handleType","_a","sourceHandle","targetHandle","error010","error011","edgeType","error012","infiniteExtent","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","elementSelectionKeys","zustandErrorMessage","useStore","store","useContext","Error","useZustandStore","useStoreApi","updateAbsolutePositions","nodeLookup","options","nodeOrigin","elevateNodesOnSelect","defaults","selectedNodeZ","nodeLookup_1","__values","nodeLookup_1_1","next","node","__read","parentId","has","parentNode","get","_d","calculateXYZPosition","__assign","position","z","isNumeric","zIndex","selected","_b","origin","x","y","currPosition","internals","positionAbsolute","positionChanged","result","parent","parentPosition","getNodePositionWithOrigin","_c","_f","getNodeDimensions","width","height","offsetX","offsetY","updateConnectionLookup","connectionLookup","edgeLookup","edges","edges_1","edges_1_1","edge","source","target","sourceKey","targetKey","prevSource","Map","prevTarget","connection","edgeId","set","adoptUserNodes","nodes","parentLookup","checkEquality","tmpLookup","userNode","internalNode","measured","handleBounds","childNodes","size","handleExpandParent","children","changes","parentExpansions","children_1","children_1_1","child","parent_1","parentRect","expandedRect","nodeToRect","getBoundsOfRects","rect","dimensions","xChange","Math","round","abs","yChange","childNode","some","setAttributes","max","clamp","val","min","clampPosition","extent","initialWidth","_h","_g","_e","initialHeight","isNaN","isFinite","snapPosition","snapGrid","pointToRendererPoint","snapToGrid","tx","ty","tScale","getBoundsOfBoxes","box1","box2","x2","y2","rectToBox","boxToRect","nodeToBox","rect1","rect2","fixedForwardRef","render","forwardRef","getOverlappingArea","rectA","rectB","xOverlap","yOverlap","ceil","getViewportForBounds","bounds","minZoom","maxZoom","padding","xZoom","yZoom","zoom","clampedZoom","isCoordinateExtent","undefined","calcAutoPanVelocity","calcAutoPan","pos","getPositionWithOrigin","rendererPointToPoint","isMacOs","navigator","userAgent","indexOf","isNode","element","isNodeBase","isRectObject","obj","getPointerPosition","event","transform","getEventPosition","pointerPos","xSnapped","ySnapped","getDimensions","offsetWidth","offsetHeight","getHostForElement","getRootNode","inputTags","isInputDOMNode","composedPath","includes","nodeName","hasAttribute","closest","isMouseEvent","isMouse","evtX","clientX","touches","evtY","clientY","left","top","getHandleBounds","nodeElement","handles","querySelectorAll","handlesArray","from","nodeBounds","getBoundingClientRect","nodeOffset","map","handle","getAttribute","defaultDoc","useKeyPress","keyCode","actInsideInputWithModifier","keyPressed","setKeyPressed","modifierPressed","pressedKeys","keys","filter","kc","split","keysFlat","reduce","res","item","__spreadArray","keyCodes","keysToWatch","downHandler_1","ctrlKey","metaKey","shiftKey","keyOrCode","useKeyOrCode","code","isMatchingKey","preventDefault","upHandler_1","resetHandler_1","addEventListener","removeEventListener","isUp","every","eventCode","shallow$1","objA","objB","keysA","keyA","ConnectionMode","PanOnScrollMode","SelectionMode","ConnectionLineType","MarkerType","Position","containerStyle","noop","dispatch","_","test","Dispatch","this","name","callback","constructor","on","typename","types","T","trim","copy","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","creator","none","selector$e","querySelector","empty","selectorAll","arrayAll","select","array","matcher","matches","childMatcher","find","childFirst","firstElementChild","sparse","update","EnterNode","datum","_next","_parent","__data__","bindIndex","group","enter","exit","data","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","arraylike","ascending","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","appendChild","lower","previousSibling","insertBefore","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","__on","o","j","onAdd","contextListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","splice","contains","root","Selection","groups","parents","_groups","_parents","selection","pointer","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","matrixTransform","getScreenCTM","inverse","clientLeft","clientTop","pageX","pageY","subgroups","subnode","subgroup","selectAll","selectChild","match","childFind","selectChildren","childrenFilter","bind","constant","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","onenter","onupdate","onexit","append","merge","order","context","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","sort","compare","compareNode","sortgroups","sortgroup","each","attr","getAttributeNS","property","classed","text","html","create","insert","before","deep","typenames","parseTypenames","iterator","nonpassive","passive","nonpassivecapture","capture","nopropagation","stopImmediatePropagation","noevent$1","dragDisable","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","constant$2","DragEvent","subject","identifier","active","dx","dy","defineProperties","enumerable","configurable","defaultFilter","button","defaultContainer","defaultSubject","defaultTouchable","maxTouchPoints","define","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","opacity","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","s","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","channels","displayable","formatHex8","formatHsl","pow","constant$1","gamma","nogamma","exponential","linear","interpolateRgb","rgbGamma","start","end","colorRgb","interpolateNumber","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","index","number","one","zero","svgNode","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","sqrt","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","baseVal","consolidate","matrix","cosh","exp","taskHead","taskTail","interpolateZoom","zoomRho","rho","rho2","rho4","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","log","d1","b0","b1","r0","r1","coshr0","tanh","sinh","duration","SQRT2","_1","_2","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","TypeError","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","timing","schedules","__transition","self","tween","tick","ease","init","interrupt","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","Promise","resolve","reject","cancel","defaultTiming","ZoomEvent","Transform","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","__zoom","defaultExtent","SVGElement","viewBox","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","viewChanged","prevViewport","eventViewport","transformToViewport","viewportToTransform","zoomIdentity","isWrappedWithClass","className","isRightClickPan","panOnDrag","usedButton","getD3Transition","wheelDelta","factor","XYPanZoom","domNode","viewport","onPanZoom","onPanZoomStart","onPanZoomEnd","onTransformChange","onDraggingChange","zoomPanValues","isZoomingOrPanning","usedRightMouseButton","mouseButton","timerId","panScrollTimeout","isPanScrolling","bbox","d3ZoomInstance","touchstarting","touchfirst","touchending","constrain","touchable","scaleExtent","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","centroid","gesture","clean","__zooming","Gesture","taps","wheel","mouse","moved","x0","y0","dragEnable","changedTouches","k1","started","touch0","touch1","l0","l1","dp","dl","hypot","collection","scaleBy","scaleTo","translateBy","translateTo","emit","clickDistance","d3Selection","setViewportConstrained","d3ZoomHandler","d3DblClickZoomHandler","setTransform","nextTransform","contrainedTransform","noWheelClassName","noPanClassName","onPaneContextMenu","userSelectionActive","panOnScroll","panOnScrollMode","panOnScrollSpeed","preventScrolling","zoomOnPinch","zoomOnScroll","zoomOnDoubleClick","zoomActivationKeyPressed","lib","wheelHandler","d3Zoom","currentZoom","pinchDelta","deltaNormalize","deltaX","Vertical","Horizontal","internal","nextViewport","createPanOnScrollHandler","createZoomOnScrollHandler","startHandler","createPanZoomStartHandler","panZoomHandler","sync","createPanZoomHandler","panZoomEndHandler","viewport_1","createPanZoomEndHandler","zoomScroll","pinchZoom","buttonAllowed","createFilter","setViewport","getViewport","zoomTransform","setScaleExtent","setTranslateExtent","syncViewport","currentTransform","ZoomPane","Free","defaultViewport","zoomActivationKeyCode","_j","onViewportChange","isControlledViewport","zoomPane","_k","shallow","panZoom","updateDimensions","onError","resizeObserver_1","ResizeObserver","observe","unobserve","useResizeHandler","paneDragging","vp","onViewportChangeStart","onMoveStart","onMove","onViewportChangeEnd","onMoveEnd","_jsx","deleteKeyOptions","applyChange","change","dragging","resizing","applyChanges","elements","updatedElements","changesMap","changes_1","changes_1_1","elementChanges","elements_1","elements_1_1","changes_3","updatedElement","changes_2","changes_2_1","applyEdgeChanges","applyNodeChanges","createSelectionChange","getSelectionChanges","items","selectedIds","mutateItem","items_1","items_1_1","willBeSelected","getElementsDiffChanges","lookup","itemsLookup","items_2","items_2_1","lookupItem","storeItem","lookup_1","lookup_1_1","elementToRemoveChange","getInternalNodesBounds","box","nodeBox","getNodesInside","partially","excludeNonSelectableNodes","paneRect","visibleNodes","nodes_1","nodes_1_1","_m","selectable","_o","hidden","overlappingArea","getConnectedEdges","nodeIds","fitView","filteredNodes","optionNodeIds","includeHiddenNodes","currBox","getNodesBounds","calculateNodePosition","nodeId","nextPosition","nodeExtent","parentX","parentY","currentExtent","clampNodeExtent","expandParent","nodeWidth","nodeHeight","parentWidth","parentHeight","currNodeOrigin","extentX","extentY","getElementsToRemove","nodesToRemove","edgesToRemove","onBeforeDelete","matchingNodes","deletable","isIncluded","parentHit","nodes_2","nodes_2_1","done","edgeIds","deletableEdges","connectedEdges","matchingEdges","deletableEdges_1","deletableEdges_1_1","onBeforeDeleteResult","sent","userSelectionRect","UserSelection","wrapHandler","handler","containerRef","elementsSelectable","Pane","isSelecting","selectionMode","onSelectionStart","onSelectionEnd","onPaneClick","onPaneScroll","onPaneMouseEnter","onPaneMouseMove","onPaneMouseLeave","container","prevSelectedNodesCount","prevSelectedEdgesCount","containerBounds","edgeIdLookup","resetUserSelection","onClick","resetSelectedElements","nodesSelectionActive","onWheel","hasActiveSelection","_jsxs","cc","draggable","onContextMenu","onMouseEnter","onMouseDown","edgeLookup_1","edgeLookup_1_1","nativeEvent","startX","startY","onMouseMove","triggerNodeChanges","triggerEdgeChanges","mouseX","mouseY","nextUserSelectRect","selectedNodes","selectedEdgeIds","selectedNodeIds","selectedNodes_1","selectedNodes_1_1","selectedNode","edgeIds_1","edgeIds_1_1","onMouseUp","onMouseLeave","FlowRendererComponent","deleteKeyCode","selectionKeyCode","selectionOnDrag","multiSelectionKeyCode","panActivationKeyCode","_panOnScroll","_panOnDrag","onSelectionContextMenu","disableKeyboardA11y","selectionKeyPressed","panActivationKeyPressed","deleteKeyPressed","multiSelectionKeyPressed","multiSelectionActive","useGlobalKeyHandler","displayName","FlowRenderer","memo","useIsomorphicLayoutEffect","useQueue","runQueue","shouldFlush","setShouldFlush","cb","queue","reset","createQueue","queueItems","BatchContext","BatchProvider","nodeQueueHandler","useCallback","setNodes","hasDefaultNodes","onNodesChange","queueItems_1","queueItems_1_1","payload","nodeQueue","edgeQueueHandler","setEdges","hasDefaultEdges","onEdgesChange","queueItems_2","queueItems_2_1","edgeQueue","useViewportHelper","zoomIn","zoomOut","zoomTo","zoomLevel","getZoom","tX","tY","tZoom","setCenter","nextZoom","centerX","centerY","fitBounds","screenToFlowPosition","clientPosition","domX","domY","correctedPosition","flowToScreenPosition","flowPosition","rendererPosition","useInkFlow","_this","viewportHelper","batchContext","useBatchContext","viewportInitialized","generalHelper","getInternalNode","getNodeRect","nodeToUse","nextParentId","origin_1","xOffset","yOffset","evaluateAbsolutePosition","nodeWithPosition","updateNode","nodeUpdate","prevNodes","nextNode","getNodes","getNode","getEdges","getEdge","addNodes","newNodes","addEdges","newEdges","toObject","deleteElements","onNodesDelete","onEdgesDelete","onDelete","hasMatchingEdges","hasMatchingNodes","edgeChanges","nodeChanges","deletedNodes","deletedEdges","getIntersectingNodes","nodeOrRect","isRect","nodeRect","hasNodesOption","currNodeRect","isNodeIntersecting","area","updateNodeData","dataUpdate","nextData","updateNodeInternals","onlyRenderVisible","NodeIdContext","Consumer","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","getBezierEdgeCenter","sourceX","sourceY","targetX","targetY","sourceControlX","sourceControlY","targetControlX","targetControlY","calculateControlOffset","distance","curvature","getControlWithCurvature","x1","y1","Left","Right","Top","Bottom","getEdgeCenter","getEdgeId","handleDirections","getDirection","sourcePosition","getSmoothStepPath","targetPosition","borderRadius","center","offset","sourceDir","targetDir","sourceGapped","targetGapped","dir","dirAccessor","currDir","points","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","getPoints","labelX","labelY","path","segment","bendSize","xDir_1","yDir_1","xDir","yDir","getBend","getHandles","currentHandle","getHandleType","edgeUpdaterType","handleDomNode","alwaysValid","connectionStartHandle","isValidHandle","connectionMode","fromNodeId","fromHandleId","fromType","doc","flowId","isValidConnection","isTarget","handleBelow","elementFromPoint","handleToCheck","isValid","endHandle","handleNodeId","handleId","connectable","connectableEnd","Strict","XYHandle","onPointerDown","closestHandle","connectionRadius","autoPanOnConnect","panBy","cancelConnection","onConnectStart","onConnect","onConnectEnd","onEdgeUpdateEnd","updateConnection","getTransform","getConnectionStartHandle","autoPanId","clickedHandle","connectionPosition","autoPanStarted","handleLookup","connectionHandles","sourceHandles","targetHandles","getHandleLookup","connectionStatus","connectionEndHandle","onPointerMove","onPointerUp","autoPan","closestHandles","minDistance","handles_1","handles_1_1","getClosestHandle","isInsideConnectionRadius","isHandleValid","cancelAnimationFrame","connectOnClick","rfId","Handle","isConnectable","isConnectableStart","isConnectableEnd","onTouchStart","rest","__rest","startHandle","clickHandle","connectionClickStartHandle","connectingTo","connectingFrom","clickConnecting","isPossibleEndHandle","connectionInProcess","valid","connectingSelector","onConnectExtended","defaultEdgeOptions","onConnectAction","edgeParams","el","connectionExists","addEdge","isMouseTriggered","currentStore","connectablestart","connectableend","clickconnecting","connectingfrom","connectingto","connectionindicator","onClickConnectStart","onClickConnectEnd","isValidConnectionStore","isValidConnectionHandler","arrowKeyDiffs","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","builtinNodeTypes","input","_Fragment","label","output","handleNodeClick","unselect","nodeRef","addSelectedNodes","unselectNodesAndEdges","blur","isParentSelected","hasSelector","parentElement","getEventHandlerParams","dragItems","nodesFromDragItems","dragItems_1","dragItems_1_1","dragItem","node_1","XYDrag","onNodeMouseDown","getStoreItems","onDragStart","onDrag","onDragStop","lastPos","mousePosition","dragStarted","noDragClassName","handleSelector","isSelectable","updateNodes","dragEvent","onNodeDrag","onSelectionDrag","updateNodePositions","hasChange","nodesBox","adjustedNodeExtent","positionAbsolute_1","currentNode","currentNodes","xMovement","yMovement","startDrag","nodesDraggable","selectNodesOnDrag","onNodeDragStart","onSelectionDragStart","mousePos","getDragItems","d3DragInstance","mousedownx","mousedowny","mousemoving","gestures","drag","beforestart","mousemoved","mouseupped","nodrag","touch","nodeDragThreshold","autoPanOnNodeDrag","onNodeDragStop","onSelectionDragStop","selectedAndDraggable","NodeWrapper","onDoubleClick","nodesConnectable","nodesFocusable","resizeObserver","nodeTypes","isParent","NodeComponent","isDraggable","isFocusable","focusable","hasDimensions","nodeHasDimensions","observedNode","prevSourcePosition","prevTargetPosition","prevType","isInitialized","typeChanged","sourcePosChanged","targetPosChanged","force","useNodeObserver","disabled","setDragging","xyDrag","useDrag","dragHandle","moveSelectedNodes","nodeUpdates","isSelected","xVelo","yVelo","xDiff","direction","yDiff","useMoveSelectedNodes","nodeDimensions","inlineDimensions","getNodeInlineStyleDimensions","clampedPosition","positionWithOrigin","hasPointerEvents","onMouseEnterHandler","onMouseMoveHandler","onMouseLeaveHandler","onContextMenuHandler","onDoubleClickHandler","pointerEvents","visibility","onKeyDown","ariaLiveMessage","tabIndex","role","ariaLabel","positionAbsoluteX","positionAbsoluteY","NodeRendererComponent","entries","updates","entry","disconnect","useResizeObserver","NodeRenderer","MarkerSymbols","Arrow","strokeWidth","stroke","strokeLinecap","strokeLinejoin","fill","ArrowClosed","getMarkerId","marker","idPrefix","Marker","markerUnits","orient","symbol","useMarkerSymbol","markerWidth","markerHeight","refX","refY","MarkerDefinitions","defaultColor","markers","defaultMarkerStart","defaultMarkerEnd","ids","markerStart","markerEnd","markerId","localeCompare","createMarkerIds","EdgeTextComponent","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","edgeTextBbox","setEdgeTextBbox","edgeTextClasses","onEdgeTextRefChange","edgeRef","textBbox","getBBox","rx","ry","EdgeText","BaseEdge","interactionWidth","strokeOpacity","getControl","createSimpleBezierEdge","getSimpleBezierPath","isInternal","SimpleBezierEdge","SimpleBezierEdgeInternal","createSmoothStepEdge","pathOptions","SmoothStepEdge","SmoothStepEdgeInternal","createStepEdge","StepEdge","StepEdgeInternal","createStraightEdge","getStraightPath","StraightEdge","StraightEdgeInternal","createBezierEdge","getBezierPath","BezierEdge","BezierEdgeInternal","builtinEdgeTypes","straight","step","smoothstep","simplebezier","nullPosition","shiftX","shift","shiftY","EdgeUpdaterClassName","EdgeAnchor","radius","onMouseOut","cx","cy","EdgeUpdateAnchors","isUpdatable","edgeUpdaterRadius","targetHandleId","sourceHandleId","onEdgeUpdate","onEdgeUpdateStart","setUpdating","setUpdateHover","handleEdgeUpdater","isSourceHandle","evt","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","isNodeInitialized","toHandleBounds","getHandlePosition","getHandle","EdgeWrapper","edgesFocusable","edgesUpdatable","edgeTypes","EdgeComponent","updatable","updateHover","updating","sourceNode","targetNode","edgePosition","sourceHandleBounds","targetHandleBounds","getEdgePosition","edgeOrConnectedNodeSelected","selectedZIndex","getElevatedEdgeZIndex","elevateOnSelect","elevateEdgesOnSelect","markerStartUrl","markerEndUrl","onEdgeDoubleClick","onEdgeContextMenu","onEdgeMouseEnter","onEdgeMouseMove","onEdgeMouseLeave","animated","inactive","addSelectedEdges","EdgeRendererComponent","useVisibleEdgeIds","EdgeRenderer","Viewport","GraphViewComponent","GraphView","defaultNodes","defaultEdges","storeEdges","storeNodes","fitViewOnInit","fitViewDone","fitViewOnInitOptions","onSelectionChangeHandlers","debug","setDefaultNodesAndEdges","viewportNode","updatedInternals","DOMMatrixReadOnly","m22","parentExpandChildren","dimensionChanged","newNode","parentExpandChanges","updateNodeInternalsSystem","nextFitViewDone","nodeDragItems","nodeDragItems_1","nodeDragItems_1_1","edgesToUnselect","setMinZoom","setMaxZoom","setNodeExtent","delta","panBySystem","fitViewSystem","currentConnection","InkFlowProvider","initialNodes","initialEdges","Wrapper","Fragment","fieldsToTrack","initPrevValues","StoreUpdater","previousFields","fieldsToTrack_1","fieldsToTrack_1_1","fieldName","fieldValue","wrapperStyle","overflow","initViewport","fitViewOptions","cls","PlusIcon","MinusIcon","FitViewIcon","LockIcon","UnlockIcon","ControlButton","Panel","positionClasses","isInteractive","minZoomReached","maxZoomReached","ControlsComponent","showZoom","showFitView","showInteractive","onZoomIn","onZoomOut","onFitView","onInteractiveChange","orientation","orientationClass","title","Controls","E","N","O","I","C","A","M","L","P","R","F","D","B","U","G","V","$","Y","W","J","K","Q","H","X","Z","nn","rn","tn","en","un","an","fn","cn","sn","dn","hn","vn","ln","pn","gn","yn","bn","mn","_n","wn","En","jn","kn","xn","Nn","On","In","Cn","An","Mn","Ln","Pn","Sn","Tn","Rn","zn","Fn","Dn","Bn","Un","Gn","Vn","qn","$n","Yn","Wn","Jn","Kn","Qn","Hn","Xn","Zn","nr","rr","globalThis","global","er","or","ir","ur","ar","Function","fr","cr","toStringTag","sr","dr","vr","lr","IE_PROTO","hr","pr","gr","br","mr","yr","hash","_r","wr","Er","jr","writable","kr","xr","Nr","Or","propertyIsEnumerable","Ir","Cr","Ar","Mr","Lr","Pr","Sr","Tr","Rr","zr","Fr","Dr","Br","Ur","Buffer","isBuffer","Gr","Vr","qr","$r","Yr","Wr","Jr","Kr","Qr","Hr","Xr","Zr","nt","rt","tt","et","ot","it","ut","at","ft","ct","st","dt","ht","vt","lt","pt","gt","yt","bt","mt","process","require","binding","_t","isTypedArray","wt","String","Et","jt","kt","xt","Nt","It","Ot","Ct","At","Mt","Lt","Pt","St","Tt","Rt","zt","Ft","Dt","Bt","Ut","Gt","Vt","qt","$t","Yt","Wt","Jt","Kt","Qt","Ht","Xt","Zt","ne","re","te","ee","oe","ie","ue","ae","fe","ce","se","de","he","ve","le","pe","ge","ye","be","me","we","Ee","je","ke","xe","Ne","Oe","Ie","Ce","Ae","Me","Le","Pe","Se","Te","Re","ze","Fe","De","Be","Ue","Ge","Ve","qe","$e","Ye","We","Je","Ke","Qe","He","Xe","Ze","no","ro","to","eo","oo","io","uo","ao","fo","co","so","ho","vo","lo","po","go","yo","bo","mo","wo","Eo","jo","ko","xo","No","Oo","Io","Co","Ao","Mo","Lo","Po","So","To","Ro","zo","Fo","Do","Bo","Uo","Go","Vo","qo","$o","Yo","Wo","Jo","Ko","Qo","Ho","Xo","Zo","ni","ri","ti","ei","oi","ii","ui","ai","fi","ci","si","di","hi","vi","li","pi","gi","yi","mi","_i","wi","Ei","ji","ki","xi","Ni","Oi","Ii","Ci","Ai","Mi","Li","Pi","Si","Ti","Ri","zi","Fi","Di","Bi","Ui","Gi","Vi","qi","$i","Yi","Wi","Ji","Ki","Qi","Hi","Xi","Zi","nu","ru","tu","eu","ou","iu","uu","au","fu","cu","su","du","hu","vu","lu","pu","gu","yu","bu","mu","_u","wu","Eu","ju","ku","xu","Nu","Ou","Iu","Cu","Au","Mu","Lu","Pu","Su","Tu","Ru","zu","Fu","Du","Bu","Uu","Gu","Vu","qu","$u","Yu","Wu","Ju","Ku","Qu","Hu","Xu","Zu","na","ra","ta","ea","oa","ia","ua","aa","fa","ca","sa","da","ha","va","la","pa","ga","ba","ma","wa","Ea","ja","ka","Na","Oa","Ia","Ca","Aa","Ma","La","Pa","Sa","Ta","Ra","za","Fa","Da","Ba","Ua","allocUnsafe","Ga","Va","qa","$a","getOwnPropertySymbols","Ya","Wa","getPrototypeOf","Ja","Ka","Qa","Ha","Xa","ArrayBuffer","Za","Uint8Array","nf","byteLength","rf","buffer","byteOffset","ef","of","ff","valueOf","tf","isMap","uf","isSet","af","cf","sf","df","hf","vf","lf","pf","gf","yf","bf","mf","wf","jf","message","Ef","kf","xf","Nf","If","Cf","Mf","Lf","Pf","cache","Cache","Af","charCodeAt","Sf","Tf","Rf","zf","Df","Uf","Of","Ff","Bf","Gf","Vf","qf","$f","Yf","Wf","Jf","Qf","Kf","Hf","Xf","isConcatSpreadable","Zf","nc","rc","tc","ic","ec","oc","uc","ac","fc","isEmpty","isFunction","isUndefined","union","values","sc","_isDirected","directed","_isMultigraph","multigraph","_isCompound","compound","_label","_defaultNodeLabelFn","_defaultEdgeLabelFn","_nodes","_children","_in","_preds","_out","_sucs","_edgeObjs","_edgeLabels","_nodeCount","_edgeCount","isDirected","isMultigraph","isCompound","setGraph","graph","setDefaultNodeLabel","nodeCount","sources","sinks","setNode","hasNode","removeNode","removeEdge","_removeFromParentsChildList","setParent","predecessors","successors","neighbors","isLeaf","filterNodes","setEdge","setDefaultEdgeLabel","edgeCount","setPath","freeze","hasEdge","inEdges","outEdges","nodeEdges","hc","write","read","vc","lc","_arr","_keyIndices","_decrease","removeMin","_swap","_heapify","decrease","pc","predecessor","gc","yc","onStack","lowlink","bc","mc","CycleException","wc","Ec","jc","xc","Graph","version","json","alg","components","dijkstra","dijkstraAll","findCycles","floydWarshall","isAcyclic","postorder","preorder","prim","tarjan","topsort","graphlib","Nc","Oc","Ic","Cc","Ac","Mc","Lc","Pc","Sc","Tc","Rc","zc","Fc","Dc","Bc","Uc","Gc","Vc","qc","$c","Yc","Wc","Jc","Kc","Qc","Hc","Xc","Zc","ns","rs","ts","es","os","us","as","fs","cs","ss","ds","hs","vs","ls","ps","gs","ys","ms","_s","ws","Es","js","ks","xs","Ns","Os","Is","Cs","As","Ms","Ls","Ps","Ss","Ts","Rs","zs","Fs","Ds","Bs","Us","Gs","Vs","qs","$s","Ys","Ws","Js","Ks","Qs","Hs","Xs","Zs","nd","rd","td","ed","od","ud","ad","fd","cd","sd","dd","hd","ld","charAt","vd","gd","yd","bd","md","wd","xd","criteria","kd","cloneDeep","pd","flatten","forIn","last","mapValues","minBy","pick","Ed","jd","sortBy","uniqueId","zipObject","Nd","Od","Id","_prev","_sentinel","Cd","Ad","dequeue","enqueue","JSON","stringify","Md","Ld","Pd","Td","Rd","out","zd","in","Fd","Dd","buckets","zeroIdx","Bd","run","acyclicer","weight","forwardName","reversed","undo","Ud","Gd","Vd","addDummyNode","qd","simplify","minlen","asNonCompoundGraph","successorWeights","predecessorWeights","intersectRect","buildLayerMatrix","$d","rank","normalizeRanks","removeEmptyRanks","nodeRankFactor","addBorderNode","maxRank","partition","lhs","rhs","notime","dummy","Yd","Wd","Jd","dummyChains","labelRank","edgeLabel","edgeObj","labelpos","Kd","Qd","Hd","Xd","Zd","nh","rh","th","eh","oh","ih","uh","ah","fh","ch","sh","dh","hh","ph","vh","yh","mh","bh","cutvalue","lh","gh","low","lim","initLowLimValues","initCutValues","calcCutValue","leaveEdge","enterEdge","exchangeEdges","wh","Eh","jh","xh","Oh","Ch","Ah","Mh","nestingRoot","Lh","cleanup","nestingEdge","borderTop","borderBottom","Ph","Sh","Rh","borderType","zh","Fh","adjust","rankdir","Dh","Uh","Gh","Bh","Vh","$h","Wh","Jh","Kh","Qh","Hh","Xh","Zh","ov","iv","av","fv","cv","sv","dv","borderLeft","borderRight","sum","barycenter","nv","indegree","merged","reverse","rv","tv","hv","minRank","lv","pv","yv","bv","vv","mv","_v","wv","Ev","Nv","Ov","Pv","Sv","Tv","kv","xv","floor","align","Iv","nodesep","edgesep","Cv","Av","Mv","ul","Lv","Rv","zv","Fv","Dv","ranker","Nh","Bv","Uv","lca","Gv","Vv","qv","$v","Yv","Jv","Kv","Hv","Xv","ranksep","Zv","nl","rl","tl","labeloffset","ol","il","al","fl","cl","sl","__esModule","tr","layout","debugTiming","selfEdges","Wv","marginx","marginy","unshift","debugOrdering","util","eds","nds"],"mappings":"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GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGl/B,GAAGm/B,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG37C,GAAG47C,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120]}