jqtree 1.6.3 → 1.7.1

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.
Files changed (97) hide show
  1. package/.github/workflows/ci.yml +15 -21
  2. package/.github/workflows/codeql-analysis.yml +2 -2
  3. package/README.md +1 -1
  4. package/bower.json +10 -3
  5. package/config/production +2 -2
  6. package/config/{rollup.config.js → rollup.config.mjs} +3 -8
  7. package/docs/Gemfile.lock +34 -37
  8. package/docs/_config.yml +1 -1
  9. package/docs/_entries/10_changelog.md +13 -0
  10. package/docs/_entries/93_getnextnode.md +4 -1
  11. package/docs/_entries/{95_getpreviousnode.md → 95_getnextvisiblenode.md} +1 -1
  12. package/docs/_entries/96_getpreviousnode.md +0 -0
  13. package/docs/_entries/98_getpreviousvisiblenode.md +14 -0
  14. package/docs/package.json +7 -7
  15. package/docs/pnpm-lock.yaml +413 -265
  16. package/docs/static/bower.json +2 -2
  17. package/docs/static/bower_components/fontawesome/css/all.min.css +6 -2
  18. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  19. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  20. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  21. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  22. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  23. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  24. package/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.ttf +0 -0
  25. package/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.woff2 +0 -0
  26. package/docs/static/bower_components/jquery/dist/jquery.js +944 -1121
  27. package/docs/static/bower_components/jquery/dist/jquery.min.js +2 -2
  28. package/docs/static/documentation.css +181 -159
  29. package/docs/static/example.css +0 -1
  30. package/docs/tree.jquery.js +3 -3
  31. package/lib/dataLoader.js +5 -31
  32. package/lib/dragAndDropHandler.js +40 -142
  33. package/lib/elementsRenderer.js +52 -72
  34. package/lib/keyHandler.js +8 -32
  35. package/lib/mouse.widget.js +24 -74
  36. package/lib/node.js +72 -134
  37. package/lib/nodeElement.js +24 -84
  38. package/lib/playwright/coverage.js +58 -97
  39. package/lib/playwright/playwright.test.js +148 -210
  40. package/lib/playwright/testUtils.js +116 -182
  41. package/lib/saveStateHandler.js +13 -62
  42. package/lib/scrollHandler.js +24 -77
  43. package/lib/selectNodeHandler.js +6 -25
  44. package/lib/simple.widget.js +20 -53
  45. package/lib/test/jqTree/accessibility.test.js +37 -0
  46. package/lib/test/jqTree/create.test.js +0 -4
  47. package/lib/test/jqTree/events.test.js +73 -84
  48. package/lib/test/jqTree/keyboard.test.js +0 -6
  49. package/lib/test/jqTree/loadOnDemand.test.js +84 -121
  50. package/lib/test/jqTree/methods.test.js +107 -150
  51. package/lib/test/jqTree/options.test.js +32 -54
  52. package/lib/test/node.test.js +134 -76
  53. package/lib/test/nodeUtil.test.js +0 -1
  54. package/lib/test/support/jqTreeMatchers.js +4 -9
  55. package/lib/test/support/setupTests.js +0 -4
  56. package/lib/test/support/testUtil.js +2 -11
  57. package/lib/test/support/treeStructure.js +0 -6
  58. package/lib/test/util.test.js +0 -1
  59. package/lib/tree.jquery.js +28 -239
  60. package/lib/util.js +0 -6
  61. package/lib/version.js +1 -1
  62. package/package.json +44 -47
  63. package/src/dragAndDropHandler.ts +24 -10
  64. package/src/elementsRenderer.ts +49 -42
  65. package/src/jqtreeOptions.ts +3 -3
  66. package/src/keyHandler.ts +3 -3
  67. package/src/mouse.widget.ts +12 -0
  68. package/src/node.ts +52 -16
  69. package/src/nodeElement.ts +27 -21
  70. package/src/saveStateHandler.ts +1 -1
  71. package/src/scrollHandler.ts +6 -2
  72. package/src/selectNodeHandler.ts +1 -1
  73. package/src/simple.widget.ts +2 -0
  74. package/src/test/.eslintrc +3 -1
  75. package/src/test/jqTree/accessibility.test.ts +25 -0
  76. package/src/test/jqTree/events.test.ts +79 -93
  77. package/src/test/jqTree/methods.test.ts +1 -1
  78. package/src/test/node.test.ts +152 -58
  79. package/src/test/nodeUtil.test.ts +1 -1
  80. package/src/tree.jquery.ts +7 -6
  81. package/src/version.ts +1 -1
  82. package/tree.jquery.debug.js +297 -904
  83. package/tree.jquery.debug.js.map +1 -1
  84. package/tree.jquery.js +3 -3
  85. package/tree.jquery.js.map +1 -1
  86. package/tsconfig.json +1 -0
  87. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
  88. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.svg +0 -3717
  89. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  90. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
  91. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.svg +0 -801
  92. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  93. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
  94. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.svg +0 -5028
  95. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  96. /package/docs/_entries/{96_getprevioussibling.md → 97_getprevioussibling.md} +0 -0
  97. /package/docs/_entries/{97_parent.md → 99_parent.md} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.6.2\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record<string, Position> = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map<NodeId, Node>;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map<NodeId, Node>();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record<string, unknown>[] => {\n return nodes.map((node) => {\n const tmpNode: Record<string, unknown> = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren() && this.is_open) {\n // First child\n return this.children[0];\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n if (previousSibling) {\n if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n } else {\n return this.getParent();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.$element.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery<HTMLElement>): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery<HTMLElement> | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n if (i === childrenLength - 1) {\n _iterateNode(node.children[i], null);\n } else {\n _iterateNode(node.children[i], node.children[i + 1]);\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery<HTMLElement>): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"<span>\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = Text | Element;\n\nexport default class ElementsRenderer {\n public openedIconElement: IconElement;\n public closedIconElement: IconElement;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\"\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\"\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1\n );\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node)\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n buttonLink.appendChild(iconElement.cloneNode(true));\n\n buttonLink.setAttribute(\"role\", \"presentation\");\n buttonLink.setAttribute(\"aria-hidden\", \"true\");\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n true\n )\n );\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n false\n )\n );\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n level: number,\n isSelected: boolean,\n isOpen: boolean,\n isFolder: boolean\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n titleSpan.setAttribute(\"role\", \"treeitem\");\n titleSpan.setAttribute(\"aria-level\", `${level}`);\n\n titleSpan.setAttribute(\"aria-selected\", getBoolString(isSelected));\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(isOpen));\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(value: string | Element): IconElement {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery<HTMLElement> {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback<any>,\n handleError: JQuery.Ajax.ErrorCallback<any>\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget<unknown> | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget<unknown>;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n }\n };\n};\n\nexport default class SimpleWidget<WidgetOptions> {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery<HTMLElement>;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget<WidgetOptions> extends SimpleWidget<WidgetOptions> {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0];\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record<string, unknown>;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0].tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set<NodeId>();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0];\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery<HTMLElement>;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft()\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"true\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"false\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n\n $span.blur();\n }\n\n protected getUl(): JQuery<HTMLElement> {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery<HTMLElement> {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery<HTMLElement> {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.openedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.closedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery<Element>;\n\n constructor($element: JQuery<Element>, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('<span class=\"jqtree-border\"></span>');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery<Element>;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery<Element>, position: number) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `<li class=\"jqtree_common jqtree-ghost\"><span class=\"jqtree_common jqtree-circle\"></span>\n <span class=\"jqtree_common jqtree-line\"></span></li>`\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0].element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget<JQTreeOptions> {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"&#x25bc;\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - ▼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery<HTMLElement>\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record<string, unknown>)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record<string, unknown>\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery<HTMLElement>): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): boolean[] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery<HTMLElement>);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery<HTMLElement>);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery<HTMLElement>): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"&#x25c0;\";\n } else {\n // triangle to the right\n return \"&#x25ba;\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (!data) {\n return;\n } else {\n this._triggerEvent(\"tree.load_data\", { tree_data: data });\n\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["version","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","isNodeRecordWithChildren","data","Array","Node","o","isRoot","nodeClass","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","key","value","removeChildren","node","createNode","addChild","length","loadFromData","push","setParent","index","splice","doRemoveChild","indexOf","hasChildren","callback","_iterate","level","child","result","movedNode","targetNode","isParentOf","addChildAtPosition","getChildIndex","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByCallback","n","iterate","nodeInfo","childIndex","newParent","originalParent","removeChild","nodeId","get","id","set","removeNodeFromIndex","previousIndex","nextIndex","filter","f","includeChildren","is_open","nextSibling","getNextSibling","getNextNode","previousSibling","getPreviousSibling","getLastChild","getParent","lastChild","addNode","nodeData","addChildren","childrenData","initFromData","addNodeToIndex","getNodeClass","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","pageX","undefined","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","move","area","findHoveredArea","canMoveToArea","isFolder","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","remove","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolder","_openNode","slide","openFolderDelay","openFolderTimer","window","setTimeout","clearTimeout","previousParent","doMove","moveNode","empty","_refreshElements","event","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","VisibleNodeIterator","isFirstNode","_iterateNode","nextNode","mustIterateInside","handleFirstNode","handleNode","handleOpenFolder","handleClosedFolder","childrenLength","forEach","_","i","handleAfterOpenFolder","currentNode","treeBottom","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","nodeName","offsetX","offsetY","$tree","text","html","css","append","isInt","isFunction","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","getLevel","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","mustShowFolder","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","createTitleSpan","liClasses","join","isOpen","titleSpan","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","loadData","parseData","handleError","jqXHR","onLoadFailed","submitRequest","isLoading","onLoading","urlInfoInput","url","ajaxSettings","_objectSpread","method","cache","dataType","success","error","toUpperCase","ajax","dataFilter","getParsedData","JSON","parse","parsedData","KeyHandler","e","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","off","selectNode","getPreviousNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","defaults","constructor","deinit","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","mouseCapture","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","mouseDrag","mouseStart","mouseStop","SaveStateHandler","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","getSelectedNodeIds","selectedNodeIds","getSelectedNodes","open_nodes","selected_node","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","cbFinished","doSetInitialStateOnDemand","getStateFromStorage","onGetStateFromStorage","getItem","nodeIds","getNodeById","selectCount","addToSelection","selectedNodes","removeFromSelection","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","saveState","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ScrollHandler","isInitialized","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","originalTop","scrollParentTop","windowHeight","scrollLeft","getParentWithOverflow","cssAttributes","hasOverFlow","attr","overflowValue","parents","setDocumentAsScrollParent","tagName","initScrollParent","scrollParent","distanceBottom","offsetHeight","refreshHitAreas","distanceTop","dndHandler","handleVerticalScrollingWithScrollParent","handleVerticalScrollingWithDocument","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","mustSetFocus","$li","getLi","$span","getSpan","trigger","removeAttr","blur","FolderElement","animationSpeed","$button","getButton","buttonEl","icon","renderer","doOpen","getUl","slideDown","show","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","optionsParam","getData","doLoadData","param1","param2","param3","doLoadDataFromUrl","getNodeByName","getNodeByNameMustExist","getNodesByProperty","parseParams","close","newNodeInfo","existingNode","newNode","addAfter","addBefore","addParent","parentNodeParam","prepend","idIsChanged","subtree","positionIndex","saveStateHandler","select","deselect","nodeOffset","nodeTop","treeOffset","scrollToY","setInitialState","option","keyHandler","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","open","loadFolderOnDemand","mustSelect","isSelectedNodeInSubtree","render","selectCurrentNode","getScrollLeft","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","checkScrolling","startDndDelay","dataUrl","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","getNodeIdToBeSelected","doInit","setInitialStateOnDemand","restoreState","autoOpenNodes","autoOpen","maxLevel","getAutoOpenMaxLevel","isRestored","parseInt","$target","dataRtl","deselectCurrentNode","defaultOptions","mustToggle","selectOptions","canSelect","onCanSelectNode","selectable","openParents","previous_node","deselectedNode","deselected_node","tree_data","deselectNodes","loadSubtree","initTree","selectedNodesUnderParent","getSelectedNodesUnder","urlInfoParam","loadFromUrl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,IAAMA,OAAO,GAAG,OAAhB;;ECIA,IAAYC,QAAZ,CAAA;;aAAYA;EAAAA,EAAAA,SAAAA;EAAAA,EAAAA,SAAAA;EAAAA,EAAAA,SAAAA;EAAAA,EAAAA,SAAAA;EAAAA,CAAAA,EAAAA,aAAAA;;EAOZ,IAAMC,aAAuC,GAAG;IAC5CC,MAAM,EAAEF,QAAQ,CAACG,MAD2B;IAE5CC,KAAK,EAAEJ,QAAQ,CAACK,KAF4B;IAG5CC,MAAM,EAAEN,QAAQ,CAACO,MAH2B;IAI5CC,IAAI,EAAER,QAAQ,CAACS,IAAAA;EAJ6B,CAAhD,CAAA;EASO,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,QAAD,EAAgC;EAC3D,EAAA,KAAK,IAAMC,IAAX,IAAmBX,aAAnB,EAAkC;EAC9B,IAAA,IAAIY,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCf,aAArC,EAAoDW,IAApD,CAAJ,EAA+D;EAC3D,MAAA,IAAIX,aAAa,CAACW,IAAD,CAAb,KAAwBD,QAA5B,EAAsC;EAClC,QAAA,OAAOC,IAAP,CAAA;EACH,OAAA;EACJ,KAAA;EACJ,GAAA;;EAED,EAAA,OAAO,EAAP,CAAA;EACH,CAVM,CAAA;EAYA,IAAMK,WAAW,GAAG,SAAdA,WAAc,CAACL,IAAD,EAAA;IAAA,OACvBX,aAAa,CAACW,IAAD,CADU,CAAA;EAAA,CAApB,CAAA;;EAGP,IAAMM,wBAAwB,GAAG,SAA3BA,wBAA2B,CAC7BC,IAD6B,EAAA;EAAA,EAAA,OAG7B,OAAOA,CAAAA,IAAP,CAAgB,KAAA,QAAhB,IACA,UAAA,IAAcA,IADd,IAEAA,IAAI,CAAC,UAAD,CAAJ,YAA4BC,KALC,CAAA;EAAA,CAAjC,CAAA;;EAOA,IAAaC,IAAb,gBAAA,YAAA;IAgBI,SAAyE,IAAA,GAAA;MAAA,IAA7DC,CAA6D,uEAAxC,IAAwC,CAAA;MAAA,IAAlCC,MAAkC,uEAAzB,KAAyB,CAAA;MAAA,IAAlBC,SAAkB,uEAANH,IAAM,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MACrE,IAAKT,CAAAA,IAAL,GAAY,EAAZ,CAAA;MACA,IAAKa,CAAAA,aAAL,GAAqB,KAArB,CAAA;MACA,IAAKC,CAAAA,cAAL,GAAsB,KAAtB,CAAA;MAEA,IAAKC,CAAAA,OAAL,CAAaL,CAAb,CAAA,CAAA;MAEA,IAAKM,CAAAA,QAAL,GAAgB,EAAhB,CAAA;MACA,IAAKC,CAAAA,MAAL,GAAc,IAAd,CAAA;;EAEA,IAAA,IAAIN,MAAJ,EAAY;EACR,MAAA,IAAA,CAAKO,SAAL,GAAiB,IAAIC,GAAJ,EAAjB,CAAA;QACA,IAAKC,CAAAA,IAAL,GAAY,IAAZ,CAAA;QACA,IAAKR,CAAAA,SAAL,GAAiBA,SAAjB,CAAA;EACH,KAAA;EACJ,GAAA;EAED;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EA3CA,EAAA,YAAA,CAAA,IAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAiDI,EAAA,SAAA,OAAA,CAAeF,CAAf,EAAyC;QACrC,IAAI,CAACA,CAAL,EAAQ;EACJ,QAAA,OAAA;EACH,OAFD,MAEO,IAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;UAC9B,IAAKV,CAAAA,IAAL,GAAYU,CAAZ,CAAA;EACH,OAFM,MAEA,IAAI,OAAA,CAAOA,CAAP,CAAA,KAAa,QAAjB,EAA2B;EAC9B,QAAA,KAAK,IAAMW,IAAX,IAAkBX,CAAlB,EAAqB;EACjB,UAAA,IAAIT,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCM,CAArC,EAAwCW,IAAxC,CAAJ,EAAkD;EAC9C,YAAA,IAAMC,KAAK,GAAGZ,CAAC,CAACW,IAAD,CAAf,CAAA;;EAEA,YAAA,IAAIA,IAAG,KAAK,OAAR,IAAmBA,IAAG,KAAK,MAA/B,EAAuC;EACnC;EACA,cAAA,IAAI,OAAOC,KAAP,KAAiB,QAArB,EAA+B;kBAC3B,IAAKtB,CAAAA,IAAL,GAAYsB,KAAZ,CAAA;EACH,eAAA;eAJL,MAKO,IAAID,IAAG,KAAK,UAAR,IAAsBA,IAAG,KAAK,QAAlC,EAA4C;EAC/C;gBACA,IAAKA,CAAAA,IAAL,IAAYC,KAAZ,CAAA;EACH,aAAA;EACJ,WAAA;EACJ,SAAA;EACJ,OAAA;EACJ,KAAA;EAED;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAxFA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KA0FI,EAAA,SAAA,YAAA,CAAoBf,IAApB,EAA4C;EACxC,MAAA,IAAA,CAAKgB,cAAL,EAAA,CAAA;;EADwC,MAAA,IAAA,SAAA,GAAA,0BAAA,CAGxBhB,IAHwB,CAAA;EAAA,UAAA,KAAA,CAAA;;EAAA,MAAA,IAAA;UAGxC,KAAsB,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAXG,CAAW,GAAA,KAAA,CAAA,KAAA,CAAA;;EAClB,UAAA,IAAMc,KAAI,GAAG,IAAA,CAAKC,UAAL,CAAgBf,CAAhB,CAAb,CAAA;;YACA,IAAKgB,CAAAA,QAAL,CAAcF,KAAd,CAAA,CAAA;;EAEA,UAAA,IAAIlB,wBAAwB,CAACI,CAAD,CAA5B,EAAiC;EAC7B,YAAA,IAAIA,CAAC,CAACM,QAAF,CAAWW,MAAX,KAAsB,CAA1B,EAA6B;gBACzBH,KAAI,CAACX,aAAL,GAAqB,IAArB,CAAA;EACH,aAFD,MAEO;EACHW,cAAAA,KAAI,CAACI,YAAL,CAAkBlB,CAAC,CAACM,QAApB,CAAA,CAAA;EACH,aAAA;EACJ,WAAA;EACJ,SAAA;EAduC,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;;EAgBxC,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EAED;EACJ;EACA;EACA;EACA;EACA;;EAlHA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAoHI,EAAA,SAAA,QAAA,CAAgBQ,IAAhB,EAAkC;EAC9B,MAAA,IAAA,CAAKR,QAAL,CAAca,IAAd,CAAmBL,IAAnB,CAAA,CAAA;QACAA,IAAI,CAACM,SAAL,CAAe,IAAf,CAAA,CAAA;EACH,KAAA;EAED;EACJ;EACA;EACA;EACA;EACA;EACA;;EA/HA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAiII,SAA0BN,kBAAAA,CAAAA,IAA1B,EAAsCO,KAAtC,EAA2D;QACvD,IAAKf,CAAAA,QAAL,CAAcgB,MAAd,CAAqBD,KAArB,EAA4B,CAA5B,EAA+BP,IAA/B,CAAA,CAAA;QACAA,IAAI,CAACM,SAAL,CAAe,IAAf,CAAA,CAAA;EACH,KAAA;EAED;EACJ;EACA;EACA;;EAzIA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KA2II,EAAA,SAAA,WAAA,CAAmBN,IAAnB,EAAqC;EACjC;EACAA,MAAAA,IAAI,CAACD,cAAL,EAAA,CAAA;QAEA,IAAKU,CAAAA,aAAL,CAAmBT,IAAnB,CAAA,CAAA;EACH,KAAA;EAED;EACJ;EACA;EACA;;EArJA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAuJI,EAAA,SAAA,aAAA,CAAqBA,IAArB,EAAyC;EACrC,MAAA,OAAO,KAAKR,QAAL,CAAckB,OAAd,CAAsBV,IAAtB,CAAP,CAAA;EACH,KAAA;EAED;EACJ;EACA;EACA;EACA;EACA;;EAhKA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAkKI,SAA8B,WAAA,GAAA;EAC1B,MAAA,OAAO,IAAKR,CAAAA,QAAL,CAAcW,MAAd,KAAyB,CAAhC,CAAA;EACH,KAAA;EApKL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAsKI,SAA2B,QAAA,GAAA;EACvB,MAAA,OAAO,IAAKQ,CAAAA,WAAL,EAAsB,IAAA,IAAA,CAAKrB,cAAlC,CAAA;EACH,KAAA;EAED;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EArLA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KA2LI,EAAA,SAAA,OAAA,CAAesB,QAAf,EAAgD;QAC5C,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACb,IAAD,EAAac,KAAb,EAAqC;UAClD,IAAId,IAAI,CAACR,QAAT,EAAmB;YAAA,IACKQ,UAAAA,GAAAA,0BAAAA,CAAAA,IAAI,CAACR,QADV,CAAA;EAAA,cAAA,MAAA,CAAA;;EAAA,UAAA,IAAA;cACf,KAAmC,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,cAAA,IAAxBuB,KAAwB,GAAA,MAAA,CAAA,KAAA,CAAA;EAC/B,cAAA,IAAMC,MAAM,GAAGJ,QAAQ,CAACG,KAAD,EAAQD,KAAR,CAAvB,CAAA;;EAEA,cAAA,IAAIE,MAAM,IAAID,KAAK,CAACJ,WAAN,EAAd,EAAmC;EAC/BE,gBAAAA,QAAQ,CAACE,KAAD,EAAQD,KAAK,GAAG,CAAhB,CAAR,CAAA;EACH,eAAA;EACJ,aAAA;EAPc,WAAA,CAAA,OAAA,GAAA,EAAA;EAAA,YAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,WAAA,SAAA;EAAA,YAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,WAAA;EAQlB,SAAA;SATL,CAAA;;EAYAD,MAAAA,QAAQ,CAAC,IAAD,EAAO,CAAP,CAAR,CAAA;EACH,KAAA;EAED;EACJ;EACA;EACA;EACA;EACA;;EAhNA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAmNI,kBACII,SADJ,EAEIC,UAFJ,EAGI3C,QAHJ,EAIW;QACP,IAAI,CAAC0C,SAAS,CAACxB,MAAX,IAAqBwB,SAAS,CAACE,UAAV,CAAqBD,UAArB,CAAzB,EAA2D;EACvD;EACA;EACA,QAAA,OAAO,KAAP,CAAA;EACH,OAJD,MAIO;EACHD,QAAAA,SAAS,CAACxB,MAAV,CAAiBgB,aAAjB,CAA+BQ,SAA/B,CAAA,CAAA;;EAEA,QAAA,QAAQ1C,QAAR;YACI,KAAKX,QAAQ,CAACK,KAAd;EAAqB,YAAA;gBACjB,IAAIiD,UAAU,CAACzB,MAAf,EAAuB;EACnByB,gBAAAA,UAAU,CAACzB,MAAX,CAAkB2B,kBAAlB,CACIH,SADJ,EAEIC,UAAU,CAACzB,MAAX,CAAkB4B,aAAlB,CAAgCH,UAAhC,IAA8C,CAFlD,CAAA,CAAA;EAIA,gBAAA,OAAO,IAAP,CAAA;EACH,eAAA;;EACD,cAAA,OAAO,KAAP,CAAA;EACH,aAAA;;YAED,KAAKtD,QAAQ,CAACG,MAAd;EAAsB,YAAA;gBAClB,IAAImD,UAAU,CAACzB,MAAf,EAAuB;EACnByB,gBAAAA,UAAU,CAACzB,MAAX,CAAkB2B,kBAAlB,CACIH,SADJ,EAEIC,UAAU,CAACzB,MAAX,CAAkB4B,aAAlB,CAAgCH,UAAhC,CAFJ,CAAA,CAAA;EAIA,gBAAA,OAAO,IAAP,CAAA;EACH,eAAA;;EACD,cAAA,OAAO,KAAP,CAAA;EACH,aAAA;;YAED,KAAKtD,QAAQ,CAACO,MAAd;EAAsB,YAAA;EAClB;EACA+C,cAAAA,UAAU,CAACE,kBAAX,CAA8BH,SAA9B,EAAyC,CAAzC,CAAA,CAAA;EACA,cAAA,OAAO,IAAP,CAAA;EACH,aAAA;;EAED,UAAA;EACI,YAAA,OAAO,KAAP,CAAA;EA9BR,SAAA;EAgCH,OAAA;EACJ,KAAA;EAED;EACJ;EACA;;EApQA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAqQI,SAAoD,OAAA,GAAA;QAAA,IAArCK,aAAqC,uEAArB,KAAqB,CAAA;;EAChD,MAAA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAA8C;EACnE,QAAA,OAAOA,KAAK,CAACC,GAAN,CAAU,UAACzB,IAAD,EAAU;YACvB,IAAM0B,OAAgC,GAAG,EAAzC,CAAA;;EAEA,UAAA,KAAK,IAAMC,CAAX,IAAgB3B,IAAhB,EAAsB;EAClB,YAAA,IACI,CACI,QADJ,EAEI,UAFJ,EAGI,SAHJ,EAII,WAJJ,EAKI,gBALJ,EAMI,WANJ,EAOI,MAPJ,EAQI,eARJ,CASEU,CAAAA,OATF,CASUiB,CATV,MASiB,CAAC,CATlB,IAUAlD,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCoB,IAArC,EAA2C2B,CAA3C,CAXJ,EAYE;EACE,cAAA,IAAMC,CAAC,GAAG5B,IAAI,CAAC2B,CAAD,CAAd,CAAA;EACAD,cAAAA,OAAO,CAACC,CAAD,CAAP,GAAaC,CAAb,CAAA;EACH,aAAA;EACJ,WAAA;;EAED,UAAA,IAAI5B,IAAI,CAACW,WAAL,EAAJ,EAAwB;cACpBe,OAAO,CAAC,UAAD,CAAP,GAAsBH,gBAAgB,CAACvB,IAAI,CAACR,QAAN,CAAtC,CAAA;EACH,WAAA;;EAED,UAAA,OAAOkC,OAAP,CAAA;EACH,SA3BM,CAAP,CAAA;SADJ,CAAA;;EA+BA,MAAA,IAAIJ,aAAJ,EAAmB;EACf,QAAA,OAAOC,gBAAgB,CAAC,CAAC,IAAD,CAAD,CAAvB,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAOA,gBAAgB,CAAC,IAAK/B,CAAAA,QAAN,CAAvB,CAAA;EACH,OAAA;EACJ,KAAA;EA1SL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KA4SI,EAAA,SAAA,aAAA,CAAqBhB,IAArB,EAAgD;EAC5C,MAAA,OAAO,IAAKqD,CAAAA,iBAAL,CAAuB,UAAC7B,IAAD,EAAA;EAAA,QAAA,OAAgBA,IAAI,CAACxB,IAAL,KAAcA,IAA9B,CAAA;EAAA,OAAvB,CAAP,CAAA;EACH,KAAA;EA9SL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KAgTI,EAAA,SAAA,sBAAA,CAA8BA,IAA9B,EAAkD;EAC9C,MAAA,IAAMwB,IAAI,GAAG,IAAA,CAAK6B,iBAAL,CAAuB,UAACC,CAAD,EAAA;EAAA,QAAA,OAAaA,CAAC,CAACtD,IAAF,KAAWA,IAAxB,CAAA;EAAA,OAAvB,CAAb,CAAA;;QAEA,IAAI,CAACwB,IAAL,EAAW;EACP,QAAA,MAAA,iBAAA,CAAA,MAAA,CAAwBxB,IAAxB,EAAA,YAAA,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOwB,IAAP,CAAA;EACH,KAAA;EAxTL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;MAAA,KA0TI,EAAA,SAAA,iBAAA,CAAyBY,QAAzB,EAAyE;QACrE,IAAII,MAAmB,GAAG,IAA1B,CAAA;EAEA,MAAA,IAAA,CAAKe,OAAL,CAAa,UAAC/B,IAAD,EAAgB;EACzB,QAAA,IAAIgB,MAAJ,EAAY;EACR,UAAA,OAAO,KAAP,CAAA;EACH,SAFD,MAEO,IAAIJ,QAAQ,CAACZ,IAAD,CAAZ,EAAoB;EACvBgB,UAAAA,MAAM,GAAGhB,IAAT,CAAA;EACA,UAAA,OAAO,KAAP,CAAA;EACH,SAHM,MAGA;EACH,UAAA,OAAO,IAAP,CAAA;EACH,SAAA;SARL,CAAA,CAAA;EAWA,MAAA,OAAOgB,MAAP,CAAA;EACH,KAAA;EAzUL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KA2UI,EAAA,SAAA,QAAA,CAAgBgB,QAAhB,EAAiD;QAC7C,IAAI,CAAC,IAAKvC,CAAAA,MAAV,EAAkB;EACd,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAMO,MAAI,GAAG,IAAA,CAAKC,UAAL,CAAgB+B,QAAhB,CAAb,CAAA;;UAEA,IAAMC,UAAU,GAAG,IAAKxC,CAAAA,MAAL,CAAY4B,aAAZ,CAA0B,IAA1B,CAAnB,CAAA;UACA,IAAK5B,CAAAA,MAAL,CAAY2B,kBAAZ,CAA+BpB,MAA/B,EAAqCiC,UAAU,GAAG,CAAlD,CAAA,CAAA;;UAEA,IACInD,wBAAwB,CAACkD,QAAD,CAAxB,IACAA,QAAQ,CAACxC,QAAT,CAAkBW,MAFtB,EAGE;EACEH,UAAAA,MAAI,CAACI,YAAL,CAAkB4B,QAAQ,CAACxC,QAA3B,CAAA,CAAA;EACH,SAAA;;EAED,QAAA,OAAOQ,MAAP,CAAA;EACH,OAAA;EACJ,KAAA;EA7VL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KA+VI,EAAA,SAAA,SAAA,CAAiBgC,QAAjB,EAAkD;QAC9C,IAAI,CAAC,IAAKvC,CAAAA,MAAV,EAAkB;EACd,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAMO,MAAI,GAAG,IAAA,CAAKC,UAAL,CAAgB+B,QAAhB,CAAb,CAAA;;UAEA,IAAMC,UAAU,GAAG,IAAKxC,CAAAA,MAAL,CAAY4B,aAAZ,CAA0B,IAA1B,CAAnB,CAAA;EACA,QAAA,IAAA,CAAK5B,MAAL,CAAY2B,kBAAZ,CAA+BpB,MAA/B,EAAqCiC,UAArC,CAAA,CAAA;;UAEA,IACInD,wBAAwB,CAACkD,QAAD,CAAxB,IACAA,QAAQ,CAACxC,QAAT,CAAkBW,MAFtB,EAGE;EACEH,UAAAA,MAAI,CAACI,YAAL,CAAkB4B,QAAQ,CAACxC,QAA3B,CAAA,CAAA;EACH,SAAA;;EAED,QAAA,OAAOQ,MAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAjXL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAmXI,EAAA,SAAA,SAAA,CAAiBgC,QAAjB,EAAkD;QAC9C,IAAI,CAAC,IAAKvC,CAAAA,MAAV,EAAkB;EACd,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAMyC,SAAS,GAAG,IAAA,CAAKjC,UAAL,CAAgB+B,QAAhB,CAAlB,CAAA;;UAEA,IAAI,IAAA,CAAKpC,IAAT,EAAe;EACXsC,UAAAA,SAAS,CAAC5B,SAAV,CAAoB,IAAA,CAAKV,IAAzB,CAAA,CAAA;EACH,SAAA;;UACD,IAAMuC,cAAc,GAAG,IAAA,CAAK1C,MAA5B,CAAA;;UANG,IAQiB0C,UAAAA,GAAAA,0BAAAA,CAAAA,cAAc,CAAC3C,QARhC,CAAA;EAAA,YAAA,MAAA,CAAA;;EAAA,QAAA,IAAA;YAQH,KAA6C,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAAlCuB,KAAkC,GAAA,MAAA,CAAA,KAAA,CAAA;cACzCmB,SAAS,CAAChC,QAAV,CAAmBa,KAAnB,CAAA,CAAA;EACH,WAAA;EAVE,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;;UAYHoB,cAAc,CAAC3C,QAAf,GAA0B,EAA1B,CAAA;UACA2C,cAAc,CAACjC,QAAf,CAAwBgC,SAAxB,CAAA,CAAA;EACA,QAAA,OAAOA,SAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAtYL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAwYI,SAAsB,MAAA,GAAA;QAClB,IAAI,IAAA,CAAKzC,MAAT,EAAiB;EACb,QAAA,IAAA,CAAKA,MAAL,CAAY2C,WAAZ,CAAwB,IAAxB,CAAA,CAAA;UACA,IAAK3C,CAAAA,MAAL,GAAc,IAAd,CAAA;EACH,OAAA;EACJ,KAAA;EA7YL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KA+YI,EAAA,SAAA,MAAA,CAAcuC,QAAd,EAAwC;EACpC,MAAA,IAAMhC,IAAI,GAAG,IAAA,CAAKC,UAAL,CAAgB+B,QAAhB,CAAb,CAAA;QACA,IAAK9B,CAAAA,QAAL,CAAcF,IAAd,CAAA,CAAA;;QAEA,IAAIlB,wBAAwB,CAACkD,QAAD,CAAxB,IAAsCA,QAAQ,CAACxC,QAAT,CAAkBW,MAA5D,EAAoE;EAChEH,QAAAA,IAAI,CAACI,YAAL,CAAkB4B,QAAQ,CAACxC,QAA3B,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOQ,IAAP,CAAA;EACH,KAAA;EAxZL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KA0ZI,EAAA,SAAA,OAAA,CAAegC,QAAf,EAAyC;EACrC,MAAA,IAAMhC,IAAI,GAAG,IAAA,CAAKC,UAAL,CAAgB+B,QAAhB,CAAb,CAAA;EACA,MAAA,IAAA,CAAKZ,kBAAL,CAAwBpB,IAAxB,EAA8B,CAA9B,CAAA,CAAA;;QAEA,IAAIlB,wBAAwB,CAACkD,QAAD,CAAxB,IAAsCA,QAAQ,CAACxC,QAAT,CAAkBW,MAA5D,EAAoE;EAChEH,QAAAA,IAAI,CAACI,YAAL,CAAkB4B,QAAQ,CAACxC,QAA3B,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOQ,IAAP,CAAA;EACH,KAAA;EAnaL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAqaI,EAAA,SAAA,UAAA,CAAkBA,IAAlB,EAAuC;EACnC,MAAA,IAAIP,MAAM,GAAGO,IAAI,CAACP,MAAlB,CAAA;;EAEA,MAAA,OAAOA,MAAP,EAAe;UACX,IAAIA,MAAM,KAAK,IAAf,EAAqB;EACjB,UAAA,OAAO,IAAP,CAAA;EACH,SAAA;;UAEDA,MAAM,GAAGA,MAAM,CAACA,MAAhB,CAAA;EACH,OAAA;;EAED,MAAA,OAAO,KAAP,CAAA;EACH,KAAA;EAjbL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAmbI,SAA0B,QAAA,GAAA;QACtB,IAAIqB,KAAK,GAAG,CAAZ,CAAA;EACA,MAAA,IAAId,IAAU,GAAG,IAAjB,CAFsB;;QAItB,OAAOA,IAAI,CAACP,MAAZ,EAAoB;EAChBqB,QAAAA,KAAK,IAAI,CAAT,CAAA;UACAd,IAAI,GAAGA,IAAI,CAACP,MAAZ,CAAA;EACH,OAAA;;EAED,MAAA,OAAOqB,KAAP,CAAA;EACH,KAAA;EA7bL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KA+bI,EAAA,SAAA,WAAA,CAAmBuB,MAAnB,EAAgD;EAC5C,MAAA,OAAO,KAAK3C,SAAL,CAAe4C,GAAf,CAAmBD,MAAnB,KAA8B,IAArC,CAAA;EACH,KAAA;EAjcL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAmcI,EAAA,SAAA,cAAA,CAAsBrC,IAAtB,EAAwC;EACpC,MAAA,IAAIA,IAAI,CAACuC,EAAL,IAAW,IAAf,EAAqB;UACjB,IAAK7C,CAAAA,SAAL,CAAe8C,GAAf,CAAmBxC,IAAI,CAACuC,EAAxB,EAA4BvC,IAA5B,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EAvcL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KAycI,EAAA,SAAA,mBAAA,CAA2BA,IAA3B,EAA6C;EACzC,MAAA,IAAIA,IAAI,CAACuC,EAAL,IAAW,IAAf,EAAqB;EACjB,QAAA,IAAA,CAAK7C,SAAL,CAAA,QAAA,CAAA,CAAsBM,IAAI,CAACuC,EAA3B,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EA7cL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EA+cI,SAA8B,cAAA,GAAA;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;EAC1B,MAAA,IAAA,CAAKR,OAAL,CAAa,UAAChB,KAAD,EAAiB;EAAA,QAAA,IAAA,UAAA,CAAA;;EAC1B,QAAA,CAAA,UAAA,GAAA,KAAI,CAACnB,IAAL,MAAW6C,IAAAA,IAAAA,UAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAAA,mBAAX,CAA+B1B,KAA/B,CAAA,CAAA;EACA,QAAA,OAAO,IAAP,CAAA;SAFJ,CAAA,CAAA;QAKA,IAAKvB,CAAAA,QAAL,GAAgB,EAAhB,CAAA;EACH,KAAA;EAtdL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAwdI,SAAyC,kBAAA,GAAA;QACrC,IAAI,CAAC,IAAKC,CAAAA,MAAV,EAAkB;EACd,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;UACH,IAAMiD,aAAa,GAAG,IAAKjD,CAAAA,MAAL,CAAY4B,aAAZ,CAA0B,IAA1B,CAAA,GAAkC,CAAxD,CAAA;;UACA,IAAIqB,aAAa,IAAI,CAArB,EAAwB;EACpB,UAAA,OAAO,KAAKjD,MAAL,CAAYD,QAAZ,CAAqBkD,aAArB,CAAP,CAAA;EACH,SAFD,MAEO;EACH,UAAA,OAAO,IAAP,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EAneL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAqeI,SAAqC,cAAA,GAAA;QACjC,IAAI,CAAC,IAAKjD,CAAAA,MAAV,EAAkB;EACd,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;UACH,IAAMkD,SAAS,GAAG,IAAKlD,CAAAA,MAAL,CAAY4B,aAAZ,CAA0B,IAA1B,CAAA,GAAkC,CAApD,CAAA;;UACA,IAAIsB,SAAS,GAAG,IAAKlD,CAAAA,MAAL,CAAYD,QAAZ,CAAqBW,MAArC,EAA6C;EACzC,UAAA,OAAO,KAAKV,MAAL,CAAYD,QAAZ,CAAqBmD,SAArB,CAAP,CAAA;EACH,SAFD,MAEO;EACH,UAAA,OAAO,IAAP,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EAhfL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAkfI,SAA0B9C,kBAAAA,CAAAA,GAA1B,EAAuCC,KAAvC,EAA+D;EAC3D,MAAA,OAAO,IAAK8C,CAAAA,MAAL,CAAY,UAAC5C,IAAD,EAAA;EAAA,QAAA,OAAgBA,IAAI,CAACH,GAAD,CAAJ,KAAcC,KAA9B,CAAA;EAAA,OAAZ,CAAP,CAAA;EACH,KAAA;EApfL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAsfI,EAAA,SAAA,MAAA,CAAc+C,CAAd,EAAkD;QAC9C,IAAM7B,MAAc,GAAG,EAAvB,CAAA;EAEA,MAAA,IAAA,CAAKe,OAAL,CAAa,UAAC/B,IAAD,EAAgB;EACzB,QAAA,IAAI6C,CAAC,CAAC7C,IAAD,CAAL,EAAa;YACTgB,MAAM,CAACX,IAAP,CAAYL,IAAZ,CAAA,CAAA;EACH,SAAA;;EAED,QAAA,OAAO,IAAP,CAAA;SALJ,CAAA,CAAA;EAQA,MAAA,OAAOgB,MAAP,CAAA;EACH,KAAA;EAlgBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAogBI,SAAwD,WAAA,GAAA;QAAA,IAArC8B,eAAqC,uEAAnB,IAAmB,CAAA;;QACpD,IAAIA,eAAe,IAAI,IAAKnC,CAAAA,WAAL,EAAnB,IAAyC,IAAA,CAAKoC,OAAlD,EAA2D;EACvD;EACA,QAAA,OAAO,IAAKvD,CAAAA,QAAL,CAAc,CAAd,CAAP,CAAA;EACH,OAHD,MAGO;UACH,IAAI,CAAC,IAAKC,CAAAA,MAAV,EAAkB;EACd,UAAA,OAAO,IAAP,CAAA;EACH,SAFD,MAEO;EACH,UAAA,IAAMuD,WAAW,GAAG,IAAKC,CAAAA,cAAL,EAApB,CAAA;;EACA,UAAA,IAAID,WAAJ,EAAiB;EACb;EACA,YAAA,OAAOA,WAAP,CAAA;EACH,WAHD,MAGO;EACH;EACA,YAAA,OAAO,KAAKvD,MAAL,CAAYyD,WAAZ,CAAwB,KAAxB,CAAP,CAAA;EACH,WAAA;EACJ,SAAA;EACJ,OAAA;EACJ,KAAA;EAthBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAwhBI,SAAsC,eAAA,GAAA;QAClC,IAAI,CAAC,IAAKzD,CAAAA,MAAV,EAAkB;EACd,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAM0D,eAAe,GAAG,IAAKC,CAAAA,kBAAL,EAAxB,CAAA;;EACA,QAAA,IAAID,eAAJ,EAAqB;YACjB,IACI,CAACA,eAAe,CAACxC,WAAhB,EAAD,IACA,CAACwC,eAAe,CAACJ,OAFrB,EAGE;EACE;EACA,YAAA,OAAOI,eAAP,CAAA;EACH,WAND,MAMO;EACH;cACA,OAAOA,eAAe,CAACE,YAAhB,EAAP,CAAA;EACH,WAAA;EACJ,SAXD,MAWO;YACH,OAAO,IAAA,CAAKC,SAAL,EAAP,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EA5iBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EA8iBI,SAAgC,SAAA,GAAA;EAC5B;QACA,IAAI,CAAC,IAAK7D,CAAAA,MAAV,EAAkB;EACd,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO,IAAI,CAAC,KAAKA,MAAL,CAAYA,MAAjB,EAAyB;EAC5B;EACA,QAAA,OAAO,IAAP,CAAA;EACH,OAHM,MAGA;EACH,QAAA,OAAO,KAAKA,MAAZ,CAAA;EACH,OAAA;EACJ,KAAA;EAxjBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EA0jBI,SAAmC,YAAA,GAAA;EAC/B,MAAA,IAAI,CAAC,IAAA,CAAKkB,WAAL,EAAL,EAAyB;EACrB,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;UACH,IAAM4C,SAAS,GAAG,IAAA,CAAK/D,QAAL,CAAc,IAAKA,CAAAA,QAAL,CAAcW,MAAd,GAAuB,CAArC,CAAlB,CAAA;;UACA,IAAI,EAAEoD,SAAS,CAAC5C,WAAV,MAA2B4C,SAAS,CAACR,OAAvC,CAAJ,EAAqD;EACjD,UAAA,OAAOQ,SAAP,CAAA;EACH,SAFD,MAEO;YACH,OAAOA,SAAS,CAACF,YAAV,EAAP,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KArkBL;;EAAA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAwkBI,EAAA,SAAA,YAAA,CAAoBtE,IAApB,EAA0C;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACtC,MAAA,IAAMyE,OAAO,GAAG,SAAVA,OAAU,CAACC,QAAD,EAA8B;UAC1C,MAAI,CAAClE,OAAL,CAAakE,QAAb,CAAA,CAAA;;UAEA,IACI3E,wBAAwB,CAAC2E,QAAD,CAAxB,IACAA,QAAQ,CAACjE,QAAT,CAAkBW,MAFtB,EAGE;EACEuD,UAAAA,WAAW,CAACD,QAAQ,CAACjE,QAAV,CAAX,CAAA;EACH,SAAA;SARL,CAAA;;EAWA,MAAA,IAAMkE,WAAW,GAAG,SAAdA,WAAc,CAACC,YAAD,EAAoC;EAAA,QAAA,IAAA,UAAA,GAAA,0BAAA,CAChCA,YADgC,CAAA;EAAA,YAAA,MAAA,CAAA;;EAAA,QAAA,IAAA;YACpD,KAAkC,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAAvB5C,KAAuB,GAAA,MAAA,CAAA,KAAA,CAAA;;EAC9B,YAAA,IAAMf,MAAI,GAAG,MAAI,CAACC,UAAL,EAAb,CAAA;;cACAD,MAAI,CAAC4D,YAAL,CAAkB7C,KAAlB,CAAA,CAAA;;cACA,MAAI,CAACb,QAAL,CAAcF,MAAd,CAAA,CAAA;EACH,WAAA;EALmD,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;SAAxD,CAAA;;QAQAwD,OAAO,CAACzE,IAAD,CAAP,CAAA;EACH,KAAA;EA7lBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KA+lBI,EAAA,SAAA,SAAA,CAAkBU,MAAlB,EAAsC;EAAA,MAAA,IAAA,WAAA,CAAA;;QAClC,IAAKA,CAAAA,MAAL,GAAcA,MAAd,CAAA;EACA,MAAA,IAAA,CAAKG,IAAL,GAAYH,MAAM,CAACG,IAAnB,CAAA;EACA,MAAA,CAAA,WAAA,GAAA,IAAA,CAAKA,IAAL,MAAA,IAAA,IAAA,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAWiE,cAAX,CAA0B,IAA1B,CAAA,CAAA;EACH,KAAA;EAnmBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAqmBI,EAAA,SAAA,aAAA,CAAsB7D,IAAtB,EAAwC;EAAA,MAAA,IAAA,WAAA,CAAA;;QACpC,IAAKR,CAAAA,QAAL,CAAcgB,MAAd,CAAqB,IAAA,CAAKa,aAAL,CAAmBrB,IAAnB,CAArB,EAA+C,CAA/C,CAAA,CAAA;EACA,MAAA,CAAA,WAAA,GAAA,IAAA,CAAKJ,IAAL,MAAA,IAAA,IAAA,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAW6C,mBAAX,CAA+BzC,IAA/B,CAAA,CAAA;EACH,KAAA;EAxmBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EA0mBI,SAAoC,YAAA,GAAA;EAAA,MAAA,IAAA,WAAA,CAAA;;EAChC,MAAA,OAAO,IAAKZ,CAAAA,SAAL,KAAkB,IAAlB,KAAkB,IAAA,IAAA,IAAlB,KAAkB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA,WAAA,GAAA,IAAA,CAAMQ,IAAxB,MAAA,IAAA,IAAA,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAkB,WAAYR,CAAAA,SAA9B,KAA2CH,IAAlD,CAAA;EACH,KAAA;EA5mBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KA8mBI,EAAA,SAAA,UAAA,CAAmBwE,QAAnB,EAA8C;EAC1C,MAAA,IAAMrE,SAAS,GAAG,IAAK0E,CAAAA,YAAL,EAAlB,CAAA;EACA,MAAA,OAAO,IAAI1E,SAAJ,CAAcqE,QAAd,CAAP,CAAA;EACH,KAAA;EAjnBL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,IAAA,CAAA;EAAA,CAAA,EAAA;;EC9BA,IAAaM,kBAAb,gBAAA,YAAA;EAYI,EAAA,SAAA,kBAAA,CAAYC,UAAZ,EAAsC;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAClC,IAAKA,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;MAEA,IAAKC,CAAAA,WAAL,GAAmB,IAAnB,CAAA;MACA,IAAKC,CAAAA,QAAL,GAAgB,EAAhB,CAAA;MACA,IAAKC,CAAAA,UAAL,GAAkB,KAAlB,CAAA;MACA,IAAKC,CAAAA,WAAL,GAAmB,IAAnB,CAAA;MACA,IAAKC,CAAAA,YAAL,GAAoB,IAApB,CAAA;EACH,GAAA;;EApBL,EAAA,YAAA,CAAA,kBAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAsBI,EAAA,SAAA,YAAA,CAAoBA,YAApB,EAAgE;EAC5D,MAAA,IAAMC,QAAQ,GAAGC,MAAM,CAACF,YAAY,CAACG,MAAd,CAAvB,CAAA;;EAEA,MAAA,IAAI,CAAC,IAAKC,CAAAA,kBAAL,CAAwBH,QAAxB,CAAL,EAAwC;EACpC,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;;EAED,MAAA,IACI,KAAKN,UAAL,CAAgBU,OAAhB,CAAwBC,cAAxB,IACA,CAAC,IAAKX,CAAAA,UAAL,CAAgBU,OAAhB,CAAwBC,cAAxB,CAAuCL,QAAvC,CAFL,EAGE;EACE,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;;QAED,IAAIM,WAAW,GAAG,IAAKZ,CAAAA,UAAL,CAAgBa,eAAhB,CAAgCP,QAAhC,CAAlB,CAAA;;QAEA,IAAIM,WAAW,IAAI,IAAKZ,CAAAA,UAAL,CAAgBU,OAAhB,CAAwBI,SAA3C,EAAsD;EAClD,QAAA,IAAI,CAAC,IAAA,CAAKd,UAAL,CAAgBU,OAAhB,CAAwBI,SAAxB,CAAkCF,WAAW,CAAC5E,IAA9C,CAAL,EAA0D;EACtD4E,UAAAA,WAAW,GAAG,IAAd,CAAA;EACH,SAAA;EACJ,OAAA;;QAED,IAAKR,CAAAA,WAAL,GAAmBQ,WAAnB,CAAA;QACA,OAAO,IAAA,CAAKR,WAAL,IAAoB,IAA3B,CAAA;EACH,KAAA;EA9CL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAgDI,EAAA,SAAA,UAAA,CAAkBC,YAAlB,EAAuD;EAAA,MAAA,IAAA,qBAAA,CAAA;;EACnD,MAAA,IACI,CAAC,IAAA,CAAKD,WAAN,IACAC,YAAY,CAACU,KAAb,KAAuBC,SADvB,IAEAX,YAAY,CAACY,KAAb,KAAuBD,SAH3B,EAIE;EACE,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAKE,OAAL,EAAA,CAAA;QAEA,IAAMC,MAAM,GAAGZ,MAAM,CAACF,YAAY,CAACG,MAAd,CAAN,CAA4BW,MAA5B,EAAf,CAAA;QACA,IAAMC,IAAI,GAAGD,MAAM,GAAGA,MAAM,CAACC,IAAV,GAAiB,CAApC,CAAA;QACA,IAAMC,GAAG,GAAGF,MAAM,GAAGA,MAAM,CAACE,GAAV,GAAgB,CAAlC,CAAA;EAEA,MAAA,IAAMrF,IAAI,GAAG,IAAKoE,CAAAA,WAAL,CAAiBpE,IAA9B,CAAA;EAEA,MAAA,IAAA,CAAKsF,WAAL,GAAmB,IAAIC,WAAJ,CACfvF,IAAI,CAACxB,IADU,EAEf6F,YAAY,CAACU,KAAb,GAAqBK,IAFN,EAGff,YAAY,CAACY,KAAb,GAAqBI,GAHN,EAIf,IAAKrB,CAAAA,UAAL,CAAgBwB,OAJD,EAAA,CAAA,qBAAA,GAKf,IAAKxB,CAAAA,UAAL,CAAgBU,OAAhB,CAAwBe,UALT,MAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAKuB,IALvB,CAAnB,CAAA;QAQA,IAAKtB,CAAAA,UAAL,GAAkB,IAAlB,CAAA;QACA,IAAKE,CAAAA,YAAL,GAAoBA,YAApB,CAAA;EACA,MAAA,IAAA,CAAKD,WAAL,CAAiBE,QAAjB,CAA0BoB,QAA1B,CAAmC,eAAnC,CAAA,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EA7EL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KA+EI,EAAA,SAAA,SAAA,CAAiBrB,YAAjB,EAAsD;EAClD,MAAA,IACI,CAAC,IAAKD,CAAAA,WAAN,IACA,CAAC,IAAA,CAAKkB,WADN,IAEAjB,YAAY,CAACU,KAAb,KAAuBC,SAFvB,IAGAX,YAAY,CAACY,KAAb,KAAuBD,SAJ3B,EAKE;EACE,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;;QAED,IAAKM,CAAAA,WAAL,CAAiBK,IAAjB,CAAsBtB,YAAY,CAACU,KAAnC,EAA0CV,YAAY,CAACY,KAAvD,CAAA,CAAA;QACA,IAAKZ,CAAAA,YAAL,GAAoBA,YAApB,CAAA;EAEA,MAAA,IAAMuB,IAAI,GAAG,IAAKC,CAAAA,eAAL,CACTxB,YAAY,CAACU,KADJ,EAETV,YAAY,CAACY,KAFJ,CAAb,CAAA;;EAKA,MAAA,IAAIW,IAAI,IAAI,IAAA,CAAKE,aAAL,CAAmBF,IAAnB,CAAZ,EAAsC;EAClC,QAAA,IAAI,CAACA,IAAI,CAAC5F,IAAL,CAAU+F,QAAV,EAAL,EAA2B;EACvB,UAAA,IAAA,CAAKC,mBAAL,EAAA,CAAA;EACH,SAAA;;EAED,QAAA,IAAI,IAAK/B,CAAAA,WAAL,KAAqB2B,IAAzB,EAA+B;EAC3B,UAAA,IAAA,CAAK3B,WAAL,GAAmB2B,IAAnB,CAD2B;;EAI3B,UAAA,IAAI,IAAKK,CAAAA,mBAAL,CAAyBL,IAAzB,CAAJ,EAAoC;EAChC,YAAA,IAAA,CAAKM,oBAAL,CAA0BN,IAAI,CAAC5F,IAA/B,CAAA,CAAA;EACH,WAFD,MAEO;EACH,YAAA,IAAA,CAAKgG,mBAAL,EAAA,CAAA;EACH,WAAA;;EAED,UAAA,IAAA,CAAKG,cAAL,EAAA,CAAA;EACH,SAAA;EACJ,OAjBD,MAiBO;EACH,QAAA,IAAA,CAAKC,cAAL,EAAA,CAAA;EACA,QAAA,IAAA,CAAKJ,mBAAL,EAAA,CAAA;UACA,IAAK/B,CAAAA,WAAL,GAAmB2B,IAAnB,CAAA;EACH,OAAA;;QAED,IAAI,CAACA,IAAL,EAAW;EACP,QAAA,IAAI,KAAK5B,UAAL,CAAgBU,OAAhB,CAAwB2B,UAA5B,EAAwC;EACpC,UAAA,IAAA,CAAKrC,UAAL,CAAgBU,OAAhB,CAAwB2B,UAAxB,CACI,IAAKjC,CAAAA,WAAL,CAAiBpE,IADrB,EAEIqE,YAAY,CAACiC,aAFjB,CAAA,CAAA;EAIH,SAAA;EACJ,OAAA;;EAED,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EAlIL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAoII,EAAA,SAAA,SAAA,CAAiBjC,YAAjB,EAAsD;QAClD,IAAKkC,CAAAA,QAAL,CAAclC,YAAd,CAAA,CAAA;EACA,MAAA,IAAA,CAAKmC,KAAL,EAAA,CAAA;EACA,MAAA,IAAA,CAAKC,WAAL,EAAA,CAAA;EACA,MAAA,IAAA,CAAKL,cAAL,EAAA,CAAA;EACA,MAAA,IAAA,CAAKM,cAAL,EAAA,CAAA;QAEA,IAAMtC,WAAW,GAAG,IAAA,CAAKA,WAAzB,CAAA;;QAEA,IAAI,IAAA,CAAKA,WAAT,EAAsB;EAClB,QAAA,IAAA,CAAKA,WAAL,CAAiBE,QAAjB,CAA0BqC,WAA1B,CAAsC,eAAtC,CAAA,CAAA;UACA,IAAKvC,CAAAA,WAAL,GAAmB,IAAnB,CAAA;EACH,OAAA;;QAED,IAAKD,CAAAA,UAAL,GAAkB,KAAlB,CAAA;QACA,IAAKE,CAAAA,YAAL,GAAoB,IAApB,CAAA;;EAEA,MAAA,IAAI,CAAC,IAAA,CAAKJ,WAAN,IAAqBG,WAAzB,EAAsC;EAClC,QAAA,IAAI,KAAKJ,UAAL,CAAgBU,OAAhB,CAAwBkC,UAA5B,EAAwC;EACpC,UAAA,IAAA,CAAK5C,UAAL,CAAgBU,OAAhB,CAAwBkC,UAAxB,CACIxC,WAAW,CAACpE,IADhB,EAEIqE,YAAY,CAACiC,aAFjB,CAAA,CAAA;EAIH,SAAA;EACJ,OAAA;;EAED,MAAA,OAAO,KAAP,CAAA;EACH,KAAA;EA/JL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAiKI,SAAuB,OAAA,GAAA;EACnB,MAAA,IAAA,CAAKI,cAAL,EAAA,CAAA;;QAEA,IAAI,IAAA,CAAKtC,WAAT,EAAsB;EAClB,QAAA,IAAA,CAAKyC,gBAAL,EAAA,CAAA;UAEA,IAAKzC,CAAAA,WAAL,GAAmB,IAAA,CAAKJ,UAAL,CAAgB8C,sBAAhB,CACf,IAAK1C,CAAAA,WAAL,CAAiBpE,IADF,CAAnB,CAAA;;UAIA,IAAI,IAAA,CAAKmE,UAAT,EAAqB;EACjB,UAAA,IAAA,CAAKC,WAAL,CAAiBE,QAAjB,CAA0BoB,QAA1B,CAAmC,eAAnC,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EA/KL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAiLI,SAAiC,gBAAA,GAAA;QAC7B,IAAI,CAAC,IAAKtB,CAAAA,WAAV,EAAuB;UACnB,IAAKF,CAAAA,QAAL,GAAgB,EAAhB,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAM6C,iBAAiB,GAAG,IAAIC,iBAAJ,CACtB,IAAA,CAAKhD,UAAL,CAAgBpE,IADM,EAEtB,IAAKwE,CAAAA,WAAL,CAAiBpE,IAFK,EAGtB,KAAKiH,iBAAL,EAAA,CAAyBC,MAHH,CAA1B,CAAA;EAKA,QAAA,IAAA,CAAKhD,QAAL,GAAgB6C,iBAAiB,CAACI,QAAlB,EAAhB,CAAA;EACH,OAAA;EACJ,KAAA;EA5LL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;MAAA,KA8LI,EAAA,SAAA,kBAAA,CAA2B7C,QAA3B,EAAmE;EAC/D,MAAA,OAAO,CAACA,QAAQ,CAAC8C,EAAT,CAAY,uBAAZ,CAAR,CAAA;EACH,KAAA;EAhML,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAkMI,EAAA,SAAA,aAAA,CAAsBxB,IAAtB,EAA8C;EAC1C,MAAA,IAAI,CAAC,IAAK5B,CAAAA,UAAL,CAAgBU,OAAhB,CAAwB2C,WAA7B,EAA0C;EACtC,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;;QAED,IAAI,CAAC,IAAKjD,CAAAA,WAAV,EAAuB;EACnB,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;;EAED,MAAA,IAAMkD,YAAY,GAAGhJ,eAAe,CAACsH,IAAI,CAACrH,QAAN,CAApC,CAAA;EAEA,MAAA,OAAO,KAAKyF,UAAL,CAAgBU,OAAhB,CAAwB2C,WAAxB,CACH,IAAA,CAAKjD,WAAL,CAAiBpE,IADd,EAEH4F,IAAI,CAAC5F,IAFF,EAGHsH,YAHG,CAAP,CAAA;EAKH,KAAA;EAlNL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAoNI,SAA+B,cAAA,GAAA;QAC3B,IAAKpD,CAAAA,QAAL,GAAgB,EAAhB,CAAA;EACH,KAAA;EAtNL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAwNI,SAAsB,KAAA,GAAA;QAClB,IAAI,IAAA,CAAKoB,WAAT,EAAsB;UAClB,IAAKA,CAAAA,WAAL,CAAiBiC,MAAjB,EAAA,CAAA;UACA,IAAKjC,CAAAA,WAAL,GAAmB,IAAnB,CAAA;EACH,OAAA;EACJ,KAAA;EA7NL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EA+NI,SAA+B,cAAA,GAAA;QAC3B,IAAI,IAAA,CAAKkC,aAAT,EAAwB;UACpB,IAAKA,CAAAA,aAAL,CAAmBD,MAAnB,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EAnOL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAqOI,SAA4B,WAAA,GAAA;QACxB,IAAKtD,CAAAA,WAAL,GAAmB,IAAnB,CAAA;EACH,KAAA;EAvOL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAyOI,SAAwBwD,eAAAA,CAAAA,CAAxB,EAAmCC,CAAnC,EAA8D;EAC1D,MAAA,IAAMC,UAAU,GAAG,IAAKV,CAAAA,iBAAL,EAAnB,CAAA;;QAEA,IACIQ,CAAC,GAAGE,UAAU,CAACvC,IAAf,IACAsC,CAAC,GAAGC,UAAU,CAACtC,GADf,IAEAoC,CAAC,GAAGE,UAAU,CAACC,KAFf,IAGAF,CAAC,GAAGC,UAAU,CAACT,MAJnB,EAKE;EACE,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;;QAED,IAAIW,GAAG,GAAG,CAAV,CAAA;EACA,MAAA,IAAIC,IAAI,GAAG,IAAK5D,CAAAA,QAAL,CAAc/D,MAAzB,CAAA;;QACA,OAAO0H,GAAG,GAAGC,IAAb,EAAmB;EACf,QAAA,IAAMC,GAAG,GAAIF,GAAG,GAAGC,IAAP,IAAgB,CAA5B,CAAA;EACA,QAAA,IAAMlC,IAAI,GAAG,IAAA,CAAK1B,QAAL,CAAc6D,GAAd,CAAb,CAAA;;EAEA,QAAA,IAAIL,CAAC,GAAG9B,IAAI,CAACP,GAAb,EAAkB;EACdyC,UAAAA,IAAI,GAAGC,GAAP,CAAA;EACH,SAFD,MAEO,IAAIL,CAAC,GAAG9B,IAAI,CAACsB,MAAb,EAAqB;YACxBW,GAAG,GAAGE,GAAG,GAAG,CAAZ,CAAA;EACH,SAFM,MAEA;EACH,UAAA,OAAOnC,IAAP,CAAA;EACH,SAAA;EACJ,OAAA;;EAED,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EArQL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KAuQI,EAAA,SAAA,mBAAA,CAA4BA,IAA5B,EAAoD;EAChD,MAAA,IAAM5F,IAAI,GAAG4F,IAAI,CAAC5F,IAAlB,CAAA;EAEA,MAAA,OACIA,IAAI,CAAC+F,QAAL,EAAA,IACA,CAAC/F,IAAI,CAAC+C,OADN,IAEA6C,IAAI,CAACrH,QAAL,KAAkBX,QAAQ,CAACO,MAH/B,CAAA;EAKH,KAAA;EA/QL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAiRI,SAA+B,cAAA,GAAA;QAC3B,IAAI,CAAC,IAAK8F,CAAAA,WAAV,EAAuB;EACnB,QAAA,OAAA;EACH,OAH0B;;;QAM3B,IAAKmC,CAAAA,cAAL,GAN2B;;QAS3B,IAAMxB,WAAW,GAAG,IAAA,CAAKZ,UAAL,CAAgB8C,sBAAhB,CAChB,IAAK7C,CAAAA,WAAL,CAAiBjE,IADD,CAApB,CAAA;;QAGA,IAAKwH,CAAAA,aAAL,GAAqB5C,WAAW,CAACoD,WAAZ,CAAwB,IAAK/D,CAAAA,WAAL,CAAiB1F,QAAzC,CAArB,CAAA;EACH,KAAA;EA9RL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;MAAA,KAgSI,EAAA,SAAA,oBAAA,CAA6B0J,MAA7B,EAAiD;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;EAC7C,MAAA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAY;EAC3B,QAAA,KAAI,CAAClE,UAAL,CAAgBmE,SAAhB,CACIF,MADJ,EAEI,KAAI,CAACjE,UAAL,CAAgBU,OAAhB,CAAwB0D,KAF5B,EAGI,YAAM;EACF,UAAA,KAAI,CAAClD,OAAL,EAAA,CAAA;;EACA,UAAA,KAAI,CAACiB,cAAL,EAAA,CAAA;WALR,CAAA,CAAA;SADJ,CAAA;;EAWA,MAAA,IAAA,CAAKH,mBAAL,EAAA,CAAA;EAEA,MAAA,IAAMqC,eAAe,GAAG,IAAA,CAAKrE,UAAL,CAAgBU,OAAhB,CAAwB2D,eAAhD,CAAA;;QAEA,IAAIA,eAAe,KAAK,KAAxB,EAA+B;UAC3B,IAAKC,CAAAA,eAAL,GAAuBC,MAAM,CAACC,UAAP,CACnBN,UADmB,EAEnBG,eAFmB,CAAvB,CAAA;EAIH,OAAA;EACJ,KAAA;EAtTL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EAwTI,SAAoC,mBAAA,GAAA;QAChC,IAAI,IAAA,CAAKC,eAAT,EAA0B;UACtBG,YAAY,CAAC,IAAKH,CAAAA,eAAN,CAAZ,CAAA;UACA,IAAKA,CAAAA,eAAL,GAAuB,IAAvB,CAAA;EACH,OAAA;EACJ,KAAA;EA7TL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KA+TI,EAAA,SAAA,QAAA,CAAiBjE,YAAjB,EAAmD;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QAC/C,IACI,IAAA,CAAKD,WAAL,IACA,IAAA,CAAKH,WADL,IAEA,IAAA,CAAKA,WAAL,CAAiB1F,QAAjB,KAA8BX,QAAQ,CAACS,IAFvC,IAGA,IAAA,CAAKyH,aAAL,CAAmB,IAAA,CAAK7B,WAAxB,CAJJ,EAKE;EACE,QAAA,IAAMhD,SAAS,GAAG,IAAKmD,CAAAA,WAAL,CAAiBpE,IAAnC,CAAA;EACA,QAAA,IAAMkB,UAAU,GAAG,IAAK+C,CAAAA,WAAL,CAAiBjE,IAApC,CAAA;EACA,QAAA,IAAMzB,QAAQ,GAAG,IAAK0F,CAAAA,WAAL,CAAiB1F,QAAlC,CAAA;EACA,QAAA,IAAMmK,cAAc,GAAGzH,SAAS,CAACxB,MAAjC,CAAA;;EAEA,QAAA,IAAIlB,QAAQ,KAAKX,QAAQ,CAACO,MAA1B,EAAkC;EAC9B,UAAA,IAAA,CAAK8F,WAAL,CAAiBjE,IAAjB,CAAsB+C,OAAtB,GAAgC,IAAhC,CAAA;EACH,SAAA;;EAED,QAAA,IAAM4F,MAAM,GAAG,SAATA,MAAS,GAAY;YACvB,MAAI,CAAC3E,UAAL,CAAgBpE,IAAhB,CAAqBgJ,QAArB,CAA8B3H,SAA9B,EAAyCC,UAAzC,EAAqD3C,QAArD,CAAA,CAAA;;EACA,UAAA,MAAI,CAACyF,UAAL,CAAgBwB,OAAhB,CAAwBqD,KAAxB,EAAA,CAAA;;EACA,UAAA,MAAI,CAAC7E,UAAL,CAAgB8E,gBAAhB,CAAiC,IAAjC,CAAA,CAAA;WAHJ,CAAA;;UAMA,IAAMC,KAAK,GAAG,IAAK/E,CAAAA,UAAL,CAAgBgF,aAAhB,CAA8B,WAA9B,EAA2C;EACrDC,UAAAA,SAAS,EAAE;EACPC,YAAAA,UAAU,EAAEjI,SADL;EAEPkI,YAAAA,WAAW,EAAEjI,UAFN;EAGP3C,YAAAA,QAAQ,EAAED,eAAe,CAACC,QAAD,CAHlB;EAIP6K,YAAAA,eAAe,EAAEV,cAJV;EAKPW,YAAAA,OAAO,EAAEV,MALF;cAMPW,cAAc,EAAEjF,YAAY,CAACiC,aAAAA;EANtB,WAAA;EAD0C,SAA3C,CAAd,CAAA;;EAWA,QAAA,IAAI,CAACyC,KAAK,CAACQ,kBAAN,EAAL,EAAiC;YAC7BZ,MAAM,EAAA,CAAA;EACT,SAAA;EACJ,OAAA;EACJ,KAAA;EApWL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;EAAA,IAAA,KAAA,EAsWI,SAAwC,iBAAA,GAAA;EACpC;EACA;QACA,IAAMxD,MAAM,GAAG,IAAKnB,CAAAA,UAAL,CAAgBwB,OAAhB,CAAwBL,MAAxB,EAAf,CAAA;;QAEA,IAAI,CAACA,MAAL,EAAa;UACT,OAAO;EAAEC,UAAAA,IAAI,EAAE,CAAR;EAAWC,UAAAA,GAAG,EAAE,CAAhB;EAAmBuC,UAAAA,KAAK,EAAE,CAA1B;EAA6BV,UAAAA,MAAM,EAAE,CAAA;WAA5C,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAMsC,EAAE,GAAG,IAAKxF,CAAAA,UAAL,CAAgBwB,OAA3B,CAAA;EACA,QAAA,IAAMiE,KAAK,GAAGD,EAAE,CAACC,KAAH,MAAc,CAA5B,CAAA;EACA,QAAA,IAAMC,MAAM,GAAGF,EAAE,CAACE,MAAH,MAAe,CAA9B,CAAA;;UACA,IAAMtE,IAAI,GAAGD,MAAM,CAACC,IAAP,GAAc,IAAKpB,CAAAA,UAAL,CAAgB2F,cAAhB,EAA3B,CAAA;;UAEA,OAAO;EACHvE,UAAAA,IAAI,EAAJA,IADG;YAEHC,GAAG,EAAEF,MAAM,CAACE,GAFT;YAGHuC,KAAK,EAAExC,IAAI,GAAGqE,KAHX;EAIHvC,UAAAA,MAAM,EAAE/B,MAAM,CAACE,GAAP,GAAaqE,MAAb,GAAsB,EAAA;WAJlC,CAAA;EAMH,OAAA;EACJ,KAAA;EA1XL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,kBAAA,CAAA;EAAA,CAAA,EAAA,CAAA;;MA6XeE;EAGX,EAAA,SAAA,mBAAA,CAAYhK,IAAZ,EAAwB;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,mBAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MACpB,IAAKA,CAAAA,IAAL,GAAYA,IAAZ,CAAA;EACH,GAAA;;;;aAED,SAA0B,OAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACtB,IAAIiK,WAAW,GAAG,IAAlB,CAAA;;QAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAC9J,IAAD,EAAa+J,QAAb,EAA6C;EAC9D,QAAA,IAAIC,iBAAiB,GACjB,CAAChK,IAAI,CAAC+C,OAAL,IAAgB,CAAC/C,IAAI,CAACwF,OAAvB,KAAmCxF,IAAI,CAACW,WAAL,EADvC,CAAA;UAGA,IAAI2D,QAAoC,GAAG,IAA3C,CAAA;;UAEA,IAAItE,IAAI,CAACwF,OAAT,EAAkB;EACdlB,UAAAA,QAAQ,GAAGC,MAAM,CAACvE,IAAI,CAACwF,OAAN,CAAjB,CAAA;;EAEA,UAAA,IAAI,CAAClB,QAAQ,CAAC8C,EAAT,CAAY,UAAZ,CAAL,EAA8B;EAC1B,YAAA,OAAA;EACH,WAAA;;EAED,UAAA,IAAIyC,WAAJ,EAAiB;cACb,MAAI,CAACI,eAAL,CAAqBjK,IAArB,CAAA,CAAA;;EACA6J,YAAAA,WAAW,GAAG,KAAd,CAAA;EACH,WAAA;;EAED,UAAA,IAAI,CAAC7J,IAAI,CAACW,WAAL,EAAL,EAAyB;EACrB,YAAA,MAAI,CAACuJ,UAAL,CAAgBlK,IAAhB,EAAsB+J,QAAtB,EAAgCzF,QAAhC,CAAA,CAAA;EACH,WAFD,MAEO,IAAItE,IAAI,CAAC+C,OAAT,EAAkB;cACrB,IAAI,CAAC,MAAI,CAACoH,gBAAL,CAAsBnK,IAAtB,EAA4BsE,QAA5B,CAAL,EAA4C;EACxC0F,cAAAA,iBAAiB,GAAG,KAApB,CAAA;EACH,aAAA;EACJ,WAJM,MAIA;EACH,YAAA,MAAI,CAACI,kBAAL,CAAwBpK,IAAxB,EAA8B+J,QAA9B,EAAwCzF,QAAxC,CAAA,CAAA;EACH,WAAA;EACJ,SAAA;;EAED,QAAA,IAAI0F,iBAAJ,EAAuB;EACnB,UAAA,IAAMK,cAAc,GAAGrK,IAAI,CAACR,QAAL,CAAcW,MAArC,CAAA;YACAH,IAAI,CAACR,QAAL,CAAc8K,OAAd,CAAsB,UAACC,CAAD,EAAIC,CAAJ,EAAU;EAC5B,YAAA,IAAIA,CAAC,KAAKH,cAAc,GAAG,CAA3B,EAA8B;gBAC1BP,YAAY,CAAC9J,IAAI,CAACR,QAAL,CAAcgL,CAAd,CAAD,EAAmB,IAAnB,CAAZ,CAAA;EACH,aAFD,MAEO;EACHV,cAAAA,YAAY,CAAC9J,IAAI,CAACR,QAAL,CAAcgL,CAAd,CAAD,EAAmBxK,IAAI,CAACR,QAAL,CAAcgL,CAAC,GAAG,CAAlB,CAAnB,CAAZ,CAAA;EACH,aAAA;aALL,CAAA,CAAA;;EAQA,UAAA,IAAIxK,IAAI,CAAC+C,OAAL,IAAgBuB,QAApB,EAA8B;EAC1B,YAAA,MAAI,CAACmG,qBAAL,CAA2BzK,IAA3B,EAAiC+J,QAAjC,CAAA,CAAA;EACH,WAAA;EACJ,SAAA;SA1CL,CAAA;;EA6CAD,MAAAA,YAAY,CAAC,IAAA,CAAKlK,IAAN,EAAY,IAAZ,CAAZ,CAAA;EACH,KAAA;;;;;;EA8BL,IAAaoH,iBAAb,gBAAA,UAAA,oBAAA,EAAA;EAAA,EAAA,SAAA,CAAA,iBAAA,EAAA,oBAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,iBAAA,CAAA,CAAA;;EAMI,EAAA,SAAA,iBAAA,CAAYpH,IAAZ,EAAwB8K,WAAxB,EAA2CC,UAA3C,EAA+D;EAAA,IAAA,IAAA,MAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAA;;EAC3D,IAAA,MAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM/K,IAAN,CAAA,CAAA;;EAD2D,IAAA,eAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAG3D,MAAK8K,CAAAA,WAAL,GAAmBA,WAAnB,CAAA;MACA,MAAKC,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;EAJ2D,IAAA,OAAA,MAAA,CAAA;EAK9D,GAAA;;EAXL,EAAA,YAAA,CAAA,iBAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAaI,SAA6B,QAAA,GAAA;QACzB,IAAKC,CAAAA,SAAL,GAAiB,EAAjB,CAAA;QACA,IAAKC,CAAAA,OAAL,GAAe,CAAf,CAAA;EAEA,MAAA,IAAA,CAAK9I,OAAL,EAAA,CAAA;EAEA,MAAA,OAAO,IAAK8E,CAAAA,gBAAL,CAAsB,IAAA,CAAK+D,SAA3B,CAAP,CAAA;EACH,KAAA;EApBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;MAAA,KAsBI,EAAA,SAAA,gBAAA,CAA2BA,SAA3B,EAA4D;QACxD,IAAIE,WAAW,GAAG,CAAC,CAAnB,CAAA;QACA,IAAIC,KAAK,GAAG,EAAZ,CAAA;QACA,IAAM7G,QAAmB,GAAG,EAA5B,CAAA;;EAHwD,MAAA,IAAA,SAAA,GAAA,0BAAA,CAKjC0G,SALiC,CAAA;EAAA,UAAA,KAAA,CAAA;;EAAA,MAAA,IAAA;UAKxD,KAAkC,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAvBrM,QAAuB,GAAA,KAAA,CAAA,KAAA,CAAA;;YAC9B,IAAIA,QAAQ,CAAC8G,GAAT,KAAiByF,WAAjB,IAAgCC,KAAK,CAAC5K,MAA1C,EAAkD;cAC9C,IAAI4K,KAAK,CAAC5K,MAAV,EAAkB;gBACd,IAAK6K,CAAAA,wBAAL,CACI9G,QADJ,EAEI6G,KAFJ,EAGID,WAHJ,EAIIvM,QAAQ,CAAC8G,GAJb,CAAA,CAAA;EAMH,aAAA;;cAEDyF,WAAW,GAAGvM,QAAQ,CAAC8G,GAAvB,CAAA;EACA0F,YAAAA,KAAK,GAAG,EAAR,CAAA;EACH,WAAA;;YAEDA,KAAK,CAAC1K,IAAN,CAAW9B,QAAX,CAAA,CAAA;EACH,SAAA;EArBuD,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;;QAuBxD,IAAKyM,CAAAA,wBAAL,CACI9G,QADJ,EAEI6G,KAFJ,EAGID,WAHJ,EAII,IAAA,CAAKH,UAJT,CAAA,CAAA;EAOA,MAAA,OAAOzG,QAAP,CAAA;EACH,KAAA;EArDL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAuDI,SAA2BlE,gBAAAA,CAAAA,IAA3B,EAAuCsE,QAAvC,EAAkE;EAC9D,MAAA,IAAItE,IAAI,KAAK,IAAK0K,CAAAA,WAAlB,EAA+B;EAC3B;EACA;EACA,QAAA,OAAO,KAAP,CAAA;EACH,OAL6D;;;QAQ9D,IAAI1K,IAAI,CAACR,QAAL,CAAc,CAAd,CAAqB,KAAA,IAAA,CAAKkL,WAA9B,EAA2C;EACvC,QAAA,IAAA,CAAKO,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACO,MAAhC,EAAwC,IAAK+M,CAAAA,MAAL,CAAY5G,QAAZ,CAAxC,CAAA,CAAA;EACH,OAV6D;;;EAa9D,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EArEL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAuEI,4BACItE,IADJ,EAEI+J,QAFJ,EAGIzF,QAHJ,EAIQ;EACJ,MAAA,IAAMe,GAAG,GAAG,IAAA,CAAK6F,MAAL,CAAY5G,QAAZ,CAAZ,CAAA;;EAEA,MAAA,IAAItE,IAAI,KAAK,IAAK0K,CAAAA,WAAlB,EAA+B;EAC3B;UACA,IAAKO,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACS,IAAhC,EAAsCgH,GAAtC,CAAA,CAAA;EACH,OAHD,MAGO;UACH,IAAK4F,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACO,MAAhC,EAAwCkH,GAAxC,CAAA,CADG;;EAIH,QAAA,IAAI0E,QAAQ,KAAK,IAAKW,CAAAA,WAAtB,EAAmC;YAC/B,IAAKO,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACK,KAAhC,EAAuCoH,GAAvC,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EAzFL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KA2FI,EAAA,SAAA,eAAA,CAA0BrF,IAA1B,EAA4C;EACxC,MAAA,IAAIA,IAAI,KAAK,IAAK0K,CAAAA,WAAlB,EAA+B;EAC3B,QAAA,IAAA,CAAKO,WAAL,CACIjL,IADJ,EAEIpC,QAAQ,CAACG,MAFb,EAGI,IAAKmN,CAAAA,MAAL,CAAY3G,MAAM,CAACvE,IAAI,CAACwF,OAAN,CAAlB,CAHJ,CAAA,CAAA;EAKH,OAAA;EACJ,KAAA;EAnGL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,uBAAA;EAAA,IAAA,KAAA,EAqGI,SAAgCxF,qBAAAA,CAAAA,IAAhC,EAA4C+J,QAA5C,EAAkE;QAC9D,IAAI/J,IAAI,KAAK,IAAK0K,CAAAA,WAAd,IAA6BX,QAAQ,KAAK,IAAKW,CAAAA,WAAnD,EAAgE;EAC5D;UACA,IAAKO,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACS,IAAhC,EAAsC,IAAA,CAAKwM,OAA3C,CAAA,CAAA;EACH,OAHD,MAGO;UACH,IAAKI,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACK,KAAhC,EAAuC,IAAA,CAAK4M,OAA5C,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EA5GL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EA8GI,oBAAqB7K,IAArB,EAAiC+J,QAAjC,EAAiDzF,QAAjD,EAAyE;EACrE,MAAA,IAAMe,GAAG,GAAG,IAAA,CAAK6F,MAAL,CAAY5G,QAAZ,CAAZ,CAAA;;EAEA,MAAA,IAAItE,IAAI,KAAK,IAAK0K,CAAAA,WAAlB,EAA+B;EAC3B;UACA,IAAKO,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACS,IAAhC,EAAsCgH,GAAtC,CAAA,CAAA;EACH,OAHD,MAGO;UACH,IAAK4F,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACO,MAAhC,EAAwCkH,GAAxC,CAAA,CAAA;EACH,OAAA;;QAED,IAAI0E,QAAQ,KAAK,IAAKW,CAAAA,WAAlB,IAAiC1K,IAAI,KAAK,IAAK0K,CAAAA,WAAnD,EAAgE;EAC5D;UACA,IAAKO,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACS,IAAhC,EAAsCgH,GAAtC,CAAA,CAAA;EACH,OAHD,MAGO;UACH,IAAK4F,CAAAA,WAAL,CAAiBjL,IAAjB,EAAuBpC,QAAQ,CAACK,KAAhC,EAAuCoH,GAAvC,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EA9HL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAgII,EAAA,SAAA,MAAA,CAAef,QAAf,EAAsD;EAClD,MAAA,IAAMa,MAAM,GAAGb,QAAQ,CAACa,MAAT,EAAf,CAAA;EAEA,MAAA,OAAOA,MAAM,GAAGA,MAAM,CAACE,GAAV,GAAgB,CAA7B,CAAA;EACH,KAAA;EApIL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAsII,qBAAoBrF,IAApB,EAAgCzB,QAAhC,EAAkD8G,GAAlD,EAAqE;EACjE,MAAA,IAAMO,IAAI,GAAG;EACTP,QAAAA,GAAG,EAAHA,GADS;EAET6B,QAAAA,MAAM,EAAE,CAFC;EAGTlH,QAAAA,IAAI,EAAJA,IAHS;EAITzB,QAAAA,QAAQ,EAARA,QAAAA;SAJJ,CAAA;EAOA,MAAA,IAAA,CAAKqM,SAAL,CAAevK,IAAf,CAAoBuF,IAApB,CAAA,CAAA;QACA,IAAKiF,CAAAA,OAAL,GAAexF,GAAf,CAAA;EACH,KAAA;EAhJL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,0BAAA;MAAA,KAkJI,EAAA,SAAA,wBAAA,CACInB,QADJ,EAEIiH,gBAFJ,EAGI9F,GAHJ,EAII6B,MAJJ,EAKQ;EACJ;QACA,IAAMkE,aAAa,GAAGC,IAAI,CAACC,GAAL,CAASH,gBAAgB,CAAChL,MAA1B,EAAkC,CAAlC,CAAtB,CAAA;EAEA,MAAA,IAAMoL,UAAU,GAAGF,IAAI,CAACG,KAAL,CAAW,CAACtE,MAAM,GAAG7B,GAAV,IAAiB+F,aAA5B,CAAnB,CAAA;QACA,IAAIK,OAAO,GAAGpG,GAAd,CAAA;QAEA,IAAImF,CAAC,GAAG,CAAR,CAAA;;QACA,OAAOA,CAAC,GAAGY,aAAX,EAA0B;EACtB,QAAA,IAAM7M,QAAQ,GAAG4M,gBAAgB,CAACX,CAAD,CAAjC,CAAA;UAEAtG,QAAQ,CAAC7D,IAAT,CAAc;EACVgF,UAAAA,GAAG,EAAEoG,OADK;YAEVvE,MAAM,EAAEuE,OAAO,GAAGF,UAFR;YAGVvL,IAAI,EAAEzB,QAAQ,CAACyB,IAHL;YAIVzB,QAAQ,EAAEA,QAAQ,CAACA,QAAAA;WAJvB,CAAA,CAAA;EAOAkN,QAAAA,OAAO,IAAIF,UAAX,CAAA;EACAf,QAAAA,CAAC,IAAI,CAAL,CAAA;EACH,OAAA;EACJ,KAAA;EA5KL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,iBAAA,CAAA;EAAA,CAAA,CAAuCZ,mBAAvC,CAAA,CAAA;;MA+KMrE;IAKF,SACImG,WAAAA,CAAAA,QADJ,EAEIC,OAFJ,EAGIC,OAHJ,EAIIC,KAJJ,EAKIpG,UALJ,EAME;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MACE,IAAKkG,CAAAA,OAAL,GAAeA,OAAf,CAAA;MACA,IAAKC,CAAAA,OAAL,GAAeA,OAAf,CAAA;MAEA,IAAKtH,CAAAA,QAAL,GAAgBC,MAAM,CAAC,QAAD,CAAN,CAAiBmB,QAAjB,CACZ,8BADY,CAAhB,CAAA;;EAIA,IAAA,IAAID,UAAJ,EAAgB;EACZ,MAAA,IAAA,CAAKnB,QAAL,CAAcwH,IAAd,CAAmBJ,QAAnB,CAAA,CAAA;EACH,KAFD,MAEO;EACH,MAAA,IAAA,CAAKpH,QAAL,CAAcyH,IAAd,CAAmBL,QAAnB,CAAA,CAAA;EACH,KAAA;;EAED,IAAA,IAAA,CAAKpH,QAAL,CAAc0H,GAAd,CAAkB,UAAlB,EAA8B,UAA9B,CAAA,CAAA;EACAH,IAAAA,KAAK,CAACI,MAAN,CAAa,IAAA,CAAK3H,QAAlB,CAAA,CAAA;EACH,GAAA;;;;aAED,SAAYS,IAAAA,CAAAA,KAAZ,EAA2BE,KAA3B,EAAgD;QAC5C,IAAKX,CAAAA,QAAL,CAAca,MAAd,CAAqB;EACjBC,QAAAA,IAAI,EAAEL,KAAK,GAAG,IAAA,CAAK4G,OADF;UAEjBtG,GAAG,EAAEJ,KAAK,GAAG,IAAK2G,CAAAA,OAAAA;SAFtB,CAAA,CAAA;EAIH,KAAA;;;aAED,SAAsB,MAAA,GAAA;QAClB,IAAKtH,CAAAA,QAAL,CAAciD,MAAd,EAAA,CAAA;EACH,KAAA;;;;;;ECprBE,IAAM2E,KAAK,GAAG,SAARA,KAAQ,CAACpK,CAAD,EAAA;IAAA,OACjB,OAAOA,CAAP,KAAa,QAAb,IAAyBA,CAAC,GAAG,CAAJ,KAAU,CADlB,CAAA;EAAA,CAAd,CAAA;EAGA,IAAMqK,UAAU,GAAG,SAAbA,UAAa,CAACvK,CAAD,EAAA;IAAA,OAAyB,OAAOA,CAAP,KAAa,UAAtC,CAAA;EAAA,CAAnB,CAAA;EAEA,IAAMwK,aAAa,GAAG,SAAhBA,aAAgB,CAACtM,KAAD,EAAA;EAAA,EAAA,OACzBA,KAAK,GAAG,MAAH,GAAY,OADQ,CAAA;EAAA,CAAtB;;MCCcuM;EAKjB,EAAA,SAAA,gBAAA,CAAYrI,UAAZ,EAAsC;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAClC,IAAKA,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;EAEA,IAAA,IAAA,CAAKsI,iBAAL,GAAyB,IAAKC,CAAAA,mBAAL,CACrBvI,UAAU,CAACU,OAAX,CAAmB8H,UAAnB,IAAiC,GADZ,CAAzB,CAAA;EAGA,IAAA,IAAA,CAAKC,iBAAL,GAAyB,IAAKF,CAAAA,mBAAL,CACrBvI,UAAU,CAACU,OAAX,CAAmBgI,UAAnB,IAAiC,GADZ,CAAzB,CAAA;EAGH,GAAA;;;;EAED,IAAA,KAAA,EAAA,SAAA,MAAA,CAAcC,QAAd,EAA2C;EACvC,MAAA,IAAIA,QAAQ,IAAIA,QAAQ,CAAClN,MAAzB,EAAiC;UAC7B,IAAKmN,CAAAA,cAAL,CAAoBD,QAApB,CAAA,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAA,CAAKE,cAAL,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAA8B,cAAA,GAAA;EAC1B,MAAA,IAAMvI,QAAQ,GAAG,IAAKN,CAAAA,UAAL,CAAgBwB,OAAjC,CAAA;EACAlB,MAAAA,QAAQ,CAACuE,KAAT,EAAA,CAAA;EAEA,MAAA,IAAA,CAAKiE,iBAAL,CACIxI,QAAQ,CAAC,CAAD,CADZ,EAEI,IAAA,CAAKN,UAAL,CAAgBpE,IAAhB,CAAqBJ,QAFzB,EAGI,IAHJ,EAII,CAJJ,CAAA,CAAA;EAMH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,cAAA,CAAsBQ,IAAtB,EAAwC;EACpC;QACA,IAAM+M,WAAW,GAAGxI,MAAM,CAACvE,IAAI,CAACwF,OAAN,CAA1B,CAFoC;;QAKpC,IAAMwH,EAAE,GAAG,IAAA,CAAKC,QAAL,CAAcjN,IAAd,EAAoBA,IAAI,CAACkN,QAAL,EAApB,CAAX,CAAA;EACA,MAAA,IAAA,CAAKC,cAAL,CAAoBnN,IAApB,EAA0BgN,EAA1B,EANoC;;EASpCD,MAAAA,WAAW,CAAC/O,KAAZ,CAAkBgP,EAAlB,EAToC;;QAYpCD,WAAW,CAACxF,MAAZ,EAAA,CAZoC;;QAepC,IAAIvH,IAAI,CAACR,QAAT,EAAmB;EACf,QAAA,IAAA,CAAKsN,iBAAL,CACIE,EADJ,EAEIhN,IAAI,CAACR,QAFT,EAGI,KAHJ,EAIIQ,IAAI,CAACkN,QAAL,KAAkB,CAJtB,CAAA,CAAA;EAMH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,iBAAA,CACI1H,OADJ,EAEIhG,QAFJ,EAGI4N,UAHJ,EAIItM,KAJJ,EAKQ;EACJ,MAAA,IAAMuM,EAAE,GAAG,IAAA,CAAKC,QAAL,CAAcF,UAAd,CAAX,CAAA;QACA5H,OAAO,CAAC+H,WAAR,CAAoBF,EAApB,CAAA,CAAA;;EAFI,MAAA,IAAA,SAAA,GAAA,0BAAA,CAIgB7N,QAJhB,CAAA;EAAA,UAAA,KAAA,CAAA;;EAAA,MAAA,IAAA;UAIJ,KAA8B,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAnBuB,KAAmB,GAAA,KAAA,CAAA,KAAA,CAAA;YAC1B,IAAMiM,EAAE,GAAG,IAAKC,CAAAA,QAAL,CAAclM,KAAd,EAAqBD,KAArB,CAAX,CAAA;YACAuM,EAAE,CAACE,WAAH,CAAeP,EAAf,CAAA,CAAA;EAEA,UAAA,IAAA,CAAKG,cAAL,CAAoBpM,KAApB,EAA2BiM,EAA3B,CAAA,CAAA;;EAEA,UAAA,IAAIjM,KAAK,CAACJ,WAAN,EAAJ,EAAyB;EACrB,YAAA,IAAA,CAAKmM,iBAAL,CAAuBE,EAAvB,EAA2BjM,KAAK,CAACvB,QAAjC,EAA2C,KAA3C,EAAkDsB,KAAK,GAAG,CAA1D,CAAA,CAAA;EACH,WAAA;EACJ,SAAA;EAbG,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;EAcP,KAAA;;;aAED,SAAuBd,cAAAA,CAAAA,IAAvB,EAAmCgN,EAAnC,EAA0D;QACtDhN,IAAI,CAACwF,OAAL,GAAewH,EAAf,CAAA;QACAzI,MAAM,CAACyI,EAAD,CAAN,CAAWjO,IAAX,CAAgB,MAAhB,EAAwBiB,IAAxB,CAAA,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,QAAA,CAAiBoN,UAAjB,EAAwD;EACpD,MAAA,IAAII,WAAJ,CAAA;EACA,MAAA,IAAIC,IAAJ,CAAA;;QAEA,IAAI,CAACL,UAAL,EAAiB;EACbI,QAAAA,WAAW,GAAG,EAAd,CAAA;EACAC,QAAAA,IAAI,GAAG,OAAP,CAAA;EACH,OAHD,MAGO;EACHD,QAAAA,WAAW,GAAG,aAAd,CAAA;EACAC,QAAAA,IAAI,GAAG,MAAP,CAAA;;EAEA,QAAA,IAAI,KAAKzJ,UAAL,CAAgBU,OAAhB,CAAwBgJ,GAA5B,EAAiC;EAC7BF,UAAAA,WAAW,IAAI,aAAf,CAAA;EACH,SAAA;EACJ,OAAA;;EAED,MAAA,IAAI,KAAKxJ,UAAL,CAAgBU,OAAhB,CAAwBiJ,WAA5B,EAAyC;EACrCH,QAAAA,WAAW,IAAI,aAAf,CAAA;EACH,OAAA;;EAED,MAAA,IAAMH,EAAE,GAAGO,QAAQ,CAACC,aAAT,CAAuB,IAAvB,CAAX,CAAA;QACAR,EAAE,CAACS,SAAH,GAAA,gBAAA,CAAA,MAAA,CAAgCN,WAAhC,CAAA,CAAA;EAEAH,MAAAA,EAAE,CAACU,YAAH,CAAgB,MAAhB,EAAwBN,IAAxB,CAAA,CAAA;EAEA,MAAA,OAAOJ,EAAP,CAAA;EACH,KAAA;;;aAED,SAAiBrN,QAAAA,CAAAA,IAAjB,EAA6Bc,KAA7B,EAA2D;EACvD,MAAA,IAAMkN,UAAU,GAAGC,OAAO,CACtB,IAAKjK,CAAAA,UAAL,CAAgBkK,iBAAhB,CAAkCC,cAAlC,CAAiDnO,IAAjD,CADsB,CAA1B,CAAA;EAIA,MAAA,IAAMoO,cAAc,GAChBpO,IAAI,CAAC+F,QAAL,EACC/F,IAAAA,IAAI,CAACX,aAAL,IAAsB,IAAK2E,CAAAA,UAAL,CAAgBU,OAAhB,CAAwB2J,eAFnD,CAAA;QAIA,IAAMrB,EAAE,GAAGoB,cAAc,GACnB,KAAKE,cAAL,CAAoBtO,IAApB,EAA0Bc,KAA1B,EAAiCkN,UAAjC,CADmB,GAEnB,KAAKO,YAAL,CAAkBvO,IAAlB,EAAwBc,KAAxB,EAA+BkN,UAA/B,CAFN,CAAA;;EAIA,MAAA,IAAI,KAAKhK,UAAL,CAAgBU,OAAhB,CAAwB8J,UAA5B,EAAwC;EACpC,QAAA,IAAA,CAAKxK,UAAL,CAAgBU,OAAhB,CAAwB8J,UAAxB,CAAmCxO,IAAnC,EAAyCuE,MAAM,CAACyI,EAAD,CAA/C,EAAqDgB,UAArD,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOhB,EAAP,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,cAAA,CACIhN,IADJ,EAEIc,KAFJ,EAGIkN,UAHJ,EAIiB;EACb,MAAA,IAAMS,aAAa,GAAG,IAAA,CAAKC,gBAAL,CAAsB1O,IAAtB,CAAtB,CAAA;QACA,IAAM2O,aAAa,GAAG,IAAKC,CAAAA,gBAAL,CAAsB5O,IAAtB,EAA4BgO,UAA5B,CAAtB,CAAA;EAEA,MAAA,IAAMa,WAAW,GAAG7O,IAAI,CAAC+C,OAAL,GACd,IAAKuJ,CAAAA,iBADS,GAEd,IAAA,CAAKG,iBAFX,CAJa;;EASb,MAAA,IAAMO,EAAE,GAAGY,QAAQ,CAACC,aAAT,CAAuB,IAAvB,CAAX,CAAA;QACAb,EAAE,CAACc,SAAH,GAAA,gBAAA,CAAA,MAAA,CAAgCa,aAAhC,CAAA,CAAA;EACA3B,MAAAA,EAAE,CAACe,YAAH,CAAgB,MAAhB,EAAwB,cAAxB,EAXa;;EAcb,MAAA,IAAMe,GAAG,GAAGlB,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ,CAAA;QACAiB,GAAG,CAAChB,SAAJ,GAAgB,8BAAhB,CAAA;EACAgB,MAAAA,GAAG,CAACf,YAAJ,CAAiB,MAAjB,EAAyB,cAAzB,CAAA,CAAA;EAEAf,MAAAA,EAAE,CAACO,WAAH,CAAeuB,GAAf,EAlBa;;EAqBb,MAAA,IAAMC,UAAU,GAAGnB,QAAQ,CAACC,aAAT,CAAuB,GAAvB,CAAnB,CAAA;QACAkB,UAAU,CAACjB,SAAX,GAAuBW,aAAvB,CAAA;QAEAM,UAAU,CAACxB,WAAX,CAAuBsB,WAAW,CAACG,SAAZ,CAAsB,IAAtB,CAAvB,CAAA,CAAA;EAEAD,MAAAA,UAAU,CAAChB,YAAX,CAAwB,MAAxB,EAAgC,cAAhC,CAAA,CAAA;EACAgB,MAAAA,UAAU,CAAChB,YAAX,CAAwB,aAAxB,EAAuC,MAAvC,CAAA,CAAA;;EAEA,MAAA,IAAI,KAAK/J,UAAL,CAAgBU,OAAhB,CAAwBuK,UAA5B,EAAwC;UACpCH,GAAG,CAACvB,WAAJ,CAAgBwB,UAAhB,CAAA,CAAA;EACH,OA/BY;;;EAkCbD,MAAAA,GAAG,CAACvB,WAAJ,CACI,KAAK2B,eAAL,CACIlP,IAAI,CAACxB,IADT,EAEIsC,KAFJ,EAGIkN,UAHJ,EAIIhO,IAAI,CAAC+C,OAJT,EAKI,IALJ,CADJ,CAAA,CAAA;;EAUA,MAAA,IAAI,CAAC,IAAKiB,CAAAA,UAAL,CAAgBU,OAAhB,CAAwBuK,UAA7B,EAAyC;UACrCH,GAAG,CAACvB,WAAJ,CAAgBwB,UAAhB,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAO/B,EAAP,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,YAAA,CACIhN,IADJ,EAEIc,KAFJ,EAGIkN,UAHJ,EAIiB;EACb,MAAA,IAAMmB,SAAS,GAAG,CAAC,eAAD,CAAlB,CAAA;;EAEA,MAAA,IAAInB,UAAJ,EAAgB;UACZmB,SAAS,CAAC9O,IAAV,CAAe,iBAAf,CAAA,CAAA;EACH,OAAA;;QAED,IAAMmN,WAAW,GAAG2B,SAAS,CAACC,IAAV,CAAe,GAAf,CAApB,CAPa;;EAUb,MAAA,IAAMpC,EAAE,GAAGY,QAAQ,CAACC,aAAT,CAAuB,IAAvB,CAAX,CAAA;QACAb,EAAE,CAACc,SAAH,GAAeN,WAAf,CAAA;EACAR,MAAAA,EAAE,CAACe,YAAH,CAAgB,MAAhB,EAAwB,cAAxB,EAZa;;EAeb,MAAA,IAAMe,GAAG,GAAGlB,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ,CAAA;QACAiB,GAAG,CAAChB,SAAJ,GAAgB,8BAAhB,CAAA;EACAgB,MAAAA,GAAG,CAACf,YAAJ,CAAiB,MAAjB,EAAyB,cAAzB,CAAA,CAAA;EAEAf,MAAAA,EAAE,CAACO,WAAH,CAAeuB,GAAf,EAnBa;;EAsBbA,MAAAA,GAAG,CAACvB,WAAJ,CACI,KAAK2B,eAAL,CACIlP,IAAI,CAACxB,IADT,EAEIsC,KAFJ,EAGIkN,UAHJ,EAIIhO,IAAI,CAAC+C,OAJT,EAKI,KALJ,CADJ,CAAA,CAAA;EAUA,MAAA,OAAOiK,EAAP,CAAA;EACH,KAAA;;;aAED,SACItB,eAAAA,CAAAA,QADJ,EAEI5K,KAFJ,EAGIkN,UAHJ,EAIIqB,MAJJ,EAKItJ,QALJ,EAMmB;EACf,MAAA,IAAMuJ,SAAS,GAAG1B,QAAQ,CAACC,aAAT,CAAuB,MAAvB,CAAlB,CAAA;QAEA,IAAI0B,OAAO,GAAG,4BAAd,CAAA;;EAEA,MAAA,IAAIxJ,QAAJ,EAAc;EACVwJ,QAAAA,OAAO,IAAI,sBAAX,CAAA;EACH,OAAA;;QAEDA,OAAO,IAAA,uBAAA,CAAA,MAAA,CACH,IAAKvL,CAAAA,UAAL,CAAgBU,OAAhB,CAAwBuK,UAAxB,GAAqC,MAArC,GAA8C,OAD3C,CAAP,CAAA;QAIAK,SAAS,CAACxB,SAAV,GAAsByB,OAAtB,CAAA;EAEAD,MAAAA,SAAS,CAACvB,YAAV,CAAuB,MAAvB,EAA+B,UAA/B,CAAA,CAAA;EACAuB,MAAAA,SAAS,CAACvB,YAAV,CAAuB,YAAvB,YAAwCjN,KAAxC,CAAA,CAAA,CAAA;QAEAwO,SAAS,CAACvB,YAAV,CAAuB,eAAvB,EAAwC3B,aAAa,CAAC4B,UAAD,CAArD,CAAA,CAAA;QACAsB,SAAS,CAACvB,YAAV,CAAuB,eAAvB,EAAwC3B,aAAa,CAACiD,MAAD,CAArD,CAAA,CAAA;;EAEA,MAAA,IAAIrB,UAAJ,EAAgB;EACZ,QAAA,IAAMwB,QAAQ,GAAG,IAAA,CAAKxL,UAAL,CAAgBU,OAAhB,CAAwB8K,QAAzC,CAAA;;UAEA,IAAIA,QAAQ,KAAKxK,SAAjB,EAA4B;EACxBsK,UAAAA,SAAS,CAACvB,YAAV,CAAuB,UAAvB,YAAsCyB,QAAtC,CAAA,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;;EAED,MAAA,IAAI,KAAKxL,UAAL,CAAgBU,OAAhB,CAAwBe,UAA5B,EAAwC;UACpC6J,SAAS,CAACG,WAAV,GAAwB/D,QAAxB,CAAA;EACH,OAFD,MAEO;UACH4D,SAAS,CAACI,SAAV,GAAsBhE,QAAtB,CAAA;EACH,OAAA;;EAED,MAAA,OAAO4D,SAAP,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,gBAAA,CAAyBtP,IAAzB,EAA6C;EACzC,MAAA,IAAMuP,OAAO,GAAG,CAAC,gBAAD,EAAmB,eAAnB,CAAhB,CAAA;;EAEA,MAAA,IAAI,CAACvP,IAAI,CAAC+C,OAAV,EAAmB;UACfwM,OAAO,CAAClP,IAAR,CAAa,eAAb,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,IAAI,KAAK2D,UAAL,CAAgBU,OAAhB,CAAwBuK,UAA5B,EAAwC;UACpCM,OAAO,CAAClP,IAAR,CAAa,qBAAb,CAAA,CAAA;EACH,OAFD,MAEO;UACHkP,OAAO,CAAClP,IAAR,CAAa,sBAAb,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOkP,OAAO,CAACH,IAAR,CAAa,GAAb,CAAP,CAAA;EACH,KAAA;;;aAED,SAAyBpP,gBAAAA,CAAAA,IAAzB,EAAqCgO,UAArC,EAAkE;EAC9D,MAAA,IAAMuB,OAAO,GAAG,CAAC,eAAD,CAAhB,CAAA;;EAEA,MAAA,IAAI,CAACvP,IAAI,CAAC+C,OAAV,EAAmB;UACfwM,OAAO,CAAClP,IAAR,CAAa,eAAb,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,IAAI2N,UAAJ,EAAgB;UACZuB,OAAO,CAAClP,IAAR,CAAa,iBAAb,CAAA,CAAA;EACH,OAAA;;QAED,IAAIL,IAAI,CAAC2P,UAAT,EAAqB;UACjBJ,OAAO,CAAClP,IAAR,CAAa,gBAAb,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOkP,OAAO,CAACH,IAAR,CAAa,GAAb,CAAP,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,mBAAA,CAA4BtP,KAA5B,EAAkE;EAC9D,MAAA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC3B;EACA,QAAA,IAAMgP,GAAG,GAAGlB,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ,CAAA;UACAiB,GAAG,CAACY,SAAJ,GAAgB5P,KAAhB,CAAA;EAEA,QAAA,OAAO8N,QAAQ,CAACgC,cAAT,CAAwBd,GAAG,CAACY,SAA5B,CAAP,CAAA;EACH,OAND,MAMO;EACH,QAAA,OAAOnL,MAAM,CAACzE,KAAD,CAAN,CAAc,CAAd,CAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;;;;MC9TgB+P;EAGjB,EAAA,SAAA,UAAA,CAAY7L,UAAZ,EAAsC;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAClC,IAAKA,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;EACH,GAAA;;;;EAED,IAAA,KAAA,EAAA,SAAA,WAAA,CACI8L,OADJ,EAEIC,UAFJ,EAGIC,UAHJ,EAIQ;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;QACJ,IAAI,CAACF,OAAL,EAAc;EACV,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAMG,GAAG,GAAG,IAAA,CAAKC,aAAL,CAAmBH,UAAnB,CAAZ,CAAA;QACA,IAAKI,CAAAA,eAAL,CAAqBF,GAArB,CAAA,CAAA;EACA,MAAA,IAAA,CAAKG,aAAL,CAAmB,IAAnB,EAAyBL,UAAzB,EAAqCE,GAArC,CAAA,CAAA;;EAEA,MAAA,IAAMI,WAAW,GAAG,SAAdA,WAAc,GAAY;UAC5B,KAAI,CAACC,kBAAL,CAAwBL,GAAxB,CAAA,CAAA;;EACA,QAAA,KAAI,CAACG,aAAL,CAAmB,KAAnB,EAA0BL,UAA1B,EAAsCE,GAAtC,CAAA,CAAA;SAFJ,CAAA;;EAKA,MAAA,IAAMM,aAAa,GAAG,SAAhBA,aAAgB,CAACxR,IAAD,EAAqC;UACvDsR,WAAW,EAAA,CAAA;;EACX,QAAA,KAAI,CAACrM,UAAL,CAAgBwM,QAAhB,CAAyB,KAAI,CAACC,SAAL,CAAe1R,IAAf,CAAzB,EAA+CgR,UAA/C,CAAA,CAAA;;EAEA,QAAA,IAAIC,UAAU,IAAI,OAAOA,UAAP,KAAsB,UAAxC,EAAoD;YAChDA,UAAU,EAAA,CAAA;EACb,SAAA;SANL,CAAA;;EASA,MAAA,IAAMU,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAA+B;UAC/CN,WAAW,EAAA,CAAA;;EAEX,QAAA,IAAI,KAAI,CAACrM,UAAL,CAAgBU,OAAhB,CAAwBkM,YAA5B,EAA0C;EACtC,UAAA,KAAI,CAAC5M,UAAL,CAAgBU,OAAhB,CAAwBkM,YAAxB,CAAqCD,KAArC,CAAA,CAAA;EACH,SAAA;SALL,CAAA;;EAQA,MAAA,IAAA,CAAKE,aAAL,CAAmBf,OAAnB,EAA4BS,aAA5B,EAA2CG,WAA3C,CAAA,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,eAAA,CAAwBT,GAAxB,EAAwD;EACpD,MAAA,IAAIA,GAAJ,EAAS;UACLA,GAAG,CAACvK,QAAJ,CAAa,gBAAb,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,kBAAA,CAA2BuK,GAA3B,EAA2D;EACvD,MAAA,IAAIA,GAAJ,EAAS;UACLA,GAAG,CAACtJ,WAAJ,CAAgB,gBAAhB,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,aAAA,CAAsBoJ,UAAtB,EAAoE;EAChE,MAAA,IAAIA,UAAJ,EAAgB;EACZ,QAAA,OAAOxL,MAAM,CAACwL,UAAU,CAACvK,OAAZ,CAAb,CAAA;EACH,OAFD,MAEO;UACH,OAAO,IAAA,CAAKxB,UAAL,CAAgBwB,OAAvB,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,aAAA,CACIsL,SADJ,EAEI9Q,IAFJ,EAGIiQ,GAHJ,EAIQ;EACJ,MAAA,IAAI,KAAKjM,UAAL,CAAgBU,OAAhB,CAAwBqM,SAA5B,EAAuC;UACnC,IAAK/M,CAAAA,UAAL,CAAgBU,OAAhB,CAAwBqM,SAAxB,CAAkCD,SAAlC,EAA6C9Q,IAA7C,EAAmDiQ,GAAnD,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAKjM,UAAL,CAAgBgF,aAAhB,CAA8B,mBAA9B,EAAmD;EAC/C8H,QAAAA,SAAS,EAATA,SAD+C;EAE/C9Q,QAAAA,IAAI,EAAJA,IAF+C;EAG/CiQ,QAAAA,GAAG,EAAHA,GAAAA;SAHJ,CAAA,CAAA;EAKH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,aAAA,CACIe,YADJ,EAEIT,aAFJ,EAGIG,WAHJ,EAIQ;EAAA,MAAA,IAAA,oBAAA,CAAA;;EACJ,MAAA,IAAMZ,OAAO,GACT,OAAOkB,YAAP,KAAwB,QAAxB,GACM;EAAEC,QAAAA,GAAG,EAAED,YAAAA;EAAP,OADN,GAEMA,YAHV,CAAA;;EAKA,MAAA,IAAME,YAAiC,GAAAC,cAAA,CAAA;EACnCC,QAAAA,MAAM,EAAE,KAD2B;EAEnCC,QAAAA,KAAK,EAAE,KAF4B;EAGnCC,QAAAA,QAAQ,EAAE,MAHyB;EAInCC,QAAAA,OAAO,EAAEhB,aAJ0B;EAKnCiB,QAAAA,KAAK,EAAEd,WAAAA;EAL4B,OAAA,EAMhCZ,OANgC,CAAvC,CAAA;;QASAoB,YAAY,CAACE,MAAb,GAAsB,CAAAF,CAAAA,oBAAAA,GAAAA,YAAY,CAACE,MAAb,MAAA,IAAA,IAAA,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA,CAAqBK,WAArB,EAAA,KAAsC,KAA5D,CAAA;EAEA,MAAA,KAAKlN,MAAM,CAACmN,IAAP,CAAYR,YAAZ,CAAL,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,SAAA,CAAkBnS,IAAlB,EAAyD;EACrD,MAAA,IAAQ4S,UAAR,GAAuB,IAAA,CAAK3N,UAAL,CAAgBU,OAAvC,CAAQiN,UAAR,CAAA;;EAEA,MAAA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,GAAM;EACxB,QAAA,IAAI,OAAO7S,IAAP,KAAgB,QAApB,EAA8B;EAC1B,UAAA,OAAO8S,IAAI,CAACC,KAAL,CAAW/S,IAAX,CAAP,CAAA;EACH,SAFD,MAEO;EACH,UAAA,OAAOA,IAAP,CAAA;EACH,SAAA;SALL,CAAA;;QAQA,IAAMgT,UAAU,GAAGH,aAAa,EAAhC,CAAA;;EAEA,MAAA,IAAID,UAAJ,EAAgB;UACZ,OAAOA,UAAU,CAACI,UAAD,CAAjB,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAOA,UAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;;;;MC7HgBC;EAQjB,EAAA,SAAA,UAAA,CAAYhO,UAAZ,EAAsC;EAAA,IAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAAA,eAiEd,CAAA,IAAA,EAAA,eAAA,EAAA,UAACiO,CAAD,EAA8B;EAClD,MAAA,IAAI,CAAC,KAAI,CAACC,iBAAL,EAAL,EAA+B;EAC3B,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;;EAED,MAAA,IAAMC,YAAY,GAAG,KAAI,CAACnO,UAAL,CAAgBoO,eAAhB,EAArB,CAAA;;QACA,IAAI,CAACD,YAAL,EAAmB;EACf,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;;EAED,MAAA,IAAMtS,GAAG,GAAGoS,CAAC,CAACI,KAAd,CAAA;;EAEA,MAAA,QAAQxS,GAAR;UACI,KAAKmS,UAAU,CAACM,IAAhB;EACI,UAAA,OAAO,KAAI,CAACC,QAAL,CAAcJ,YAAd,CAAP,CAAA;;UAEJ,KAAKH,UAAU,CAACQ,EAAhB;EACI,UAAA,OAAO,KAAI,CAACC,MAAL,CAAYN,YAAZ,CAAP,CAAA;;UAEJ,KAAKH,UAAU,CAACU,KAAhB;EACI,UAAA,OAAO,KAAI,CAACC,SAAL,CAAeR,YAAf,CAAP,CAAA;;UAEJ,KAAKH,UAAU,CAACY,IAAhB;EACI,UAAA,OAAO,KAAI,CAACC,QAAL,CAAcV,YAAd,CAAP,CAAA;;EAEJ,QAAA;EACI,UAAA,OAAO,IAAP,CAAA;EAdR,OAAA;OA7EkC,CAAA,CAAA;;MAClC,IAAKnO,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;;EAEA,IAAA,IAAIA,UAAU,CAACU,OAAX,CAAmBoO,eAAvB,EAAwC;QACpCvO,MAAM,CAACqJ,QAAD,CAAN,CAAiBmF,EAAjB,CAAoB,gBAApB,EAAsC,IAAA,CAAKC,aAA3C,CAAA,CAAA;EACH,KAAA;EACJ,GAAA;;;;aAED,SAAsB,MAAA,GAAA;EAClBzO,MAAAA,MAAM,CAACqJ,QAAD,CAAN,CAAiBqF,GAAjB,CAAqB,gBAArB,CAAA,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,QAAA,CAAgBd,YAAhB,EAA6C;EACzC,MAAA,OAAO,KAAKe,UAAL,CAAgBf,YAAY,CAACjP,WAAb,EAAhB,CAAP,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,MAAA,CAAciP,YAAd,EAA2C;EACvC,MAAA,OAAO,KAAKe,UAAL,CAAgBf,YAAY,CAACgB,eAAb,EAAhB,CAAP,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,SAAA,CAAiBhB,YAAjB,EAA8C;EAC1C,MAAA,IAAI,CAACA,YAAY,CAACpM,QAAb,EAAL,EAA8B;EAC1B,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;EACH;UACA,IAAIoM,YAAY,CAACpP,OAAjB,EAA0B;EACtB;EACA,UAAA,OAAO,KAAKmQ,UAAL,CAAgBf,YAAY,CAACjP,WAAb,EAAhB,CAAP,CAAA;EACH,SAHD,MAGO;EACH;EACA,UAAA,IAAA,CAAKc,UAAL,CAAgBoP,QAAhB,CAAyBjB,YAAzB,CAAA,CAAA;EACA,UAAA,OAAO,KAAP,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,QAAA,CAAgBA,YAAhB,EAA6C;EACzC,MAAA,IAAIA,YAAY,CAACpM,QAAb,MAA2BoM,YAAY,CAACpP,OAA5C,EAAqD;EACjD;EACA,QAAA,IAAA,CAAKiB,UAAL,CAAgBqP,SAAhB,CAA0BlB,YAA1B,CAAA,CAAA;EACA,QAAA,OAAO,KAAP,CAAA;EACH,OAJD,MAIO;EACH;EACA,QAAA,OAAO,KAAKe,UAAL,CAAgBf,YAAY,CAAC7O,SAAb,EAAhB,CAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,UAAA,CAAkBtD,IAAlB,EAA8C;QAC1C,IAAI,CAACA,IAAL,EAAW;EACP,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAA,CAAKgE,UAAL,CAAgBkP,UAAhB,CAA2BlT,IAA3B,CAAA,CAAA;;UAEA,IACI,CAAC,KAAKgE,UAAL,CAAgBsP,aAAhB,CAA8BC,kBAA9B,CACGhP,MAAM,CAACvE,IAAI,CAACwF,OAAN,CAAN,CAAqBgO,IAArB,CAA0B,iBAA1B,CADH,CADL,EAIE;EACE,UAAA,IAAA,CAAKxP,UAAL,CAAgByP,YAAhB,CAA6BzT,IAA7B,CAAA,CAAA;EACH,SAAA;;EAED,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;aAgCD,SAAqC,iBAAA,GAAA;EACjC,MAAA,OACI,CAAC,IAAKgE,CAAAA,UAAL,CAAgBU,OAAhB,CAAwBoO,eAAxB,IAA2C,KAA5C,KACA,KAAK9O,UAAL,CAAgBkK,iBAAhB,CAAkCwF,aAAlC,EAFJ,CAAA;EAIH,KAAA;;;;;;EA5GgB1B,eAAAA,CAAAA,oBACK;;EADLA,eAAAA,CAAAA,kBAEG;;EAFHA,eAAAA,CAAAA,qBAGM;;EAHNA,eAAAA,CAAAA,oBAIK;;ECP1B,IAAM2B,SAAQ,GAAG,SAAXA,QAAW,CAACC,WAAD,EAAuBC,UAAvB,EAAoD;IACjE,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAA;EAAA,IAAA,OAAA,gBAAA,CAAA,MAAA,CAA+BD,UAA/B,CAAA,CAAA;KAAnB,CAAA;;IAEA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAClBvK,EADkB,EAElBwK,OAFkB,EAGa;MAC/B,IAAMC,MAAM,GAAG1P,MAAM,CAACxF,IAAP,CAAYyK,EAAZ,EAAgBwK,OAAhB,CAAf,CAAA;;EAEA,IAAA,IAAIC,MAAM,IAAIA,MAAM,YAAYC,YAAhC,EAA8C;EAC1C,MAAA,OAAOD,MAAP,CAAA;EACH,KAFD,MAEO;EACH,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;KAVL,CAAA;;IAaA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAAClE,GAAD,EAAcvL,OAAd,EAA2C;MAC5D,IAAMsP,OAAO,GAAGF,UAAU,EAA1B,CAAA;;MAD4D,IAG3C7D,SAAAA,GAAAA,0BAAAA,CAAAA,GAAG,CAAC3N,GAAJ,EAH2C,CAAA;EAAA,QAAA,KAAA,CAAA;;EAAA,IAAA,IAAA;QAG5D,KAA4B,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,QAAA,IAAjBkH,EAAiB,GAAA,KAAA,CAAA,KAAA,CAAA;EACxB,QAAA,IAAM4K,cAAc,GAAGL,aAAa,CAACvK,EAAD,EAAKwK,OAAL,CAApC,CAAA;;UAEA,IAAI,CAACI,cAAL,EAAqB;YACjB,IAAMC,iBAAiB,GAAGT,WAA1B,CAAA;YACA,IAAMK,MAAM,GAAG,IAAII,iBAAJ,CAAsB7K,EAAtB,EAA0B9E,OAA1B,CAAf,CAAA;;YAEA,IAAI,CAACH,MAAM,CAACxF,IAAP,CAAYyK,EAAZ,EAAgBwK,OAAhB,CAAL,EAA+B;EAC3BzP,YAAAA,MAAM,CAACxF,IAAP,CAAYyK,EAAZ,EAAgBwK,OAAhB,EAAyBC,MAAzB,CAAA,CAAA;EACH,WANgB;;;EASjBA,UAAAA,MAAM,CAACK,IAAP,EAAA,CAAA;EACH,SAAA;EACJ,OAAA;EAjB2D,KAAA,CAAA,OAAA,GAAA,EAAA;EAAA,MAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAA,MAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,KAAA;;EAmB5D,IAAA,OAAOrE,GAAP,CAAA;KAnBJ,CAAA;;EAsBA,EAAA,IAAMsE,aAAa,GAAG,SAAhBA,aAAgB,CAACtE,GAAD,EAAuB;MACzC,IAAM+D,OAAO,GAAGF,UAAU,EAA1B,CAAA;;MADyC,IAGxB7D,UAAAA,GAAAA,0BAAAA,CAAAA,GAAG,CAAC3N,GAAJ,EAHwB,CAAA;EAAA,QAAA,MAAA,CAAA;;EAAA,IAAA,IAAA;QAGzC,KAA4B,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,QAAA,IAAjBkH,EAAiB,GAAA,MAAA,CAAA,KAAA,CAAA;EACxB,QAAA,IAAMyK,MAAM,GAAGF,aAAa,CAACvK,EAAD,EAAKwK,OAAL,CAA5B,CAAA;;EAEA,QAAA,IAAIC,MAAJ,EAAY;EACRA,UAAAA,MAAM,CAACO,OAAP,EAAA,CAAA;EACH,SAAA;;EAEDjQ,QAAAA,MAAM,CAACkQ,UAAP,CAAkBjL,EAAlB,EAAsBwK,OAAtB,CAAA,CAAA;EACH,OAAA;EAXwC,KAAA,CAAA,OAAA,GAAA,EAAA;EAAA,MAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAA,MAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,KAAA;KAA7C,CAAA;;IAcA,IAAMU,YAAY,GAAG,SAAfA,YAAe,CACjBzE,GADiB,EAEjB0E,YAFiB,EAGjBC,IAHiB,EAIP;MACV,IAAI5T,MAAM,GAAG,IAAb,CAAA;;MADU,IAGOiP,UAAAA,GAAAA,0BAAAA,CAAAA,GAAG,CAAC3N,GAAJ,EAHP,CAAA;EAAA,QAAA,MAAA,CAAA;;EAAA,IAAA,IAAA;QAGV,KAA4B,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,QAAA,IAAjBkH,EAAiB,GAAA,MAAA,CAAA,KAAA,CAAA;UACxB,IAAMyK,MAAM,GAAG1P,MAAM,CAACxF,IAAP,CAAYyK,EAAZ,EAAgBsK,UAAU,EAA1B,CAAf,CAAA;;EAEA,QAAA,IAAIG,MAAM,IAAIA,MAAM,YAAYC,YAAhC,EAA8C;YAC1C,IAAMW,YAAY,GAAGZ,MAArB,CAAA;EACA,UAAA,IAAMa,cAAc,GAAGD,YAAY,CAACF,YAAD,CAAnC,CAAA;;EAEA,UAAA,IAAIG,cAAc,IAAI,OAAOA,cAAP,KAA0B,UAAhD,EAA4D;cACxD9T,MAAM,GAAG8T,cAAc,CAACC,KAAf,CAAqBd,MAArB,EAA6BW,IAA7B,CAAT,CAAA;EACH,WAAA;EACJ,SAAA;EACJ,OAAA;EAdS,KAAA,CAAA,OAAA,GAAA,EAAA;EAAA,MAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAA,MAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,KAAA;;EAgBV,IAAA,OAAO5T,MAAP,CAAA;EACH,GArBD,CApDiE;;;EA4EhEuD,EAAAA,MAAM,CAACyQ,EAAR,CAAmBnB,UAAnB,CAAiC,GAAA,UAE7BoB,SAF6B,EAI/B;MACE,IAAI,CAACA,SAAL,EAAgB;EACZ,MAAA,OAAOd,YAAY,CAAC,IAAD,EAAO,IAAP,CAAnB,CAAA;EACH,KAFD,MAEO,IAAI,OAAA,CAAOc,SAAP,CAAA,KAAqB,QAAzB,EAAmC;QACtC,IAAMvQ,OAAO,GAAGuQ,SAAhB,CAAA;EACA,MAAA,OAAOd,YAAY,CAAC,IAAD,EAAOzP,OAAP,CAAnB,CAAA;EACH,KAHM,MAGA,IAAI,OAAOuQ,SAAP,KAAqB,QAArB,IAAiCA,SAAS,CAAC,CAAD,CAAT,KAAiB,GAAtD,EAA2D;QAC9D,IAAMN,YAAY,GAAGM,SAArB,CAAA;;QAEA,IAAIN,YAAY,KAAK,SAArB,EAAgC;UAC5B,OAAOJ,aAAa,CAAC,IAAD,CAApB,CAAA;EACH,OAFD,MAEO,IAAII,YAAY,KAAK,kBAArB,EAAyC;EAC5C,QAAA,OAAOf,WAAP,CAAA;EACH,OAFM,MAEA;EAAA,QAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAdRgB,IAcQ,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;YAdRA,IAcQ,CAAA,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;EAAA,SAAA;;EACH,QAAA,OAAOF,YAAY,CAAC,IAAD,EAAOC,YAAP,EAAqBC,IAArB,CAAnB,CAAA;EACH,OAAA;EACJ,KAAA;KApBL,CAAA;EAsBH,CAlGD,CAAA;;MAoGqBV;IAajB,SAAY1K,YAAAA,CAAAA,EAAZ,EAA6B9E,OAA7B,EAAqD;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EACjD,IAAA,IAAA,CAAKuL,GAAL,GAAW1L,MAAM,CAACiF,EAAD,CAAjB,CADiD;;EAIjD,IAAA,IAAM0L,QAAQ,GAAI,IAAA,CAAKC,WAAN,CAA0B,UAA1B,CAAjB,CAAA;EACA,IAAA,IAAA,CAAKzQ,OAAL,GAAAyM,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAoB+D,QAApB,CAAA,EAAiCxQ,OAAjC,CAAA,CAAA;EACH,GAAA;;;;aAED,SAAuB,OAAA,GAAA;EACnB,MAAA,IAAA,CAAK0Q,MAAL,EAAA,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,IAAA,GAAoB;EAEnB,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,MAAA,GAAsB;EAErB,KAAA;;;aA9BD,SAAuBxB,QAAAA,CAAAA,WAAvB,EAA6CC,UAA7C,EAAuE;EACnEF,MAAAA,SAAQ,CAACC,WAAD,EAAcC,UAAd,CAAR,CAAA;EACH,KAAA;;;;;;EAHgBK,eAAAA,CAAAA,0BAOoB;;ECrGzC,IAAMmB,6BAA6B,GAAG,SAAhCA,6BAAgC,CAACpD,CAAD,EAAA;IAAA,OAAkC;MACpElN,KAAK,EAAEkN,CAAC,CAAClN,KAD2D;MAEpEE,KAAK,EAAEgN,CAAC,CAAChN,KAF2D;MAGpET,MAAM,EAAEyN,CAAC,CAACzN,MAH0D;EAIpE8B,IAAAA,aAAa,EAAE2L,CAAAA;KAJmB,CAAA;EAAA,CAAtC,CAAA;;EAOA,IAAMqD,wBAAwB,GAAG,SAA3BA,wBAA2B,CAC7BC,KAD6B,EAE7BtD,CAF6B,EAAA;IAAA,OAGb;MAChBlN,KAAK,EAAEwQ,KAAK,CAACxQ,KADG;MAEhBE,KAAK,EAAEsQ,KAAK,CAACtQ,KAFG;MAGhBT,MAAM,EAAE+Q,KAAK,CAAC/Q,MAHE;EAIhB8B,IAAAA,aAAa,EAAE2L,CAAAA;KAPc,CAAA;EAAA,CAAjC,CAAA;;MAUeuD;;;;;;;;;;;;;;;;;;;;;;;;EAoDS,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,UAACvD,CAAD,EAAyB;EACzC;EACA,MAAA,IAAIA,CAAC,CAACwD,MAAF,KAAa,CAAjB,EAAoB;EAChB,QAAA,OAAA;EACH,OAAA;;QAED,IAAMzU,MAAM,GAAG,KAAK0U,CAAAA,eAAL,CAAqBL,6BAA6B,CAACpD,CAAD,CAAlD,CAAf,CAAA;;EAEA,MAAA,IAAIjR,MAAM,IAAIiR,CAAC,CAAC0D,UAAhB,EAA4B;EACxB1D,QAAAA,CAAC,CAAC2D,cAAF,EAAA,CAAA;EACH,OAAA;;;EAuDe,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,UAAC3D,CAAD,EAAyB;EACzC,MAAA,KAAA,CAAK4D,eAAL,CAAqB5D,CAArB,EAAwBoD,6BAA6B,CAACpD,CAAD,CAArD,CAAA,CAAA;;;EAmCc,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,UAACA,CAAD,EAAyB;EACvC,MAAA,KAAA,CAAK6D,aAAL,CAAmBT,6BAA6B,CAACpD,CAAD,CAAhD,CAAA,CAAA;;;EAiCiB,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,EAAA,UAACA,CAAD,EAAyB;QAC1C,IAAI,CAACA,CAAL,EAAQ;EACJ,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAIA,CAAC,CAAC8D,OAAF,CAAU5V,MAAV,GAAmB,CAAvB,EAA0B;EACtB,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAMoV,KAAK,GAAGtD,CAAC,CAAC+D,cAAF,CAAiB,CAAjB,CAAd,CAAA;;EAEA,MAAA,KAAA,CAAKN,eAAL,CAAqBJ,wBAAwB,CAACC,KAAD,EAAQtD,CAAR,CAA7C,CAAA,CAAA;;;EAGgB,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,UAACA,CAAD,EAAyB;QACzC,IAAI,CAACA,CAAL,EAAQ;EACJ,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAIA,CAAC,CAAC8D,OAAF,CAAU5V,MAAV,GAAmB,CAAvB,EAA0B;EACtB,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAMoV,KAAK,GAAGtD,CAAC,CAAC+D,cAAF,CAAiB,CAAjB,CAAd,CAAA;;QAEA,KAAKH,CAAAA,eAAL,CAAqB5D,CAArB,EAAwBqD,wBAAwB,CAACC,KAAD,EAAQtD,CAAR,CAAhD,CAAA,CAAA;;;EAGe,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,UAACA,CAAD,EAAyB;QACxC,IAAI,CAACA,CAAL,EAAQ;EACJ,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAIA,CAAC,CAAC8D,OAAF,CAAU5V,MAAV,GAAmB,CAAvB,EAA0B;EACtB,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAMoV,KAAK,GAAGtD,CAAC,CAAC+D,cAAF,CAAiB,CAAjB,CAAd,CAAA;;EAEA,MAAA,KAAA,CAAKF,aAAL,CAAmBR,wBAAwB,CAACC,KAAD,EAAQtD,CAAR,CAA3C,CAAA,CAAA;;;;;;;;aA5NJ,SAAoB,IAAA,GAAA;QAChB,IAAMzM,OAAO,GAAG,IAAKyK,CAAAA,GAAL,CAAS3N,GAAT,CAAa,CAAb,CAAhB,CAAA;;EAEA,MAAA,IAAIkD,OAAJ,EAAa;EACTA,QAAAA,OAAO,CAACyQ,gBAAR,CAAyB,WAAzB,EAAsC,IAAA,CAAKC,SAA3C,EAAsD;EAClDC,UAAAA,OAAO,EAAE,KAAA;WADb,CAAA,CAAA;EAGA3Q,QAAAA,OAAO,CAACyQ,gBAAR,CAAyB,YAAzB,EAAuC,IAAA,CAAKG,UAA5C,EAAwD;EACpDD,UAAAA,OAAO,EAAE,KAAA;WADb,CAAA,CAAA;EAGH,OAAA;;QAED,IAAKE,CAAAA,cAAL,GAAsB,KAAtB,CAAA;QACA,IAAKC,CAAAA,eAAL,GAAuB,IAAvB,CAAA;QACA,IAAKC,CAAAA,eAAL,GAAuB,KAAvB,CAAA;QACA,IAAKC,CAAAA,aAAL,GAAqB,IAArB,CAAA;EACH,KAAA;;;aAED,SAAsB,MAAA,GAAA;QAClB,IAAMhN,EAAE,GAAG,IAAKyG,CAAAA,GAAL,CAAS3N,GAAT,CAAa,CAAb,CAAX,CAAA;;EAEA,MAAA,IAAIkH,EAAJ,EAAQ;EACJ;EACCA,QAAAA,EAAD,CAAYiN,mBAAZ,CAAgC,WAAhC,EAA6C,IAAA,CAAKP,SAAlD,EAA6D;EACzDC,UAAAA,OAAO,EAAE,KAAA;EADgD,SAA7D,EAFI;;EAOH3M,QAAAA,EAAD,CAAYiN,mBAAZ,CAAgC,YAAhC,EAA8C,IAAA,CAAKL,UAAnD,EAA+D;EAC3DD,UAAAA,OAAO,EAAE,KAAA;WADb,CAAA,CAAA;EAGH,OAAA;;EAED,MAAA,IAAA,CAAKO,6BAAL,EAAA,CAAA;EACH,KAAA;;;EAyBD,IAAA,KAAA,EAAA,SAAA,eAAA,CAAwBrS,YAAxB,EAA6D;EACzD;QACA,IAAI,IAAA,CAAKgS,cAAT,EAAyB;UACrB,IAAKP,CAAAA,aAAL,CAAmBzR,YAAnB,CAAA,CAAA;EACH,OAAA;;QAED,IAAKmS,CAAAA,aAAL,GAAqBnS,YAArB,CAAA;;EAEA,MAAA,IAAI,CAAC,IAAKsS,CAAAA,YAAL,CAAkBtS,YAAlB,CAAL,EAAsC;EAClC,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAKuS,gBAAL,EAAA,CAAA;EAEA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;;;aAED,SAAiC,gBAAA,GAAA;EAC7BhJ,MAAAA,QAAQ,CAACqI,gBAAT,CAA0B,WAA1B,EAAuC,IAAA,CAAKY,SAA5C,EAAuD;EACnDV,QAAAA,OAAO,EAAE,KAAA;SADb,CAAA,CAAA;EAGAvI,MAAAA,QAAQ,CAACqI,gBAAT,CAA0B,WAA1B,EAAuC,IAAA,CAAKa,SAA5C,EAAuD;EACnDX,QAAAA,OAAO,EAAE,KAAA;SADb,CAAA,CAAA;EAGAvI,MAAAA,QAAQ,CAACqI,gBAAT,CAA0B,SAA1B,EAAqC,IAAA,CAAKc,OAA1C,EAAmD;EAAEZ,QAAAA,OAAO,EAAE,KAAA;SAA9D,CAAA,CAAA;EACAvI,MAAAA,QAAQ,CAACqI,gBAAT,CAA0B,UAA1B,EAAsC,IAAA,CAAKe,QAA3C,EAAqD;EACjDb,QAAAA,OAAO,EAAE,KAAA;SADb,CAAA,CAAA;EAIA,MAAA,IAAMc,UAAU,GAAG,IAAKC,CAAAA,aAAL,EAAnB,CAAA;;EAEA,MAAA,IAAID,UAAJ,EAAgB;UACZ,IAAKE,CAAAA,oBAAL,CAA0BF,UAA1B,CAAA,CAAA;EACH,OAFD,MAEO;UACH,IAAKV,CAAAA,eAAL,GAAuB,IAAvB,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,oBAAA,CAA6BU,UAA7B,EAAuD;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACnD,IAAI,IAAA,CAAKX,eAAT,EAA0B;UACtB7N,YAAY,CAAC,IAAK6N,CAAAA,eAAN,CAAZ,CAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAKA,eAAL,GAAuB/N,MAAM,CAACC,UAAP,CAAkB,YAAM;UAC3C,IAAI,MAAI,CAACgO,aAAT,EAAwB;YACpB,MAAI,CAACD,eAAL,GAAuB,IAAvB,CAAA;EACH,SAAA;SAHkB,EAIpBU,UAJoB,CAAvB,CAAA;QAMA,IAAKV,CAAAA,eAAL,GAAuB,KAAvB,CAAA;EACH,KAAA;;;aAMD,SACItE,eAAAA,CAAAA,CADJ,EAEI5N,YAFJ,EAGQ;QACJ,IAAI,IAAA,CAAKgS,cAAT,EAAyB;UACrB,IAAKe,CAAAA,SAAL,CAAe/S,YAAf,CAAA,CAAA;;UAEA,IAAI4N,CAAC,CAAC0D,UAAN,EAAkB;EACd1D,UAAAA,CAAC,CAAC2D,cAAF,EAAA,CAAA;EACH,SAAA;;EACD,QAAA,OAAA;EACH,OAAA;;QAED,IAAI,CAAC,IAAKW,CAAAA,eAAV,EAA2B;EACvB,QAAA,OAAA;EACH,OAAA;;QAED,IAAI,IAAA,CAAKC,aAAT,EAAwB;UACpB,IAAKH,CAAAA,cAAL,GAAsB,IAAKgB,CAAAA,UAAL,CAAgB,IAAKb,CAAAA,aAArB,MAAwC,KAA9D,CAAA;EACH,OAAA;;QAED,IAAI,IAAA,CAAKH,cAAT,EAAyB;UACrB,IAAKe,CAAAA,SAAL,CAAe/S,YAAf,CAAA,CAAA;;UAEA,IAAI4N,CAAC,CAAC0D,UAAN,EAAkB;EACd1D,UAAAA,CAAC,CAAC2D,cAAF,EAAA,CAAA;EACH,SAAA;EACJ,OAND,MAMO;UACH,IAAKE,CAAAA,aAAL,CAAmBzR,YAAnB,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;EAMD,IAAA,KAAA,EAAA,SAAA,aAAA,CAAsBA,YAAtB,EAAwD;EACpD,MAAA,IAAA,CAAKqS,6BAAL,EAAA,CAAA;QACA,IAAKH,CAAAA,eAAL,GAAuB,KAAvB,CAAA;QACA,IAAKC,CAAAA,aAAL,GAAqB,IAArB,CAAA;;QAEA,IAAI,IAAA,CAAKH,cAAT,EAAyB;UACrB,IAAKA,CAAAA,cAAL,GAAsB,KAAtB,CAAA;UACA,IAAKiB,CAAAA,SAAL,CAAejT,YAAf,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAAwC,6BAAA,GAAA;EACpC;EACCuJ,MAAAA,QAAD,CAAkB6I,mBAAlB,CAAsC,WAAtC,EAAmD,IAAA,CAAKI,SAAxD,EAAmE;EAC/DV,QAAAA,OAAO,EAAE,KAAA;EADsD,OAAnE,EAFoC;;EAMnCvI,MAAAA,QAAD,CAAkB6I,mBAAlB,CAAsC,WAAtC,EAAmD,IAAA,CAAKK,SAAxD,EAAmE;EAC/DX,QAAAA,OAAO,EAAE,KAAA;EADsD,OAAnE,EANoC;;EAUnCvI,MAAAA,QAAD,CAAkB6I,mBAAlB,CAAsC,SAAtC,EAAiD,IAAA,CAAKM,OAAtD,EAA+D;EAC3DZ,QAAAA,OAAO,EAAE,KAAA;EADkD,OAA/D,EAVoC;;EAcnCvI,MAAAA,QAAD,CAAkB6I,mBAAlB,CAAsC,UAAtC,EAAkD,IAAA,CAAKO,QAAvD,EAAiE;EAC7Db,QAAAA,OAAO,EAAE,KAAA;SADb,CAAA,CAAA;EAGH,KAAA;;;;IAzL6CjC;;MCd7BqD;EAIjB,EAAA,SAAA,gBAAA,CAAYvT,UAAZ,EAAsC;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,uBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAClC,IAAKA,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;EACH,GAAA;;;;aAED,SAAyB,SAAA,GAAA;QACrB,IAAMwT,KAAK,GAAG3F,IAAI,CAAC4F,SAAL,CAAe,IAAA,CAAKC,QAAL,EAAf,CAAd,CAAA;;EAEA,MAAA,IAAI,KAAK1T,UAAL,CAAgBU,OAAhB,CAAwBiT,qBAA5B,EAAmD;EAC/C,QAAA,IAAA,CAAK3T,UAAL,CAAgBU,OAAhB,CAAwBiT,qBAAxB,CAA8CH,KAA9C,CAAA,CAAA;EACH,OAFD,MAEO,IAAI,IAAKI,CAAAA,oBAAL,EAAJ,EAAiC;EACpCC,QAAAA,YAAY,CAACC,OAAb,CAAqB,KAAKC,UAAL,EAArB,EAAwCP,KAAxC,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAAgD,mBAAA,GAAA;EAC5C,MAAA,IAAMQ,QAAQ,GAAG,IAAKC,CAAAA,eAAL,EAAjB,CAAA;;EAEA,MAAA,IAAID,QAAJ,EAAc;EACV,QAAA,OAAO,IAAKE,CAAAA,UAAL,CAAgBF,QAAhB,CAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAA8B,QAAA,GAAA;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;EAC1B,MAAA,IAAMG,cAAc,GAAG,SAAjBA,cAAiB,GAAgB;UACnC,IAAMC,SAAmB,GAAG,EAA5B,CAAA;;UAEA,KAAI,CAACpU,UAAL,CAAgBpE,IAAhB,CAAqBmC,OAArB,CAA6B,UAAC/B,IAAD,EAAgB;EACzC,UAAA,IAAIA,IAAI,CAAC+C,OAAL,IAAgB/C,IAAI,CAACuC,EAArB,IAA2BvC,IAAI,CAACW,WAAL,EAA/B,EAAmD;EAC/CyX,YAAAA,SAAS,CAAC/X,IAAV,CAAeL,IAAI,CAACuC,EAApB,CAAA,CAAA;EACH,WAAA;;EACD,UAAA,OAAO,IAAP,CAAA;WAJJ,CAAA,CAAA;;EAOA,QAAA,OAAO6V,SAAP,CAAA;SAVJ,CAAA;;EAaA,MAAA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,GAAgB;UACvC,IAAMC,eAAyB,GAAG,EAAlC,CAAA;;UAEA,KAAI,CAACtU,UAAL,CAAgBuU,gBAAhB,GAAmCjO,OAAnC,CAA2C,UAACtK,IAAD,EAAU;EACjD,UAAA,IAAIA,IAAI,CAACuC,EAAL,IAAW,IAAf,EAAqB;EACjB+V,YAAAA,eAAe,CAACjY,IAAhB,CAAqBL,IAAI,CAACuC,EAA1B,CAAA,CAAA;EACH,WAAA;WAHL,CAAA,CAAA;;EAMA,QAAA,OAAO+V,eAAP,CAAA;SATJ,CAAA;;QAYA,OAAO;UACHE,UAAU,EAAEL,cAAc,EADvB;EAEHM,QAAAA,aAAa,EAAEJ,kBAAkB,EAAA;SAFrC,CAAA;EAIH,KAAA;EAED;EACJ;EACA;EACA;EACA;;;;EAEI,IAAA,KAAA,EAAA,SAAA,eAAA,CAAuBb,KAAvB,EAAmD;QAC/C,IAAI,CAACA,KAAL,EAAY;EACR,QAAA,OAAO,KAAP,CAAA;EACH,OAFD,MAEO;UACH,IAAIkB,gBAAgB,GAAG,KAAvB,CAAA;;UAEA,IAAIlB,KAAK,CAACgB,UAAV,EAAsB;EAClBE,UAAAA,gBAAgB,GAAG,IAAKC,CAAAA,gBAAL,CAAsBnB,KAAK,CAACgB,UAA5B,CAAnB,CAAA;EACH,SAAA;;UAED,IAAIhB,KAAK,CAACiB,aAAV,EAAyB;EACrB,UAAA,IAAA,CAAKG,cAAL,EAAA,CAAA;EACA,UAAA,IAAA,CAAKC,kBAAL,CAAwBrB,KAAK,CAACiB,aAA9B,CAAA,CAAA;EACH,SAAA;;EAED,QAAA,OAAOC,gBAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SACIlB,uBAAAA,CAAAA,KADJ,EAEIsB,UAFJ,EAGQ;EACJ,MAAA,IAAItB,KAAJ,EAAW;UACP,IAAKuB,CAAAA,yBAAL,CACIvB,KAAK,CAACgB,UADV,EAEIhB,KAAK,CAACiB,aAFV,EAGIK,UAHJ,CAAA,CAAA;EAKH,OAND,MAMO;UACHA,UAAU,EAAA,CAAA;EACb,OAAA;EACJ,KAAA;;;aAED,SAA8C,qBAAA,GAAA;EAC1C,MAAA,IAAMtB,KAAK,GAAG,IAAKwB,CAAAA,mBAAL,EAAd,CAAA;;EAEA,MAAA,IAAIxB,KAAK,IAAIA,KAAK,CAACiB,aAAnB,EAAkC;EAC9B,QAAA,OAAOjB,KAAK,CAACiB,aAAN,CAAoB,CAApB,CAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,UAAA,CAAmBT,QAAnB,EAAiD;QAC7C,IAAMR,KAAK,GAAG3F,IAAI,CAACC,KAAL,CAAWkG,QAAX,CAAd,CAD6C;;EAI7C,MAAA,IAAIR,KAAK,IAAIA,KAAK,CAACiB,aAAf,IAAgCvM,KAAK,CAACsL,KAAK,CAACiB,aAAP,CAAzC,EAAgE;EAC5D;EACAjB,QAAAA,KAAK,CAACiB,aAAN,GAAsB,CAACjB,KAAK,CAACiB,aAAP,CAAtB,CAAA;EACH,OAAA;;EAED,MAAA,OAAOjB,KAAP,CAAA;EACH,KAAA;;;aAED,SAAyC,eAAA,GAAA;EACrC,MAAA,IAAI,KAAKxT,UAAL,CAAgBU,OAAhB,CAAwBuU,qBAA5B,EAAmD;EAC/C,QAAA,OAAO,KAAKjV,UAAL,CAAgBU,OAAhB,CAAwBuU,qBAAxB,EAAP,CAAA;EACH,OAFD,MAEO,IAAI,IAAKrB,CAAAA,oBAAL,EAAJ,EAAiC;EACpC,QAAA,OAAOC,YAAY,CAACqB,OAAb,CAAqB,IAAKnB,CAAAA,UAAL,EAArB,CAAP,CAAA;EACH,OAFM,MAEA;EACH,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,gBAAA,CAAyBoB,OAAzB,EAAqD;QACjD,IAAIT,gBAAgB,GAAG,KAAvB,CAAA;;EADiD,MAAA,IAAA,SAAA,GAAA,0BAAA,CAG5BS,OAH4B,CAAA;EAAA,UAAA,KAAA,CAAA;;EAAA,MAAA,IAAA;UAGjD,KAA8B,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAnB9W,MAAmB,GAAA,KAAA,CAAA,KAAA,CAAA;YAC1B,IAAMrC,IAAI,GAAG,IAAKgE,CAAAA,UAAL,CAAgBoV,WAAhB,CAA4B/W,MAA5B,CAAb,CAAA;;EAEA,UAAA,IAAIrC,IAAJ,EAAU;EACN,YAAA,IAAI,CAACA,IAAI,CAACV,cAAV,EAA0B;gBACtBU,IAAI,CAAC+C,OAAL,GAAe,IAAf,CAAA;EACH,aAFD,MAEO;EACH2V,cAAAA,gBAAgB,GAAG,IAAnB,CAAA;EACH,aAAA;EACJ,WAAA;EACJ,SAAA;EAbgD,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;;EAejD,MAAA,OAAOA,gBAAP,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,kBAAA,CAA2BS,OAA3B,EAAuD;QACnD,IAAIE,WAAW,GAAG,CAAlB,CAAA;;EADmD,MAAA,IAAA,UAAA,GAAA,0BAAA,CAG9BF,OAH8B,CAAA;EAAA,UAAA,MAAA,CAAA;;EAAA,MAAA,IAAA;UAGnD,KAA8B,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAnB9W,MAAmB,GAAA,MAAA,CAAA,KAAA,CAAA;YAC1B,IAAMrC,IAAI,GAAG,IAAKgE,CAAAA,UAAL,CAAgBoV,WAAhB,CAA4B/W,MAA5B,CAAb,CAAA;;EAEA,UAAA,IAAIrC,IAAJ,EAAU;EACNqZ,YAAAA,WAAW,IAAI,CAAf,CAAA;EAEA,YAAA,IAAA,CAAKrV,UAAL,CAAgBkK,iBAAhB,CAAkCoL,cAAlC,CAAiDtZ,IAAjD,CAAA,CAAA;EACH,WAAA;EACJ,SAAA;EAXkD,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;;QAanD,OAAOqZ,WAAW,KAAK,CAAvB,CAAA;EACH,KAAA;;;aAED,SAA+B,cAAA,GAAA;EAC3B,MAAA,IAAMnL,iBAAiB,GAAG,IAAKlK,CAAAA,UAAL,CAAgBkK,iBAA1C,CAAA;EAEA,MAAA,IAAMqL,aAAa,GAAGrL,iBAAiB,CAACqK,gBAAlB,EAAtB,CAAA;EAEAgB,MAAAA,aAAa,CAACjP,OAAd,CAAsB,UAACtK,IAAD,EAAU;UAC5BkO,iBAAiB,CAACsL,mBAAlB,CAAsCxZ,IAAtC,CAAA,CAAA;SADJ,CAAA,CAAA;EAGH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,yBAAA,CACIyZ,YADJ,EAEIF,aAFJ,EAGIT,UAHJ,EAIQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACJ,IAAIY,YAAY,GAAG,CAAnB,CAAA;QACA,IAAIP,OAAO,GAAGM,YAAd,CAAA;;EAEA,MAAA,IAAMrB,SAAS,GAAG,SAAZA,SAAY,GAAY;UAC1B,IAAMuB,WAAW,GAAG,EAApB,CAAA;;EAD0B,QAAA,IAAA,UAAA,GAAA,0BAAA,CAGLR,OAHK,CAAA;EAAA,YAAA,MAAA,CAAA;;EAAA,QAAA,IAAA;YAG1B,KAA8B,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAAnB9W,MAAmB,GAAA,MAAA,CAAA,KAAA,CAAA;;cAC1B,IAAMrC,IAAI,GAAG,MAAI,CAACgE,UAAL,CAAgBoV,WAAhB,CAA4B/W,MAA5B,CAAb,CAAA;;cAEA,IAAI,CAACrC,IAAL,EAAW;gBACP2Z,WAAW,CAACtZ,IAAZ,CAAiBgC,MAAjB,CAAA,CAAA;EACH,aAFD,MAEO;EACH,cAAA,IAAI,CAACrC,IAAI,CAAC2P,UAAV,EAAsB;kBAClB,IAAI3P,IAAI,CAACV,cAAT,EAAyB;oBACrBsa,eAAe,CAAC5Z,IAAD,CAAf,CAAA;EACH,iBAFD,MAEO;oBACH,MAAI,CAACgE,UAAL,CAAgBmE,SAAhB,CAA0BnI,IAA1B,EAAgC,KAAhC,EAAuC,IAAvC,CAAA,CAAA;EACH,iBAAA;EACJ,eAAA;EACJ,aAAA;EACJ,WAAA;EAjByB,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;;EAmB1BmZ,QAAAA,OAAO,GAAGQ,WAAV,CAAA;;EAEA,QAAA,IAAI,MAAI,CAACd,kBAAL,CAAwBU,aAAxB,CAAJ,EAA4C;EACxC,UAAA,MAAI,CAACvV,UAAL,CAAgB8E,gBAAhB,CAAiC,IAAjC,CAAA,CAAA;EACH,SAAA;;UAED,IAAI4Q,YAAY,KAAK,CAArB,EAAwB;YACpBZ,UAAU,EAAA,CAAA;EACb,SAAA;SA3BL,CAAA;;EA8BA,MAAA,IAAMc,eAAe,GAAG,SAAlBA,eAAkB,CAAC5Z,IAAD,EAAsB;EAC1C0Z,QAAAA,YAAY,IAAI,CAAhB,CAAA;;UACA,MAAI,CAAC1V,UAAL,CAAgBmE,SAAhB,CAA0BnI,IAA1B,EAAgC,KAAhC,EAAuC,YAAM;EACzC0Z,UAAAA,YAAY,IAAI,CAAhB,CAAA;YACAtB,SAAS,EAAA,CAAA;WAFb,CAAA,CAAA;SAFJ,CAAA;;QAQAA,SAAS,EAAA,CAAA;EACZ,KAAA;;;aAED,SAA6B,UAAA,GAAA;QACzB,IAAI,OAAO,KAAKpU,UAAL,CAAgBU,OAAhB,CAAwBmV,SAA/B,KAA6C,QAAjD,EAA2D;EACvD,QAAA,OAAO,IAAK7V,CAAAA,UAAL,CAAgBU,OAAhB,CAAwBmV,SAA/B,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,MAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAAwC,oBAAA,GAAA;EACpC,MAAA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAe;EAC/B;UACA,IAAIjC,YAAY,IAAI,IAApB,EAA0B;EACtB,UAAA,OAAO,KAAP,CAAA;EACH,SAFD,MAEO;EACH;YACA,IAAI;cACA,IAAMhY,GAAG,GAAG,eAAZ,CAAA;EACAka,YAAAA,cAAc,CAACjC,OAAf,CAAuBjY,GAAvB,EAA4B,OAA5B,CAAA,CAAA;cACAka,cAAc,CAACC,UAAf,CAA0Bna,GAA1B,CAAA,CAAA;aAHJ,CAIE,OAAO2R,KAAP,EAAc;EACZ,YAAA,OAAO,KAAP,CAAA;EACH,WAAA;;EAED,UAAA,OAAO,IAAP,CAAA;EACH,SAAA;SAfL,CAAA;;EAkBA,MAAA,IAAI,IAAKyI,CAAAA,qBAAL,IAA8B,IAAlC,EAAwC;UACpC,IAAKA,CAAAA,qBAAL,GAA6BH,WAAW,EAAxC,CAAA;EACH,OAAA;;EAED,MAAA,OAAO,KAAKG,qBAAZ,CAAA;EACH,KAAA;;;;;;MCvQgBC;EAOjB,EAAA,SAAA,aAAA,CAAYlW,UAAZ,EAAsC;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAClC,IAAKA,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;MACA,IAAK8G,CAAAA,WAAL,GAAmB,CAAC,CAApB,CAAA;MACA,IAAKqP,CAAAA,aAAL,GAAqB,KAArB,CAAA;EACH,GAAA;;;;aAED,SAA8B,cAAA,GAAA;EAC1B,MAAA,IAAA,CAAKC,UAAL,EAAA,CAAA;EACA,MAAA,IAAA,CAAKC,sBAAL,EAAA,CAAA;EACA,MAAA,IAAA,CAAKC,wBAAL,EAAA,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,SAAA,CAAiBjV,GAAjB,EAAoC;EAChC,MAAA,IAAA,CAAK+U,UAAL,EAAA,CAAA;;QAEA,IAAI,IAAA,CAAKG,aAAT,EAAwB;EACpB,QAAA,IAAA,CAAKA,aAAL,CAAmB,CAAnB,CAAsBC,CAAAA,SAAtB,GAAkCnV,GAAlC,CAAA;EACH,OAFD,MAEO;UACH,IAAMF,MAAM,GAAG,IAAKnB,CAAAA,UAAL,CAAgBiM,GAAhB,CAAoB9K,MAApB,EAAf,CAAA;UACA,IAAMsV,OAAO,GAAGtV,MAAM,GAAGA,MAAM,CAACE,GAAV,GAAgB,CAAtC,CAAA;UAEAd,MAAM,CAACqJ,QAAD,CAAN,CAAiB4M,SAAjB,CAA2BnV,GAAG,GAAGoV,OAAjC,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,kBAAA,CAA0BnW,QAA1B,EAAqD;EACjD,MAAA,IAAA,CAAK8V,UAAL,EAAA,CAAA;EAEA,MAAA,IAAIM,aAAJ,CAAA;EACA,MAAA,IAAIC,UAAJ,CAAA;EACA,MAAA,IAAIC,UAAJ,CAAA;EACA,MAAA,IAAIC,OAAJ,CAAA;EAEA,MAAA,IAAMC,QAAQ,GAAGxW,QAAQ,CAACoF,MAAT,MAAqB,CAAtC,CAAA;;QAEA,IAAI,IAAA,CAAK6Q,aAAT,EAAwB;EACpBM,QAAAA,OAAO,GAAG,CAAV,CAAA;EACAF,QAAAA,UAAU,GAAG,IAAKJ,CAAAA,aAAL,CAAmB7Q,MAAnB,MAA+B,CAA5C,CAAA;EAEA,QAAA,IAAMvE,MAAM,GAAGb,QAAQ,CAACa,MAAT,EAAf,CAAA;UACA,IAAM4V,WAAW,GAAG5V,MAAM,GAAGA,MAAM,CAACE,GAAV,GAAgB,CAA1C,CAAA;EAEAuV,QAAAA,UAAU,GAAGG,WAAW,GAAG,IAAA,CAAKC,eAAhC,CAAA;UACAN,aAAa,GAAGE,UAAU,GAAGE,QAA7B,CAAA;EACH,OATD,MASO;UACHD,OAAO,GAAGtW,MAAM,CAACgE,MAAD,CAAN,CAAeiS,SAAf,MAA8B,CAAxC,CAAA;UAEA,IAAMS,YAAY,GAAG1W,MAAM,CAACgE,MAAD,CAAN,CAAemB,MAAf,EAAA,IAA2B,CAAhD,CAAA;UACAiR,UAAU,GAAGE,OAAO,GAAGI,YAAvB,CAAA;;EAEA,QAAA,IAAM9V,OAAM,GAAGb,QAAQ,CAACa,MAAT,EAAf,CAAA;;EAEAyV,QAAAA,UAAU,GAAGzV,OAAM,GAAGA,OAAM,CAACE,GAAV,GAAgB,CAAnC,CAAA;UACAqV,aAAa,GAAGE,UAAU,GAAGE,QAA7B,CAAA;EACH,OAAA;;EAED,MAAA,OAAOJ,aAAa,IAAIC,UAAjB,IAA+BC,UAAU,IAAIC,OAApD,CAAA;EACH,KAAA;;;aAED,SAA+B,aAAA,GAAA;QAC3B,IAAI,CAAC,IAAKN,CAAAA,aAAV,EAAyB;EACrB,QAAA,OAAO,CAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,IAAKA,CAAAA,aAAL,CAAmBW,UAAnB,MAAmC,CAA1C,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAAiC,gBAAA,GAAA;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;EAC7B,MAAA,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAqB;EAC/C,QAAA,IAAMC,aAAa,GAAG,CAAC,UAAD,EAAa,YAAb,CAAtB,CAAA;;EAEA,QAAA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACpL,GAAD,EAA0B;EAAA,UAAA,IAAA,SAAA,GAAA,0BAAA,CACvBmL,aADuB,CAAA;EAAA,cAAA,KAAA,CAAA;;EAAA,UAAA,IAAA;cAC1C,KAAkC,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,cAAA,IAAvBE,IAAuB,GAAA,KAAA,CAAA,KAAA,CAAA;EAC9B,cAAA,IAAMC,aAAa,GAAGtL,GAAG,CAACjE,GAAJ,CAAQsP,IAAR,CAAtB,CAAA;;EACA,cAAA,IACIC,aAAa,KAAK,MAAlB,IACAA,aAAa,KAAK,QAFtB,EAGE;EACE,gBAAA,OAAO,IAAP,CAAA;EACH,eAAA;EACJ,aAAA;EATyC,WAAA,CAAA,OAAA,GAAA,EAAA;EAAA,YAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,WAAA,SAAA;EAAA,YAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,WAAA;;EAW1C,UAAA,OAAO,KAAP,CAAA;WAXJ,CAAA;;UAcA,IAAIF,WAAW,CAAC,KAAI,CAACrX,UAAL,CAAgBiM,GAAjB,CAAf,EAAsC;EAClC,UAAA,OAAO,KAAI,CAACjM,UAAL,CAAgBiM,GAAvB,CAAA;EACH,SAAA;;UAnB8C,IAqB9B,UAAA,GAAA,0BAAA,CAAA,KAAI,CAACjM,UAAL,CAAgBiM,GAAhB,CAAoBuL,OAApB,EAA8BlZ,CAAAA,GAA9B,EArB8B,CAAA;EAAA,YAAA,MAAA,CAAA;;EAAA,QAAA,IAAA;YAqB/C,KAAsD,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAA3CkH,EAA2C,GAAA,MAAA,CAAA,KAAA,CAAA;EAClD,YAAA,IAAMyG,GAAG,GAAG1L,MAAM,CAACiF,EAAD,CAAlB,CAAA;;EACA,YAAA,IAAI6R,WAAW,CAACpL,GAAD,CAAf,EAAsB;EAClB,cAAA,OAAOA,GAAP,CAAA;EACH,aAAA;EACJ,WAAA;EA1B8C,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;;EA4B/C,QAAA,OAAO,IAAP,CAAA;SA5BJ,CAAA;;EA+BA,MAAA,IAAMwL,yBAAyB,GAAG,SAA5BA,yBAA4B,GAAY;UAC1C,KAAI,CAACT,eAAL,GAAuB,CAAvB,CAAA;UACA,KAAI,CAACT,aAAL,GAAqB,IAArB,CAAA;SAFJ,CAAA;;QAKA,IAAI,IAAA,CAAKvW,UAAL,CAAgBiM,GAAhB,CAAoBjE,GAApB,CAAwB,UAAxB,CAAwC,KAAA,OAA5C,EAAqD;UACjDyP,yBAAyB,EAAA,CAAA;EAC5B,OAAA;;QAED,IAAMlB,aAAa,GAAGY,qBAAqB,EAA3C,CAAA;;EAEA,MAAA,IACIZ,aAAa,IACbA,aAAa,CAACpa,MADd,IAEAoa,aAAa,CAAC,CAAD,CAAb,CAAiBmB,OAAjB,KAA6B,MAHjC,EAIE;UACE,IAAKnB,CAAAA,aAAL,GAAqBA,aAArB,CAAA;EAEA,QAAA,IAAMpV,MAAM,GAAG,IAAA,CAAKoV,aAAL,CAAmBpV,MAAnB,EAAf,CAAA;UACA,IAAK6V,CAAAA,eAAL,GAAuB7V,MAAM,GAAGA,MAAM,CAACE,GAAV,GAAgB,CAA7C,CAAA;EACH,OATD,MASO;UACHoW,yBAAyB,EAAA,CAAA;EAC5B,OAAA;;QAED,IAAKtB,CAAAA,aAAL,GAAqB,IAArB,CAAA;EACH,KAAA;;;aAED,SAA2B,UAAA,GAAA;QACvB,IAAI,CAAC,IAAKA,CAAAA,aAAV,EAAyB;EACrB,QAAA,IAAA,CAAKwB,gBAAL,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,uCAAA,CAAgD/V,IAAhD,EAAqE;QACjE,IAAMgW,YAAY,GAAG,IAAKrB,CAAAA,aAAL,IAAsB,IAAKA,CAAAA,aAAL,CAAmB,CAAnB,CAA3C,CAAA;;QAEA,IAAI,CAACqB,YAAL,EAAmB;EACf,QAAA,OAAA;EACH,OAAA;;QAED,IAAMC,cAAc,GAChB,IAAA,CAAKb,eAAL,GAAuBY,YAAY,CAACE,YAApC,GAAmDlW,IAAI,CAACsB,MAD5D,CAAA;;QAGA,IAAI2U,cAAc,GAAG,EAArB,EAAyB;UACrBD,YAAY,CAACpB,SAAb,IAA0B,EAA1B,CAAA;UACA,IAAKxW,CAAAA,UAAL,CAAgB+X,eAAhB,EAAA,CAAA;UACA,IAAKjR,CAAAA,WAAL,GAAmB,CAAC,CAApB,CAAA;SAHJ,MAIO,IAAIlF,IAAI,CAACP,GAAL,GAAW,IAAK2V,CAAAA,eAAhB,GAAkC,EAAtC,EAA0C;UAC7CY,YAAY,CAACpB,SAAb,IAA0B,EAA1B,CAAA;UACA,IAAKxW,CAAAA,UAAL,CAAgB+X,eAAhB,EAAA,CAAA;UACA,IAAKjR,CAAAA,WAAL,GAAmB,CAAC,CAApB,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,mCAAA,CAA4ClF,IAA5C,EAAiE;QAC7D,IAAM4U,SAAS,GAAGjW,MAAM,CAACqJ,QAAD,CAAN,CAAiB4M,SAAjB,EAAA,IAAgC,CAAlD,CAAA;EACA,MAAA,IAAMwB,WAAW,GAAGpW,IAAI,CAACP,GAAL,GAAWmV,SAA/B,CAAA;;QAEA,IAAIwB,WAAW,GAAG,EAAlB,EAAsB;UAClBzX,MAAM,CAACqJ,QAAD,CAAN,CAAiB4M,SAAjB,CAA2BA,SAAS,GAAG,EAAvC,CAAA,CAAA;EACH,OAFD,MAEO;UACH,IAAMS,YAAY,GAAG1W,MAAM,CAACgE,MAAD,CAAN,CAAemB,MAAf,EAAA,IAA2B,CAAhD,CAAA;;UAEA,IAAIuR,YAAY,IAAIrV,IAAI,CAACsB,MAAL,GAAcsT,SAAlB,CAAZ,GAA2C,EAA/C,EAAmD;YAC/CjW,MAAM,CAACqJ,QAAD,CAAN,CAAiB4M,SAAjB,CAA2BA,SAAS,GAAG,EAAvC,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;;;aAED,SAAuC,sBAAA,GAAA;EACnC,MAAA,IAAMvW,WAAW,GAAG,IAAA,CAAKD,UAAL,CAAgBiY,UAAhB,CAA2BhY,WAA/C,CAAA;;QAEA,IAAIA,WAAW,IAAIA,WAAW,CAACoB,GAAZ,KAAoB,IAAA,CAAKyF,WAA5C,EAAyD;EACrD,QAAA,IAAA,CAAKA,WAAL,GAAmB7G,WAAW,CAACoB,GAA/B,CAAA;;UAEA,IAAI,IAAA,CAAKkV,aAAT,EAAwB;YACpB,IAAK2B,CAAAA,uCAAL,CAA6CjY,WAA7C,CAAA,CAAA;EACH,SAFD,MAEO;YACH,IAAKkY,CAAAA,mCAAL,CAAyClY,WAAzC,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;;;aAED,SAAyC,wBAAA,GAAA;EACrC,MAAA,IAAMI,YAAY,GAAG,IAAA,CAAKL,UAAL,CAAgBiY,UAAhB,CAA2B5X,YAAhD,CAAA;;QAEA,IAAI,CAACA,YAAL,EAAmB;EACf,QAAA,OAAA;EACH,OAAA;;QAED,IAAI,IAAA,CAAKkW,aAAT,EAAwB;UACpB,IAAK6B,CAAAA,mCAAL,CAAyC/X,YAAzC,CAAA,CAAA;EACH,OAFD,MAEO;UACH,IAAKgY,CAAAA,qCAAL,CAA2ChY,YAA3C,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,mCAAA,CACIA,YADJ,EAEQ;QACJ,IACIA,YAAY,CAACU,KAAb,KAAuBC,SAAvB,IACAX,YAAY,CAACY,KAAb,KAAuBD,SAF3B,EAGE;EACE,QAAA,OAAA;EACH,OAAA;;QAED,IAAMuV,aAAa,GAAG,IAAA,CAAKA,aAA3B,CAAA;EACA,MAAA,IAAM+B,kBAAkB,GAAG/B,aAAa,IAAIA,aAAa,CAACpV,MAAd,EAA5C,CAAA;;EAEA,MAAA,IAAI,EAAEoV,aAAa,IAAI+B,kBAAnB,CAAJ,EAA4C;EACxC,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAMV,YAAY,GAAGrB,aAAa,CAAC,CAAD,CAAlC,CAAA;EAEA,MAAA,IAAMgC,cAAc,GAChBX,YAAY,CAACV,UAAb,GAA0BU,YAAY,CAACY,WAAvC,GACAZ,YAAY,CAACa,WAFjB,CAAA;EAGA,MAAA,IAAMC,aAAa,GAAGd,YAAY,CAACV,UAAb,GAA0B,CAAhD,CAAA;QAEA,IAAMyB,SAAS,GAAGL,kBAAkB,CAAClX,IAAnB,GAA0BwW,YAAY,CAACY,WAAzD,CAAA;EACA,MAAA,IAAMI,QAAQ,GAAGN,kBAAkB,CAAClX,IAApC,CAAA;QACA,IAAMyX,eAAe,GAAGxY,YAAY,CAACU,KAAb,GAAqB4X,SAAS,GAAG,EAAzD,CAAA;QACA,IAAMG,cAAc,GAAGzY,YAAY,CAACU,KAAb,GAAqB6X,QAAQ,GAAG,EAAvD,CAAA;;QAEA,IAAIC,eAAe,IAAIN,cAAvB,EAAuC;EACnCX,QAAAA,YAAY,CAACV,UAAb,GAA0B7P,IAAI,CAACC,GAAL,CACtBsQ,YAAY,CAACV,UAAb,GAA0B,EADJ,EAEtBU,YAAY,CAACa,WAFS,CAA1B,CAAA;EAIH,OALD,MAKO,IAAIK,cAAc,IAAIJ,aAAtB,EAAqC;EACxCd,QAAAA,YAAY,CAACV,UAAb,GAA0B7P,IAAI,CAAC0R,GAAL,CAASnB,YAAY,CAACV,UAAb,GAA0B,EAAnC,EAAuC,CAAvC,CAA1B,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,qCAAA,CACI7W,YADJ,EAEQ;QACJ,IACIA,YAAY,CAACU,KAAb,KAAuBC,SAAvB,IACAX,YAAY,CAACY,KAAb,KAAuBD,SAF3B,EAGE;EACE,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAMgY,SAAS,GAAGzY,MAAM,CAACqJ,QAAD,CAAxB,CAAA;EAEA,MAAA,IAAMsN,UAAU,GAAG8B,SAAS,CAAC9B,UAAV,MAA0B,CAA7C,CAAA;QACA,IAAM+B,WAAW,GAAG1Y,MAAM,CAACgE,MAAD,CAAN,CAAekB,KAAf,EAAA,IAA0B,CAA9C,CAAA;EAEA,MAAA,IAAMiT,aAAa,GAAGxB,UAAU,GAAG,CAAnC,CAAA;QAEA,IAAM2B,eAAe,GAAGxY,YAAY,CAACU,KAAb,GAAqBkY,WAAW,GAAG,EAA3D,CAAA;QACA,IAAMH,cAAc,GAAGzY,YAAY,CAACU,KAAb,GAAqBmW,UAArB,GAAkC,EAAzD,CAAA;;EAEA,MAAA,IAAI2B,eAAJ,EAAqB;EACjBG,QAAAA,SAAS,CAAC9B,UAAV,CAAqBA,UAAU,GAAG,EAAlC,CAAA,CAAA;EACH,OAFD,MAEO,IAAI4B,cAAc,IAAIJ,aAAtB,EAAqC;EACxCM,QAAAA,SAAS,CAAC9B,UAAV,CAAqB7P,IAAI,CAAC0R,GAAL,CAAS7B,UAAU,GAAG,EAAtB,EAA0B,CAA1B,CAArB,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;;;;MC3QgBgC;EAKjB,EAAA,SAAA,iBAAA,CAAYlZ,UAAZ,EAAsC;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAClC,IAAKA,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;EACA,IAAA,IAAA,CAAKuV,aAAL,GAAqB,IAAI4D,GAAJ,EAArB,CAAA;EACA,IAAA,IAAA,CAAK3W,KAAL,EAAA,CAAA;EACH,GAAA;;;;aAED,SAAuC,eAAA,GAAA;EACnC,MAAA,IAAM+S,aAAa,GAAG,IAAKhB,CAAAA,gBAAL,EAAtB,CAAA;;QAEA,IAAIgB,aAAa,CAACpZ,MAAlB,EAA0B;UACtB,OAAOoZ,aAAa,CAAC,CAAD,CAApB,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAAkC,gBAAA,GAAA;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;QAC9B,IAAI,IAAA,CAAK6D,kBAAT,EAA6B;UACzB,OAAO,CAAC,IAAKA,CAAAA,kBAAN,CAAP,CAAA;EACH,OAFD,MAEO;UACH,IAAM7D,aAAqB,GAAG,EAA9B,CAAA;EAEA,QAAA,IAAA,CAAKA,aAAL,CAAmBjP,OAAnB,CAA2B,UAAC/H,EAAD,EAAQ;YAC/B,IAAMvC,IAAI,GAAG,KAAI,CAACgE,UAAL,CAAgBoV,WAAhB,CAA4B7W,EAA5B,CAAb,CAAA;;EACA,UAAA,IAAIvC,IAAJ,EAAU;cACNuZ,aAAa,CAAClZ,IAAd,CAAmBL,IAAnB,CAAA,CAAA;EACH,WAAA;WAJL,CAAA,CAAA;EAOA,QAAA,OAAOuZ,aAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,qBAAA,CAA6B9Z,MAA7B,EAAmD;QAC/C,IAAI,IAAA,CAAK2d,kBAAT,EAA6B;EACzB,QAAA,IAAI3d,MAAM,CAAC0B,UAAP,CAAkB,IAAKic,CAAAA,kBAAvB,CAAJ,EAAgD;YAC5C,OAAO,CAAC,IAAKA,CAAAA,kBAAN,CAAP,CAAA;EACH,SAFD,MAEO;EACH,UAAA,OAAO,EAAP,CAAA;EACH,SAAA;EACJ,OAND,MAMO;UACH,IAAM7D,aAAa,GAAG,EAAtB,CAAA;;EAEA,QAAA,KAAK,IAAMhX,EAAX,IAAiB,IAAA,CAAKgX,aAAtB,EAAqC;EACjC,UAAA,IACI9a,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqC,IAAK2a,CAAAA,aAA1C,EAAyDhX,EAAzD,CADJ,EAEE;cACE,IAAMvC,IAAI,GAAG,IAAKgE,CAAAA,UAAL,CAAgBoV,WAAhB,CAA4B7W,EAA5B,CAAb,CAAA;;cACA,IAAIvC,IAAI,IAAIP,MAAM,CAAC0B,UAAP,CAAkBnB,IAAlB,CAAZ,EAAqC;gBACjCuZ,aAAa,CAAClZ,IAAd,CAAmBL,IAAnB,CAAA,CAAA;EACH,aAAA;EACJ,WAAA;EACJ,SAAA;;EAED,QAAA,OAAOuZ,aAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,cAAA,CAAsBvZ,IAAtB,EAA2C;EACvC,MAAA,IAAIA,IAAI,CAACuC,EAAL,IAAW,IAAf,EAAqB;UACjB,OAAO,IAAA,CAAKgX,aAAL,CAAmB8D,GAAnB,CAAuBrd,IAAI,CAACuC,EAA5B,CAAP,CAAA;EACH,OAFD,MAEO,IAAI,IAAK6a,CAAAA,kBAAT,EAA6B;EAChC,QAAA,OAAO,KAAKA,kBAAL,CAAwB5X,OAAxB,KAAoCxF,IAAI,CAACwF,OAAhD,CAAA;EACH,OAFM,MAEA;EACH,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAAqB,KAAA,GAAA;QACjB,IAAK+T,CAAAA,aAAL,CAAmB/S,KAAnB,EAAA,CAAA;QACA,IAAK4W,CAAAA,kBAAL,GAA0B,IAA1B,CAAA;EACH,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,mBAAA,CAA2Bpd,IAA3B,EAAsE;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QAAA,IAA/B8C,eAA+B,uEAAb,KAAa,CAAA;;EAClE,MAAA,IAAI9C,IAAI,CAACuC,EAAL,IAAW,IAAf,EAAqB;UACjB,IACI,IAAA,CAAK6a,kBAAL,IACApd,IAAI,CAACwF,OAAL,KAAiB,IAAK4X,CAAAA,kBAAL,CAAwB5X,OAF7C,EAGE;YACE,IAAK4X,CAAAA,kBAAL,GAA0B,IAA1B,CAAA;EACH,SAAA;EACJ,OAPD,MAOO;EACH,QAAA,IAAA,CAAK7D,aAAL,CAAA,QAAA,CAAA,CAA0BvZ,IAAI,CAACuC,EAA/B,CAAA,CAAA;;EAEA,QAAA,IAAIO,eAAJ,EAAqB;YACjB9C,IAAI,CAAC+B,OAAL,CAAa,YAAM;EACf,YAAA,IAAI/B,IAAI,CAACuC,EAAL,IAAW,IAAf,EAAqB;EACjB,cAAA,MAAI,CAACgX,aAAL,CAA0BvZ,QAAAA,CAAAA,CAAAA,IAAI,CAACuC,EAA/B,CAAA,CAAA;EACH,aAAA;;EACD,YAAA,OAAO,IAAP,CAAA;aAJJ,CAAA,CAAA;EAMH,SAAA;EACJ,OAAA;EACJ,KAAA;;;EAED,IAAA,KAAA,EAAA,SAAA,cAAA,CAAsBvC,IAAtB,EAAwC;EACpC,MAAA,IAAIA,IAAI,CAACuC,EAAL,IAAW,IAAf,EAAqB;EACjB,QAAA,IAAA,CAAKgX,aAAL,CAAmB+D,GAAnB,CAAuBtd,IAAI,CAACuC,EAA5B,CAAA,CAAA;EACH,OAFD,MAEO;UACH,IAAK6a,CAAAA,kBAAL,GAA0Bpd,IAA1B,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAAgC,aAAA,GAAA;EAC5B,MAAA,IAAMud,aAAa,GAAG3P,QAAQ,CAAC2P,aAA/B,CAAA;EAEA,MAAA,OAAOtP,OAAO,CACVsP,aAAa,IACTA,aAAa,CAAC7B,OAAd,KAA0B,MAD9B,IAEI,KAAK1X,UAAL,CAAgBwZ,gBAAhB,CAAiCD,aAAjC,CAHM,CAAd,CAAA;EAKH,KAAA;;;;;;ECjHL,IAAaE,WAAb,gBAAA,YAAA;IAKI,SAAYzd,WAAAA,CAAAA,IAAZ,EAAwBgE,UAAxB,EAAkD;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAC9C,IAAA,IAAA,CAAKsQ,IAAL,CAAUtU,IAAV,EAAgBgE,UAAhB,CAAA,CAAA;EACH,GAAA;;EAPL,EAAA,YAAA,CAAA,WAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EASI,SAAYhE,IAAAA,CAAAA,IAAZ,EAAwBgE,UAAxB,EAAwD;QACpD,IAAKhE,CAAAA,IAAL,GAAYA,IAAZ,CAAA;QACA,IAAKgE,CAAAA,UAAL,GAAkBA,UAAlB,CAAA;;EAEA,MAAA,IAAI,CAAChE,IAAI,CAACwF,OAAV,EAAmB;UACf,IAAMA,OAAO,GAAG,IAAA,CAAKxB,UAAL,CAAgBwB,OAAhB,CAAwBlD,GAAxB,CAA4B,CAA5B,CAAhB,CAAA;;EAEA,QAAA,IAAIkD,OAAJ,EAAa;YACTxF,IAAI,CAACwF,OAAL,GAAeA,OAAf,CAAA;EACH,SAAA;EACJ,OAAA;;QAED,IAAIxF,IAAI,CAACwF,OAAT,EAAkB;EACd,QAAA,IAAA,CAAKlB,QAAL,GAAgBC,MAAM,CAACvE,IAAI,CAACwF,OAAN,CAAtB,CAAA;EACH,OAAA;EACJ,KAAA;EAxBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KA0BI,EAAA,SAAA,WAAA,CAAmBjH,QAAnB,EAA+C;EAC3C,MAAA,IAAI,IAAKmf,CAAAA,sBAAL,CAA4Bnf,QAA5B,CAAJ,EAA2C;UACvC,OAAO,IAAIof,cAAJ,CACH,IAAKrZ,CAAAA,QADF,EAEH,IAAA,CAAKN,UAAL,CAAgB2F,cAAhB,EAFG,CAAP,CAAA;EAIH,OALD,MAKO;UACH,OAAO,IAAIiU,aAAJ,CAAkB,IAAK5d,CAAAA,IAAvB,EAA6B,IAAKsE,CAAAA,QAAlC,EAA4C/F,QAA5C,CAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAnCL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAqCI,EAAA,SAAA,MAAA,CAAcsf,YAAd,EAA2C;EAAA,MAAA,IAAA,qBAAA,CAAA;;EACvC,MAAA,IAAMC,GAAG,GAAG,IAAKC,CAAAA,KAAL,EAAZ,CAAA;QAEAD,GAAG,CAACpY,QAAJ,CAAa,iBAAb,CAAA,CAAA;EACAoY,MAAAA,GAAG,CAACxC,IAAJ,CAAS,eAAT,EAA0B,MAA1B,CAAA,CAAA;EAEA,MAAA,IAAM0C,KAAK,GAAG,IAAKC,CAAAA,OAAL,EAAd,CAAA;EACAD,MAAAA,KAAK,CAAC1C,IAAN,CAAW,UAAX,EAAuB,CAAA,qBAAA,GAAA,IAAA,CAAKtX,UAAL,CAAgBU,OAAhB,CAAwB8K,QAA/C,MAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAA2D,IAA3D,CAAA,CAAA;;EAEA,MAAA,IAAIqO,YAAJ,EAAkB;UACdG,KAAK,CAACE,OAAN,CAAc,OAAd,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EAjDL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAmDI,SAAwB,QAAA,GAAA;EACpB,MAAA,IAAMJ,GAAG,GAAG,IAAKC,CAAAA,KAAL,EAAZ,CAAA;QAEAD,GAAG,CAACnX,WAAJ,CAAgB,iBAAhB,CAAA,CAAA;EACAmX,MAAAA,GAAG,CAACxC,IAAJ,CAAS,eAAT,EAA0B,OAA1B,CAAA,CAAA;EAEA,MAAA,IAAM0C,KAAK,GAAG,IAAKC,CAAAA,OAAL,EAAd,CAAA;QACAD,KAAK,CAACG,UAAN,CAAiB,UAAjB,CAAA,CAAA;EAEAH,MAAAA,KAAK,CAACI,IAAN,EAAA,CAAA;EACH,KAAA;EA7DL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EA+DI,SAAuC,KAAA,GAAA;EACnC,MAAA,OAAO,KAAK9Z,QAAL,CAAc9E,QAAd,CAAuB,UAAvB,CAAP,CAAA;EACH,KAAA;EAjEL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAmEI,SAAyC,OAAA,GAAA;QACrC,OAAO,IAAA,CAAK8E,QAAL,CACF9E,QADE,CACO,iBADP,CAEFgU,CAAAA,IAFE,CAEG,mBAFH,CAAP,CAAA;EAGH,KAAA;EAvEL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAyEI,SAAuC,KAAA,GAAA;EACnC,MAAA,OAAO,KAAKlP,QAAZ,CAAA;EACH,KAAA;EA3EL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KA6EI,EAAA,SAAA,sBAAA,CAAiC/F,QAAjC,EAA4D;EACxD,MAAA,OAAOA,QAAQ,KAAKX,QAAQ,CAACO,MAA7B,CAAA;EACH,KAAA;EA/EL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,WAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAkFA,IAAakgB,aAAb,gBAAA,UAAA,YAAA,EAAA;EAAA,EAAA,SAAA,CAAA,aAAA,EAAA,YAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,aAAA,CAAA,CAAA;;EAAA,EAAA,SAAA,aAAA,GAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;;EAAA,IAAA,OAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;EAAA,GAAA;;EAAA,EAAA,YAAA,CAAA,aAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,MAAA;MAAA,KACI,EAAA,SAAA,IAAA,CACIrO,UADJ,EAIQ;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;QAAA,IAFJ5H,KAEI,uEAFI,IAEJ,CAAA;QAAA,IADJkW,cACI,uEADuC,MACvC,CAAA;;EACJ,MAAA,IAAI,IAAKte,CAAAA,IAAL,CAAU+C,OAAd,EAAuB;EACnB,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAK/C,IAAL,CAAU+C,OAAV,GAAoB,IAApB,CAAA;EAEA,MAAA,IAAMwb,OAAO,GAAG,IAAKC,CAAAA,SAAL,EAAhB,CAAA;QACAD,OAAO,CAAC5X,WAAR,CAAoB,eAApB,CAAA,CAAA;QACA4X,OAAO,CAACxS,IAAR,CAAa,EAAb,CAAA,CAAA;EAEA,MAAA,IAAM0S,QAAQ,GAAGF,OAAO,CAACjc,GAAR,CAAY,CAAZ,CAAjB,CAAA;;EAEA,MAAA,IAAImc,QAAJ,EAAc;EACV,QAAA,IAAMC,IAAI,GACN,IAAK1a,CAAAA,UAAL,CAAgB2a,QAAhB,CAAyBrS,iBAAzB,CAA2C0C,SAA3C,CAAqD,IAArD,CADJ,CAAA;UAGAyP,QAAQ,CAAClR,WAAT,CAAqBmR,IAArB,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,IAAME,MAAM,GAAG,SAATA,MAAS,GAAY;EACvB,QAAA,IAAMd,GAAG,GAAG,KAAI,CAACC,KAAL,EAAZ,CAAA;;UACAD,GAAG,CAACnX,WAAJ,CAAgB,eAAhB,CAAA,CAAA;;EAEA,QAAA,IAAMqX,KAAK,GAAG,KAAI,CAACC,OAAL,EAAd,CAAA;;EACAD,QAAAA,KAAK,CAAC1C,IAAN,CAAW,eAAX,EAA4B,MAA5B,CAAA,CAAA;;EAEA,QAAA,IAAItL,UAAJ,EAAgB;EACZA,UAAAA,UAAU,CAAC,KAAI,CAAChQ,IAAN,CAAV,CAAA;EACH,SAAA;;EAED,QAAA,KAAI,CAACgE,UAAL,CAAgBgF,aAAhB,CAA8B,WAA9B,EAA2C;YACvChJ,IAAI,EAAE,KAAI,CAACA,IAAAA;WADf,CAAA,CAAA;SAXJ,CAAA;;EAgBA,MAAA,IAAIoI,KAAJ,EAAW;EACP,QAAA,IAAA,CAAKyW,KAAL,EAAaC,CAAAA,SAAb,CAAuBR,cAAvB,EAAuCM,MAAvC,CAAA,CAAA;EACH,OAFD,MAEO;UACH,IAAKC,CAAAA,KAAL,GAAaE,IAAb,EAAA,CAAA;UACAH,MAAM,EAAA,CAAA;EACT,OAAA;EACJ,KAAA;EA/CL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAiDI,SAGQ,KAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QAAA,IAFJxW,KAEI,uEAFI,IAEJ,CAAA;QAAA,IADJkW,cACI,uEADuC,MACvC,CAAA;;EACJ,MAAA,IAAI,CAAC,IAAA,CAAKte,IAAL,CAAU+C,OAAf,EAAwB;EACpB,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAK/C,IAAL,CAAU+C,OAAV,GAAoB,KAApB,CAAA;EAEA,MAAA,IAAMwb,OAAO,GAAG,IAAKC,CAAAA,SAAL,EAAhB,CAAA;QACAD,OAAO,CAAC7Y,QAAR,CAAiB,eAAjB,CAAA,CAAA;QACA6Y,OAAO,CAACxS,IAAR,CAAa,EAAb,CAAA,CAAA;EAEA,MAAA,IAAM0S,QAAQ,GAAGF,OAAO,CAACjc,GAAR,CAAY,CAAZ,CAAjB,CAAA;;EAEA,MAAA,IAAImc,QAAJ,EAAc;EACV,QAAA,IAAMC,IAAI,GACN,IAAK1a,CAAAA,UAAL,CAAgB2a,QAAhB,CAAyBlS,iBAAzB,CAA2CuC,SAA3C,CAAqD,IAArD,CADJ,CAAA;UAGAyP,QAAQ,CAAClR,WAAT,CAAqBmR,IAArB,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,IAAMM,OAAO,GAAG,SAAVA,OAAU,GAAY;EACxB,QAAA,IAAMlB,GAAG,GAAG,MAAI,CAACC,KAAL,EAAZ,CAAA;;UACAD,GAAG,CAACpY,QAAJ,CAAa,eAAb,CAAA,CAAA;;EAEA,QAAA,IAAMsY,KAAK,GAAG,MAAI,CAACC,OAAL,EAAd,CAAA;;EACAD,QAAAA,KAAK,CAAC1C,IAAN,CAAW,eAAX,EAA4B,OAA5B,CAAA,CAAA;;EAEA,QAAA,MAAI,CAACtX,UAAL,CAAgBgF,aAAhB,CAA8B,YAA9B,EAA4C;YACxChJ,IAAI,EAAE,MAAI,CAACA,IAAAA;WADf,CAAA,CAAA;SAPJ,CAAA;;EAYA,MAAA,IAAIoI,KAAJ,EAAW;EACP,QAAA,IAAA,CAAKyW,KAAL,EAAaI,CAAAA,OAAb,CAAqBX,cAArB,EAAqCU,OAArC,CAAA,CAAA;EACH,OAFD,MAEO;UACH,IAAKH,CAAAA,KAAL,GAAaK,IAAb,EAAA,CAAA;UACAF,OAAO,EAAA,CAAA;EACV,OAAA;EACJ,KAAA;EA1FL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KA4FI,EAAA,SAAA,sBAAA,CAAiCzgB,QAAjC,EAA4D;QACxD,OAAO,CAAC,IAAKyB,CAAAA,IAAL,CAAU+C,OAAX,IAAsBxE,QAAQ,KAAKX,QAAQ,CAACO,MAAnD,CAAA;EACH,KAAA;EA9FL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAgGI,SAA4B,SAAA,GAAA;QACxB,OAAO,IAAA,CAAKmG,QAAL,CACF9E,QADE,CACO,iBADP,CAEFgU,CAAAA,IAFE,CAEG,kBAFH,CAAP,CAAA;EAGH,KAAA;EApGL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,aAAA,CAAA;EAAA,CAAA,CAAmCiK,WAAnC,CAAA,CAAA;EAuGA,IAAaE,cAAb,gBAAA,YAAA;IAGI,SAAYrZ,cAAAA,CAAAA,QAAZ,EAAuC4W,UAAvC,EAA2D;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EACvD,IAAA,IAAMiE,IAAI,GAAG7a,QAAQ,CAAC9E,QAAT,CAAkB,iBAAlB,CAAb,CAAA;EAEA,IAAA,IAAM4f,OAAO,GAAG9a,QAAQ,CAACmF,KAAT,MAAoB,CAApC,CAAA;EACA,IAAA,IAAMA,KAAK,GAAG4B,IAAI,CAAC0R,GAAL,CAASqC,OAAO,GAAGlE,UAAV,GAAuB,CAAhC,EAAmC,CAAnC,CAAd,CAAA;EAEA,IAAA,IAAMJ,QAAQ,GAAGqE,IAAI,CAACE,WAAL,MAAsB,CAAvC,CAAA;MACA,IAAM3V,MAAM,GAAG2B,IAAI,CAAC0R,GAAL,CAASjC,QAAQ,GAAG,CAApB,EAAuB,CAAvB,CAAf,CAAA;EAEA,IAAA,IAAA,CAAKwE,KAAL,GAAa/a,MAAM,CAAC,qCAAD,CAAnB,CAAA;EACA4a,IAAAA,IAAI,CAAClT,MAAL,CAAY,IAAA,CAAKqT,KAAjB,CAAA,CAAA;MAEA,IAAKA,CAAAA,KAAL,CAAWtT,GAAX,CAAe;EAAEvC,MAAAA,KAAK,EAALA,KAAF;EAASC,MAAAA,MAAM,EAANA,MAAAA;OAAxB,CAAA,CAAA;EACH,GAAA;;EAhBL,EAAA,YAAA,CAAA,cAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAkBI,SAAsB,MAAA,GAAA;QAClB,IAAK4V,CAAAA,KAAL,CAAW/X,MAAX,EAAA,CAAA;EACH,KAAA;EApBL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,cAAA,CAAA;EAAA,CAAA,EAAA,CAAA;;MAuBMqW;EAKF,EAAA,SAAA,aAAA,CAAY5d,IAAZ,EAAwBsE,QAAxB,EAAmD/F,QAAnD,EAAqE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MACjE,IAAK+F,CAAAA,QAAL,GAAgBA,QAAhB,CAAA;MAEA,IAAKtE,CAAAA,IAAL,GAAYA,IAAZ,CAAA;MACA,IAAKuf,CAAAA,MAAL,GAAchb,MAAM,CAApB,kKAAA,CAAA,CAAA;;EAKA,IAAA,IAAIhG,QAAQ,KAAKX,QAAQ,CAACK,KAA1B,EAAiC;EAC7B,MAAA,IAAA,CAAKuhB,SAAL,EAAA,CAAA;EACH,KAFD,MAEO,IAAIjhB,QAAQ,KAAKX,QAAQ,CAACG,MAA1B,EAAkC;EACrC,MAAA,IAAA,CAAK0hB,UAAL,EAAA,CAAA;EACH,KAFM,MAEA,IAAIlhB,QAAQ,KAAKX,QAAQ,CAACO,MAA1B,EAAkC;EACrC,MAAA,IAAI6B,IAAI,CAAC+F,QAAL,MAAmB/F,IAAI,CAAC+C,OAA5B,EAAqC;EACjC,QAAA,IAAA,CAAK2c,oBAAL,EAAA,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAA,CAAKC,UAAL,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACJ,GAAA;;;;aAED,SAAsB,MAAA,GAAA;QAClB,IAAKJ,CAAAA,MAAL,CAAYhY,MAAZ,EAAA,CAAA;EACH,KAAA;;;aAED,SAAyB,SAAA,GAAA;EACrB,MAAA,IAAA,CAAKjD,QAAL,CAActG,KAAd,CAAoB,KAAKuhB,MAAzB,CAAA,CAAA;EACH,KAAA;;;aAED,SAA0B,UAAA,GAAA;EACtB,MAAA,IAAA,CAAKjb,QAAL,CAAcxG,MAAd,CAAqB,KAAKyhB,MAA1B,CAAA,CAAA;EACH,KAAA;;;aAED,SAAoC,oBAAA,GAAA;QAChC,IAAMK,YAAY,GAAG,IAAK5f,CAAAA,IAAL,CAAUR,QAAV,CAAmB,CAAnB,CAAA,CAAsBgG,OAA3C,CAAA;;EAEA,MAAA,IAAIoa,YAAJ,EAAkB;EACdrb,QAAAA,MAAM,CAACqb,YAAD,CAAN,CAAqB9hB,MAArB,CAA4B,KAAKyhB,MAAjC,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;;;aAED,SAA0B,UAAA,GAAA;EACtB,MAAA,IAAA,CAAKjb,QAAL,CAActG,KAAd,CAAoB,KAAKuhB,MAAzB,CAAA,CAAA;EACA,MAAA,IAAA,CAAKA,MAAL,CAAY7Z,QAAZ,CAAqB,eAArB,CAAA,CAAA;EACH,KAAA;;;;;;EC9OL,IAAMma,mBAAmB,GAAG,yBAA5B,CAAA;EACA,IAAMC,cAAc,GAAG,sBAAvB,CAAA;AAEA,MAAaC,YAAb,gBAAA,UAAA,YAAA,EAAA;EAAA,EAAA,SAAA,CAAA,YAAA,EAAA,YAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,YAAA,CAAA,CAAA;;EAAA,EAAA,SAAA,YAAA,GAAA;EAAA,IAAA,IAAA,KAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;EAAA,IAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;EAAA,MAAA,IAAA,CAAA,IAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;EAAA,KAAA;;EAAA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;MAAA,eA42B0B,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,aAAA,EAAA,UAClB9N,CADkB,EAEX;QACP,IAAM+N,WAAW,GAAG,KAAKC,CAAAA,cAAL,CAAoBhO,CAAC,CAACzN,MAAtB,CAApB,CAAA;;EAEA,MAAA,IAAIwb,WAAJ,EAAiB;EACb,QAAA,IAAIA,WAAW,CAACE,IAAZ,KAAqB,QAAzB,EAAmC;YAC/B,KAAKC,CAAAA,MAAL,CAAYH,WAAW,CAAChgB,IAAxB,EAA8B,KAAA,CAAK0E,OAAL,CAAa0D,KAA3C,CAAA,CAAA;;EAEA6J,UAAAA,CAAC,CAAC2D,cAAF,EAAA,CAAA;EACA3D,UAAAA,CAAC,CAACmO,eAAF,EAAA,CAAA;EACH,SALD,MAKO,IAAIJ,WAAW,CAACE,IAAZ,KAAqB,OAAzB,EAAkC;EACrC,UAAA,IAAMlgB,MAAI,GAAGggB,WAAW,CAAChgB,IAAzB,CAAA;;EACA,UAAA,IAAM+I,KAAK,GAAG,KAAA,CAAKC,aAAL,CAAmB,YAAnB,EAAiC;EAC3ChJ,YAAAA,IAAI,EAAJA,MAD2C;EAE3CqgB,YAAAA,WAAW,EAAEpO,CAAAA;EAF8B,WAAjC,CAAd,CAAA;;EAKA,UAAA,IAAI,CAAClJ,KAAK,CAACQ,kBAAN,EAAL,EAAiC;cAC7B,KAAK+W,CAAAA,YAAL,CAAkBtgB,MAAlB,CAAA,CAAA;EACH,WAAA;EACJ,SAAA;EACJ,OAAA;OAl4BT,CAAA,CAAA;;MAAA,eAq4B6B,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,gBAAA,EAAA,UACrBiS,CADqB,EAEd;QACP,IAAM+N,WAAW,GAAG,KAAKC,CAAAA,cAAL,CAAoBhO,CAAC,CAACzN,MAAtB,CAApB,CAAA;;EAEA,MAAA,IAAI,CAAAwb,WAAW,KAAX,IAAA,IAAAA,WAAW,KAAA,KAAA,CAAX,GAAAA,KAAAA,CAAAA,GAAAA,WAAW,CAAEE,IAAb,MAAsB,OAA1B,EAAmC;UAC/B,KAAKlX,CAAAA,aAAL,CAAmB,eAAnB,EAAoC;YAChChJ,IAAI,EAAEggB,WAAW,CAAChgB,IADc;EAEhCqgB,UAAAA,WAAW,EAAEpO,CAAAA;WAFjB,CAAA,CAAA;EAIH,OAAA;OA/4BT,CAAA,CAAA;;MAAA,eAy7BgC,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,mBAAA,EAAA,UACxBA,CADwB,EAEvB;EACD,MAAA,IAAMkN,IAAI,GAAG5a,MAAM,CAAC0N,CAAC,CAACzN,MAAH,CAAN,CAAiB+b,OAAjB,CAAyB,gCAAzB,CAAb,CAAA;;QACA,IAAIpB,IAAI,CAAChf,MAAT,EAAiB;EACb,QAAA,IAAMH,MAAI,GAAG,KAAA,CAAKwgB,OAAL,CAAarB,IAAb,CAAb,CAAA;;EACA,QAAA,IAAInf,MAAJ,EAAU;EACNiS,UAAAA,CAAC,CAAC2D,cAAF,EAAA,CAAA;EACA3D,UAAAA,CAAC,CAACmO,eAAF,EAAA,CAAA;;YAEA,KAAKpX,CAAAA,aAAL,CAAmB,kBAAnB,EAAuC;EACnChJ,YAAAA,IAAI,EAAJA,MADmC;EAEnCqgB,YAAAA,WAAW,EAAEpO,CAAAA;aAFjB,CAAA,CAAA;;EAIA,UAAA,OAAO,KAAP,CAAA;EACH,SAAA;EACJ,OAAA;;EAED,MAAA,OAAO,IAAP,CAAA;OA38BR,CAAA,CAAA;;EAAA,IAAA,OAAA,KAAA,CAAA;EAAA,GAAA;;EAAA,EAAA,YAAA,CAAA,YAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAoDI,EAAA,SAAA,MAAA,CAAcjS,IAAd,EAAqE;QAAA,IAA3CygB,UAA2C,uEAAd,IAAc,CAAA;;QACjE,IAAI,CAACzgB,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;QAED,IAAMzX,KAAK,GAAGqY,UAAH,KAAGA,IAAAA,IAAAA,UAAH,KAAGA,KAAAA,CAAAA,GAAAA,UAAH,GAAiB,IAAA,CAAK/b,OAAL,CAAa0D,KAAzC,CAAA;;QAEA,IAAIpI,IAAI,CAAC+C,OAAT,EAAkB;EACd,QAAA,IAAA,CAAKsQ,SAAL,CAAerT,IAAf,EAAqBoI,KAArB,CAAA,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAA,CAAKgL,QAAL,CAAcpT,IAAd,EAAoBoI,KAApB,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAO,KAAK5C,OAAZ,CAAA;EACH,KAAA;EAlEL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAoEI,SAAuB,OAAA,GAAA;EACnB,MAAA,OAAO,KAAK5F,IAAZ,CAAA;EACH,KAAA;EAtEL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAwEI,SACII,UAAAA,CAAAA,IADJ,EAEI2gB,YAFJ,EAGU;EACN,MAAA,IAAA,CAAKL,YAAL,CAAkBtgB,IAAlB,EAAwB2gB,YAAxB,CAAA,CAAA;EACA,MAAA,OAAO,KAAKnb,OAAZ,CAAA;EACH,KAAA;EA9EL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAgFI,SAAuC,eAAA,GAAA;EACnC,MAAA,OAAO,IAAK0I,CAAAA,iBAAL,CAAuBkE,eAAvB,EAAP,CAAA;EACH,KAAA;EAlFL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAoFI,SAAwB,MAAA,GAAA;QACpB,OAAOP,IAAI,CAAC4F,SAAL,CAAe,KAAK7X,IAAL,CAAUghB,OAAV,EAAf,CAAP,CAAA;EACH,KAAA;EAtFL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAwFI,SAAgB7hB,QAAAA,CAAAA,IAAhB,EAAkCgR,UAAlC,EAAmE;EAC/D,MAAA,IAAA,CAAK8Q,UAAL,CAAgB9hB,IAAhB,EAAsBgR,UAAtB,CAAA,CAAA;EACA,MAAA,OAAO,KAAKvK,OAAZ,CAAA;EACH,KAAA;EAED;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAzGA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EA2GI,yBACIsb,MADJ,EAEIC,MAFJ,EAGIC,MAHJ,EAIU;EACN,MAAA,IAAI,OAAOF,MAAP,KAAkB,QAAtB,EAAgC;EAC5B;EACA,QAAA,IAAA,CAAKG,iBAAL,CACIH,MADJ,EAEIC,MAFJ,EAGIC,MAHJ,KAAA,IAAA,IAGIA,MAHJ,KAAA,KAAA,CAAA,GAGIA,MAHJ,GAGc,IAHd,CAAA,CAAA;EAKH,OAPD,MAOO;EACH;EACA,QAAA,IAAA,CAAKC,iBAAL,CACI,IADJ,EAEIH,MAFJ,EAGIC,MAHJ,CAAA,CAAA;EAKH,OAAA;;EAED,MAAA,OAAO,KAAKvb,OAAZ,CAAA;EACH,KAAA;EAjIL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAmII,EAAA,SAAA,MAAA,CAAcwK,UAAd,EAAgE;EAC5D,MAAA,IAAA,CAAKiR,iBAAL,CAAuB,IAAvB,EAA6B,IAA7B,EAAmCjR,UAAnC,CAAA,CAAA;EACA,MAAA,OAAO,KAAKxK,OAAZ,CAAA;EACH,KAAA;EAtIL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAwII,SAAyB,OAAA,GAAA;QACrB,IAAKsD,CAAAA,gBAAL,CAAsB,IAAtB,CAAA,CAAA;;EACA,MAAA,OAAO,KAAKtD,OAAZ,CAAA;EACH,KAAA;EA3IL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KA6II,EAAA,SAAA,WAAA,CAAmBnD,MAAnB,EAAgD;EAC5C,MAAA,OAAO,KAAKzC,IAAL,CAAUwZ,WAAV,CAAsB/W,MAAtB,CAAP,CAAA;EACH,KAAA;EA/IL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAiJI,EAAA,SAAA,aAAA,CAAqB7D,IAArB,EAAgD;EAC5C,MAAA,OAAO,KAAKoB,IAAL,CAAUshB,aAAV,CAAwB1iB,IAAxB,CAAP,CAAA;EACH,KAAA;EAnJL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KAqJI,EAAA,SAAA,sBAAA,CAA8BA,IAA9B,EAAkD;EAC9C,MAAA,OAAO,KAAKoB,IAAL,CAAUuhB,sBAAV,CAAiC3iB,IAAjC,CAAP,CAAA;EACH,KAAA;EAvJL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAyJI,SAA0BqB,kBAAAA,CAAAA,GAA1B,EAAuCC,KAAvC,EAA+D;QAC3D,OAAO,IAAA,CAAKF,IAAL,CAAUwhB,kBAAV,CAA6BvhB,GAA7B,EAAkCC,KAAlC,CAAP,CAAA;EACH,KAAA;EA3JL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;MAAA,KA6JI,EAAA,SAAA,oBAAA,CACI0F,OADJ,EAEe;EACX,MAAA,OAAO,KAAKgb,OAAL,CAAajc,MAAM,CAACiB,OAAD,CAAnB,CAAP,CAAA;EACH,KAAA;EAjKL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;MAAA,KAmKI,EAAA,SAAA,iBAAA,CAAyB5E,QAAzB,EAAyE;EACrE,MAAA,OAAO,KAAKhB,IAAL,CAAUiC,iBAAV,CAA4BjB,QAA5B,CAAP,CAAA;EACH,KAAA;EArKL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAuKI,kBACIZ,IADJ,EAEI8gB,MAFJ,EAGIC,MAHJ,EAIU;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACN,IAAI,CAAC/gB,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,IAAMwB,WAAW,GAAG,SAAdA,WAAc,GAA0C;EAC1D,QAAA,IAAIrR,UAAJ,CAAA;EACA,QAAA,IAAI5H,KAAJ,CAAA;;EAEA,QAAA,IAAI+D,UAAU,CAAC2U,MAAD,CAAd,EAAwB;EACpB9Q,UAAAA,UAAU,GAAG8Q,MAAb,CAAA;EACA1Y,UAAAA,KAAK,GAAG,IAAR,CAAA;EACH,SAHD,MAGO;EACHA,UAAAA,KAAK,GAAG0Y,MAAR,CAAA;EACA9Q,UAAAA,UAAU,GAAG+Q,MAAb,CAAA;EACH,SAAA;;UAED,IAAI3Y,KAAK,IAAI,IAAb,EAAmB;EAAA,UAAA,IAAA,oBAAA,CAAA;;EACfA,UAAAA,KAAK,2BAAG,MAAI,CAAC1D,OAAL,CAAa0D,KAAhB,uEAAyB,KAA9B,CAAA;EACH,SAAA;;EAED,QAAA,OAAO,CAACA,KAAD,EAAQ4H,UAAR,CAAP,CAAA;SAhBJ,CAAA;;EAmBA,MAAA,IAAA,YAAA,GAA4BqR,WAAW,EAAvC;EAAA,UAAA,aAAA,GAAA,cAAA,CAAA,YAAA,EAAA,CAAA,CAAA;EAAA,UAAOjZ,KAAP,GAAA,aAAA,CAAA,CAAA,CAAA;EAAA,UAAc4H,UAAd,GAAA,aAAA,CAAA,CAAA,CAAA,CAAA;;EAEA,MAAA,IAAA,CAAK7H,SAAL,CAAenI,IAAf,EAAqBoI,KAArB,EAA4B4H,UAA5B,CAAA,CAAA;;EACA,MAAA,OAAO,KAAKxK,OAAZ,CAAA;EACH,KAAA;EAvML,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAyMI,SAAiBxF,SAAAA,CAAAA,IAAjB,EAA6BygB,UAA7B,EAAkE;QAC9D,IAAI,CAACzgB,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;QAED,IAAMzX,KAAK,GAAGqY,UAAH,KAAGA,IAAAA,IAAAA,UAAH,KAAGA,KAAAA,CAAAA,GAAAA,UAAH,GAAiB,IAAA,CAAK/b,OAAL,CAAa0D,KAAzC,CAAA;;EAEA,MAAA,IAAIpI,IAAI,CAAC+F,QAAL,MAAmB/F,IAAI,CAACX,aAA5B,EAA2C;EACvC,QAAA,IAAIgf,aAAJ,CAAkBre,IAAlB,EAAwB,IAAxB,CAAA,CAA8BshB,KAA9B,CACIlZ,KADJ,EAEI,IAAK1D,CAAAA,OAAL,CAAa4Z,cAFjB,CAAA,CAAA;EAKA,QAAA,IAAA,CAAKzE,SAAL,EAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAO,KAAKrU,OAAZ,CAAA;EACH,KAAA;EA1NL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EA4NI,SAA6B,UAAA,GAAA;QACzB,OAAO,IAAA,CAAKyW,UAAL,CAAgB9X,UAAvB,CAAA;EACH,KAAA;EA9NL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAgOI,SAAiC,eAAA,GAAA;QAC7B,IAAK8X,CAAAA,UAAL,CAAgB/W,OAAhB,EAAA,CAAA;EACA,MAAA,OAAO,KAAKM,OAAZ,CAAA;EACH,KAAA;EAnOL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAqOI,SACI+b,YAAAA,CAAAA,WADJ,EAEIC,YAFJ,EAGe;EACX,MAAA,IAAMC,OAAO,GAAGD,YAAY,CAACE,QAAb,CAAsBH,WAAtB,CAAhB,CAAA;;EAEA,MAAA,IAAIE,OAAJ,EAAa;EACT,QAAA,IAAA,CAAK3Y,gBAAL,CAAsB0Y,YAAY,CAAC/hB,MAAnC,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOgiB,OAAP,CAAA;EACH,KAAA;EAhPL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAkPI,SACIF,aAAAA,CAAAA,WADJ,EAEIC,YAFJ,EAGe;QACX,IAAI,CAACA,YAAL,EAAmB;EACf,QAAA,MAAMd,KAAK,CAACZ,cAAc,GAAG,cAAlB,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,IAAM2B,OAAO,GAAGD,YAAY,CAACG,SAAb,CAAuBJ,WAAvB,CAAhB,CAAA;;EAEA,MAAA,IAAIE,OAAJ,EAAa;EACT,QAAA,IAAA,CAAK3Y,gBAAL,CAAsB0Y,YAAY,CAAC/hB,MAAnC,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOgiB,OAAP,CAAA;EACH,KAAA;EAjQL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAmQI,SACIF,aAAAA,CAAAA,WADJ,EAEIC,YAFJ,EAGe;QACX,IAAI,CAACA,YAAL,EAAmB;EACf,QAAA,MAAMd,KAAK,CAACZ,cAAc,GAAG,cAAlB,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,IAAM2B,OAAO,GAAGD,YAAY,CAACI,SAAb,CAAuBL,WAAvB,CAAhB,CAAA;;EAEA,MAAA,IAAIE,OAAJ,EAAa;EACT,QAAA,IAAA,CAAK3Y,gBAAL,CAAsB2Y,OAAO,CAAChiB,MAA9B,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAOgiB,OAAP,CAAA;EACH,KAAA;EAlRL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAoRI,EAAA,SAAA,UAAA,CAAkBzhB,IAAlB,EAAsC;QAClC,IAAI,CAACA,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,IAAI,CAAC7f,IAAI,CAACP,MAAV,EAAkB;UACd,MAAMihB,KAAK,CAAC,oBAAD,CAAX,CAAA;EACH,OAAA;;QAED,IAAKxS,CAAAA,iBAAL,CAAuBsL,mBAAvB,CAA2CxZ,IAA3C,EAAiD,IAAjD,EATkC;;EAWlC,MAAA,IAAMP,MAAM,GAAGO,IAAI,CAACP,MAApB,CAAA;EACAO,MAAAA,IAAI,CAACuH,MAAL,EAAA,CAAA;;QACA,IAAKuB,CAAAA,gBAAL,CAAsBrJ,MAAtB,CAAA,CAAA;;EAEA,MAAA,OAAO,KAAK+F,OAAZ,CAAA;EACH,KAAA;EApSL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAsSI,SAAkB+b,UAAAA,CAAAA,WAAlB,EAAyCM,eAAzC,EAAuE;EACnE,MAAA,IAAM9R,UAAU,GAAG8R,eAAe,IAAI,KAAKjiB,IAA3C,CAAA;EAEA,MAAA,IAAMI,IAAI,GAAG+P,UAAU,CAAC9D,MAAX,CAAkBsV,WAAlB,CAAb,CAAA;;QAEA,IAAKzY,CAAAA,gBAAL,CAAsBiH,UAAtB,CAAA,CAAA;;EAEA,MAAA,OAAO/P,IAAP,CAAA;EACH,KAAA;EA9SL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAgTI,SAAmBuhB,WAAAA,CAAAA,WAAnB,EAA0CM,eAA1C,EAAwE;QACpE,IAAM9R,UAAU,GAAG8R,eAAH,KAAA,IAAA,IAAGA,eAAH,KAAGA,KAAAA,CAAAA,GAAAA,eAAH,GAAsB,IAAA,CAAKjiB,IAA3C,CAAA;EAEA,MAAA,IAAMI,IAAI,GAAG+P,UAAU,CAAC+R,OAAX,CAAmBP,WAAnB,CAAb,CAAA;;QAEA,IAAKzY,CAAAA,gBAAL,CAAsBiH,UAAtB,CAAA,CAAA;;EAEA,MAAA,OAAO/P,IAAP,CAAA;EACH,KAAA;EAxTL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EA0TI,SAAkBA,UAAAA,CAAAA,IAAlB,EAA8BjB,IAA9B,EAAsD;QAClD,IAAI,CAACiB,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,IAAMkC,WAAW,GACb,OAAA,CAAOhjB,IAAP,CAAA,KAAgB,QAAhB,IAA4BA,IAAI,CAACwD,EAAjC,IAAuCxD,IAAI,CAACwD,EAAL,KAAYvC,IAAI,CAACuC,EAD5D,CAAA;;EAGA,MAAA,IAAIwf,WAAJ,EAAiB;EACb,QAAA,IAAA,CAAKniB,IAAL,CAAU6C,mBAAV,CAA8BzC,IAA9B,CAAA,CAAA;EACH,OAAA;;QAEDA,IAAI,CAACT,OAAL,CAAaR,IAAb,CAAA,CAAA;;EAEA,MAAA,IAAIgjB,WAAJ,EAAiB;EACb,QAAA,IAAA,CAAKniB,IAAL,CAAUiE,cAAV,CAAyB7D,IAAzB,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,IACI,QAAOjB,IAAP,CAAA,KAAgB,QAAhB,IACAA,IAAI,CAAC,UAAD,CADJ,IAEAA,IAAI,CAAC,UAAD,CAAJ,YAA4BC,KAHhC,EAIE;EACEgB,QAAAA,IAAI,CAACD,cAAL,EAAA,CAAA;;EAEA,QAAA,IAAIhB,IAAI,CAACS,QAAL,CAAcW,MAAlB,EAA0B;EACtBH,UAAAA,IAAI,CAACI,YAAL,CAAkBrB,IAAI,CAACS,QAAvB,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;;QAED,IAAKsJ,CAAAA,gBAAL,CAAsB9I,IAAtB,CAAA,CAAA;;EAEA,MAAA,OAAO,KAAKwF,OAAZ,CAAA;EACH,KAAA;EA3VL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,yBAAA;MAAA,KA6VI,EAAA,SAAA,uBAAA,CAAgCwc,OAAhC,EAAwD;EACpD,MAAA,IAAM7P,YAAY,GAAG,IAAKC,CAAAA,eAAL,EAArB,CAAA;;QAEA,IAAI,CAACD,YAAL,EAAmB;EACf,QAAA,OAAO,KAAP,CAAA;EACH,OAFD,MAEO;UACH,OAAO6P,OAAO,KAAK7P,YAAZ,IAA4B6P,OAAO,CAAC7gB,UAAR,CAAmBgR,YAAnB,CAAnC,CAAA;EACH,OAAA;EACJ,KAAA;EArWL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAuWI,kBAAgBnS,IAAhB,EAA4BkB,UAA5B,EAA8C3C,QAA9C,EAAwE;QACpE,IAAI,CAACyB,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;QAED,IAAI,CAAC3e,UAAL,EAAiB;EACb,QAAA,MAAMwf,KAAK,CAACZ,cAAc,GAAG,YAAlB,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,IAAMmC,aAAa,GAAGpjB,WAAW,CAACN,QAAD,CAAjC,CAAA;;QAEA,IAAI0jB,aAAa,KAAKjd,SAAtB,EAAiC;UAC7B,IAAKpF,CAAAA,IAAL,CAAUgJ,QAAV,CAAmB5I,IAAnB,EAAyBkB,UAAzB,EAAqC+gB,aAArC,CAAA,CAAA;;UACA,IAAKnZ,CAAAA,gBAAL,CAAsB,IAAtB,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAO,KAAKtD,OAAZ,CAAA;EACH,KAAA;EAxXL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EA0XI,SAAgD,mBAAA,GAAA;EAC5C,MAAA,OAAO,IAAK0c,CAAAA,gBAAL,CAAsBlJ,mBAAtB,EAAP,CAAA;EACH,KAAA;EA5XL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EA8XI,SAAsBhZ,cAAAA,CAAAA,IAAtB,EAAkC6d,YAAlC,EAAkE;QAC9D,IAAI,CAAC7d,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAK3R,iBAAL,CAAuBoL,cAAvB,CAAsCtZ,IAAtC,CAAA,CAAA;;EAEA,MAAA,IAAA,CAAK8G,sBAAL,CAA4B9G,IAA5B,CAAA,CAAkCmiB,MAAlC,CACItE,YAAY,KAAK7Y,SAAjB,GAA6B,IAA7B,GAAoC6Y,YADxC,CAAA,CAAA;;EAIA,MAAA,IAAA,CAAKhE,SAAL,EAAA,CAAA;EAEA,MAAA,OAAO,KAAKrU,OAAZ,CAAA;EACH,KAAA;EA5YL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EA8YI,SAAkC,gBAAA,GAAA;EAC9B,MAAA,OAAO,IAAK0I,CAAAA,iBAAL,CAAuBqK,gBAAvB,EAAP,CAAA;EACH,KAAA;EAhZL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAkZI,EAAA,SAAA,cAAA,CAAsBvY,IAAtB,EAA2C;QACvC,IAAI,CAACA,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,OAAO,KAAK3R,iBAAL,CAAuBC,cAAvB,CAAsCnO,IAAtC,CAAP,CAAA;EACH,KAAA;EAxZL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KA0ZI,EAAA,SAAA,mBAAA,CAA2BA,IAA3B,EAA+C;QAC3C,IAAI,CAACA,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAK3R,iBAAL,CAAuBsL,mBAAvB,CAA2CxZ,IAA3C,CAAA,CAAA;;EAEA,MAAA,IAAA,CAAK8G,sBAAL,CAA4B9G,IAA5B,CAAA,CAAkCoiB,QAAlC,EAAA,CAAA;;EACA,MAAA,IAAA,CAAKvI,SAAL,EAAA,CAAA;EAEA,MAAA,OAAO,KAAKrU,OAAZ,CAAA;EACH,KAAA;EAraL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAuaI,EAAA,SAAA,YAAA,CAAoBxF,IAApB,EAAwC;QACpC,IAAI,CAACA,IAAL,EAAW;UACP,MAAM0gB,KAAK,CAACb,mBAAD,CAAX,CAAA;EACH,OAAA;;QAED,IAAMwC,UAAU,GAAG9d,MAAM,CAACvE,IAAI,CAACwF,OAAN,CAAN,CAAqBL,MAArB,EAAnB,CAAA;QACA,IAAMmd,OAAO,GAAGD,UAAU,GAAGA,UAAU,CAAChd,GAAd,GAAoB,CAA9C,CAAA;EAEA,MAAA,IAAMkd,UAAU,GAAG,IAAA,CAAKtS,GAAL,CAAS9K,MAAT,EAAnB,CAAA;QACA,IAAMsV,OAAO,GAAG8H,UAAU,GAAGA,UAAU,CAACld,GAAd,GAAoB,CAA9C,CAAA;EAEA,MAAA,IAAMA,GAAG,GAAGid,OAAO,GAAG7H,OAAtB,CAAA;EAEA,MAAA,IAAA,CAAKnH,aAAL,CAAmBkP,SAAnB,CAA6Bnd,GAA7B,CAAA,CAAA;EAEA,MAAA,OAAO,KAAKG,OAAZ,CAAA;EACH,KAAA;EAvbL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAybI,SAAqC,QAAA,GAAA;EACjC,MAAA,OAAO,IAAK0c,CAAAA,gBAAL,CAAsBxK,QAAtB,EAAP,CAAA;EACH,KAAA;EA3bL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KA6bI,EAAA,SAAA,QAAA,CAAgBF,KAAhB,EAA2C;EACvC,MAAA,IAAA,CAAK0K,gBAAL,CAAsBO,eAAtB,CAAsCjL,KAAtC,CAAA,CAAA;;QACA,IAAK1O,CAAAA,gBAAL,CAAsB,IAAtB,CAAA,CAAA;;EAEA,MAAA,OAAO,KAAKtD,OAAZ,CAAA;EACH,KAAA;EAlcL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAocI,SAAiBkd,SAAAA,CAAAA,MAAjB,EAAiC5iB,KAAjC,EAAyD;EACpD,MAAA,IAAA,CAAK4E,OAAN,CAAqDge,MAArD,CAAA,GAA+D5iB,KAA/D,CAAA;EACA,MAAA,OAAO,KAAK0F,OAAZ,CAAA;EACH,KAAA;EAvcL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAycI,SAA0B,QAAA,GAAA;EACtB,MAAA,IAAM2M,YAAY,GAAG,IAAKC,CAAAA,eAAL,EAArB,CAAA;;EACA,MAAA,IAAID,YAAJ,EAAkB;EACd,QAAA,IAAA,CAAKwQ,UAAL,CAAgBpQ,QAAhB,CAAyBJ,YAAzB,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAO,KAAK3M,OAAZ,CAAA;EACH,KAAA;EAhdL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAkdI,SAAwB,MAAA,GAAA;EACpB,MAAA,IAAM2M,YAAY,GAAG,IAAKC,CAAAA,eAAL,EAArB,CAAA;;EACA,MAAA,IAAID,YAAJ,EAAkB;EACd,QAAA,IAAA,CAAKwQ,UAAL,CAAgBlQ,MAAhB,CAAuBN,YAAvB,CAAA,CAAA;EACH,OAAA;;EAED,MAAA,OAAO,KAAK3M,OAAZ,CAAA;EACH,KAAA;EAzdL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EA2dI,SAA4B,UAAA,GAAA;EACxB,MAAA,OAAOod,OAAP,CAAA;EACH,KAAA;EA7dL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EA+dI,SACIC,aAAAA,CAAAA,SADJ,EAEIC,MAFJ,EAGgB;QACZ,IAAM/Z,KAAK,GAAGxE,MAAM,CAACwe,KAAP,CAAaF,SAAb,EAAwBC,MAAxB,CAAd,CAAA;EACA,MAAA,IAAA,CAAKtd,OAAL,CAAa0Y,OAAb,CAAqBnV,KAArB,CAAA,CAAA;EACA,MAAA,OAAOA,KAAP,CAAA;EACH,KAAA;EAteL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAweI,EAAA,SAAA,SAAA,CACI/I,IADJ,EAIQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QAAA,IAFJoI,KAEI,uEAFI,IAEJ,CAAA;EAAA,MAAA,IADJ4H,UACI,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,SAAA,CAAA;;QACJ,IAAMgT,UAAU,GAAG,SAAbA,UAAa,CACfC,KADe,EAEfC,MAFe,EAGfC,WAHe,EAIR;UACP,IAAMC,aAAa,GAAG,IAAI/E,aAAJ,CAAkB4E,KAAlB,EAAyB,MAAzB,CAAtB,CAAA;UACAG,aAAa,CAACC,IAAd,CACIF,WADJ,EAEID,MAFJ,EAGI,MAAI,CAACxe,OAAL,CAAa4Z,cAHjB,CAAA,CAAA;SANJ,CAAA;;EAaA,MAAA,IAAIte,IAAI,CAAC+F,QAAL,MAAmB/F,IAAI,CAACX,aAA5B,EAA2C;UACvC,IAAIW,IAAI,CAACV,cAAT,EAAyB;EACrB,UAAA,IAAA,CAAKgkB,kBAAL,CAAwBtjB,IAAxB,EAA8BoI,KAA9B,EAAqC4H,UAArC,CAAA,CAAA;EACH,SAFD,MAEO;EACH,UAAA,IAAIvQ,MAAM,GAAGO,IAAI,CAACP,MAAlB,CAAA;;EAEA,UAAA,OAAOA,MAAP,EAAe;EACX;cACA,IAAIA,MAAM,CAACA,MAAX,EAAmB;EACfujB,cAAAA,UAAU,CAACvjB,MAAD,EAAS,KAAT,EAAgB,IAAhB,CAAV,CAAA;EACH,aAAA;;cACDA,MAAM,GAAGA,MAAM,CAACA,MAAhB,CAAA;EACH,WAAA;;EAEDujB,UAAAA,UAAU,CAAChjB,IAAD,EAAOoI,KAAP,EAAc4H,UAAd,CAAV,CAAA;EACA,UAAA,IAAA,CAAK6J,SAAL,EAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EAED;EACJ;EACA;EACA;;EAjhBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;MAAA,KAkhBI,EAAA,SAAA,gBAAA,CAAwBlN,QAAxB,EAAqD;EACjD,MAAA,IAAMkR,YAAY,GAAG,IAAA,CAAK3P,iBAAL,CAAuBwF,aAAvB,EAArB,CAAA;QACA,IAAM6P,UAAU,GAAG5W,QAAQ,GACrB,IAAA,CAAK6W,uBAAL,CAA6B7W,QAA7B,CADqB,GAErB,KAFN,CAAA;EAIA,MAAA,IAAA,CAAKgS,QAAL,CAAc8E,MAAd,CAAqB9W,QAArB,CAAA,CAAA;;EAEA,MAAA,IAAI4W,UAAJ,EAAgB;UACZ,IAAKG,CAAAA,iBAAL,CAAuB7F,YAAvB,CAAA,CAAA;EACH,OAAA;;QAED,IAAK7U,CAAAA,aAAL,CAAmB,cAAnB,CAAA,CAAA;EACH,KAAA;EA/hBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KAiiBI,EAAA,SAAA,sBAAA,CAA8BhJ,IAA9B,EAAuD;EACnD,MAAA,IAAIA,IAAI,CAAC+F,QAAL,EAAJ,EAAqB;EACjB,QAAA,OAAO,IAAIsY,aAAJ,CAAkBre,IAAlB,EAAwB,IAAxB,CAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,IAAIyd,WAAJ,CAAgBzd,IAAhB,EAAsB,IAAtB,CAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAviBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KAyiBI,EAAA,SAAA,eAAA,CAAuBsE,QAAvB,EAA0E;EACtE,MAAA,IAAMtE,IAAI,GAAG,IAAA,CAAKwgB,OAAL,CAAalc,QAAb,CAAb,CAAA;;EACA,MAAA,IAAItE,IAAJ,EAAU;EACN,QAAA,OAAO,IAAK8G,CAAAA,sBAAL,CAA4B9G,IAA5B,CAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAhjBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;MAAA,KAkjBI,EAAA,SAAA,gBAAA,CAAwBwF,OAAxB,EAAuD;QACnD,IAAMxF,IAAI,GAAG,IAAKwgB,CAAAA,OAAL,CAAajc,MAAM,CAACiB,OAAD,CAAnB,CAAb,CAAA;QAEA,OAAOxF,IAAI,IAAI,IAAR,IAAgBA,IAAI,CAACJ,IAAL,KAAc,IAAA,CAAKA,IAA1C,CAAA;EACH,KAAA;EAtjBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAwjBI,SAAgC,cAAA,GAAA;EAC5B,MAAA,OAAO,IAAK0T,CAAAA,aAAL,CAAmBqQ,aAAnB,EAAP,CAAA;EACH,KAAA;EA1jBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EA4jBI,SAAoB,IAAA,GAAA;EAChB,MAAA,IAAA,CAAA,eAAA,CAAA,YAAA,CAAA,SAAA,CAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;;QAEA,IAAKne,CAAAA,OAAL,GAAe,IAAA,CAAKyK,GAApB,CAAA;QACA,IAAKkK,CAAAA,aAAL,GAAqB,KAArB,CAAA;EAEA,MAAA,IAAA,CAAKzV,OAAL,CAAagJ,GAAb,GAAmB,IAAA,CAAKkW,YAAL,EAAnB,CAAA;;EAEA,MAAA,IAAI,KAAKlf,OAAL,CAAagI,UAAb,IAA2B,IAA/B,EAAqC;EACjC,QAAA,IAAA,CAAKhI,OAAL,CAAagI,UAAb,GAA0B,IAAA,CAAKmX,oBAAL,EAA1B,CAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAKlF,QAAL,GAAgB,IAAItS,gBAAJ,CAAqB,IAArB,CAAhB,CAAA;EACA,MAAA,IAAA,CAAKyX,UAAL,GAAkB,IAAIjU,UAAJ,CAAe,IAAf,CAAlB,CAAA;EACA,MAAA,IAAA,CAAKqS,gBAAL,GAAwB,IAAI3K,gBAAJ,CAAqB,IAArB,CAAxB,CAAA;EACA,MAAA,IAAA,CAAKrJ,iBAAL,GAAyB,IAAIgP,iBAAJ,CAAsB,IAAtB,CAAzB,CAAA;EACA,MAAA,IAAA,CAAKjB,UAAL,GAAkB,IAAIlY,kBAAJ,CAAuB,IAAvB,CAAlB,CAAA;EACA,MAAA,IAAA,CAAKuP,aAAL,GAAqB,IAAI4G,aAAJ,CAAkB,IAAlB,CAArB,CAAA;EACA,MAAA,IAAA,CAAKyI,UAAL,GAAkB,IAAI3Q,UAAJ,CAAe,IAAf,CAAlB,CAAA;EAEA,MAAA,IAAA,CAAK+R,QAAL,EAAA,CAAA;EAEA,MAAA,IAAA,CAAKve,OAAL,CAAauN,EAAb,CAAgB,OAAhB,EAAyB,KAAKiR,WAA9B,CAAA,CAAA;EACA,MAAA,IAAA,CAAKxe,OAAL,CAAauN,EAAb,CAAgB,UAAhB,EAA4B,KAAKkR,cAAjC,CAAA,CAAA;;EAEA,MAAA,IAAI,IAAKvf,CAAAA,OAAL,CAAawf,cAAjB,EAAiC;EAC7B,QAAA,IAAA,CAAK1e,OAAL,CAAauN,EAAb,CAAgB,aAAhB,EAA+B,KAAKoR,iBAApC,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EAxlBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EA0lBI,SAAsB,MAAA,GAAA;QAClB,IAAK3e,CAAAA,OAAL,CAAaqD,KAAb,EAAA,CAAA;QACA,IAAKrD,CAAAA,OAAL,CAAayN,GAAb,EAAA,CAAA;QAEA,IAAK0P,CAAAA,UAAL,CAAgBvN,MAAhB,EAAA,CAAA;QAEA,IAAKxV,CAAAA,IAAL,GAAY,IAAIX,IAAJ,CAAS,EAAT,EAAa,IAAb,CAAZ,CAAA;;EAEA,MAAA,IAAA,CAAA,eAAA,CAAA,YAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;EACH,KAAA;EAnmBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAqmBI,EAAA,SAAA,YAAA,CAAuBoF,YAAvB,EAAmE;EAC/D,MAAA,IAAI,IAAKK,CAAAA,OAAL,CAAaiJ,WAAjB,EAA8B;EAC1B,QAAA,OAAO,KAAKsO,UAAL,CAAgBtF,YAAhB,CAA6BtS,YAA7B,CAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;EACJ,KAAA;EA3mBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KA6mBI,EAAA,SAAA,UAAA,CAAqBA,YAArB,EAA0D;EACtD,MAAA,IAAI,IAAKK,CAAAA,OAAL,CAAaiJ,WAAjB,EAA8B;EAC1B,QAAA,OAAO,KAAKsO,UAAL,CAAgB5E,UAAhB,CAA2BhT,YAA3B,CAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAnnBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAqnBI,EAAA,SAAA,SAAA,CAAoBA,YAApB,EAAyD;EACrD,MAAA,IAAI,IAAKK,CAAAA,OAAL,CAAaiJ,WAAjB,EAA8B;UAC1B,IAAM3M,MAAM,GAAG,IAAKib,CAAAA,UAAL,CAAgB7E,SAAhB,CAA0B/S,YAA1B,CAAf,CAAA;UAEA,IAAKiP,CAAAA,aAAL,CAAmB8Q,cAAnB,EAAA,CAAA;EACA,QAAA,OAAOpjB,MAAP,CAAA;EACH,OALD,MAKO;EACH,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;EACJ,KAAA;EA9nBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAgoBI,EAAA,SAAA,SAAA,CAAoBqD,YAApB,EAAyD;EACrD,MAAA,IAAI,IAAKK,CAAAA,OAAL,CAAaiJ,WAAjB,EAA8B;EAC1B,QAAA,OAAO,KAAKsO,UAAL,CAAgB3E,SAAhB,CAA0BjT,YAA1B,CAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAtoBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAwoBI,SAAkC,aAAA,GAAA;EAAA,MAAA,IAAA,qBAAA,CAAA;;EAC9B,MAAA,OAAA,CAAA,qBAAA,GAAO,IAAKK,CAAAA,OAAL,CAAa2f,aAApB,yEAAqC,CAArC,CAAA;EACH,KAAA;EA1oBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EA4oBI,SAAyB,QAAA,GAAA;EACrB,MAAA,IAAI,IAAK3f,CAAAA,OAAL,CAAa3F,IAAjB,EAAuB;EACnB,QAAA,IAAA,CAAK8hB,UAAL,CAAgB,IAAA,CAAKnc,OAAL,CAAa3F,IAA7B,EAAmC,IAAnC,CAAA,CAAA;EACH,OAFD,MAEO;EACH,QAAA,IAAMulB,OAAO,GAAG,IAAA,CAAKC,cAAL,CAAoB,IAApB,CAAhB,CAAA;;EAEA,QAAA,IAAID,OAAJ,EAAa;EACT,UAAA,IAAA,CAAKrD,iBAAL,CAAuB,IAAvB,EAA6B,IAA7B,EAAmC,IAAnC,CAAA,CAAA;EACH,SAFD,MAEO;EACH,UAAA,IAAA,CAAKJ,UAAL,CAAgB,EAAhB,EAAoB,IAApB,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EAxpBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KA0pBI,EAAA,SAAA,cAAA,CAAuB7gB,IAAvB,EAAsE;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EAClE,MAAA,IAAMskB,OAAO,GACT,IAAK5f,CAAAA,OAAL,CAAa4f,OAAb,IAAyB,IAAA,CAAK9e,OAAL,CAAazG,IAAb,CAAkB,KAAlB,CAD7B,CAAA;;EAGA,MAAA,IAAMylB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACvT,GAAD,EAAsC;EAC3D,QAAA,IAAMnB,OAA4B,GAAG;EAAEmB,UAAAA,GAAG,EAAHA,GAAAA;WAAvC,CAAA;UAEAwT,cAAc,CAAC3U,OAAD,CAAd,CAAA;EAEA,QAAA,OAAOA,OAAP,CAAA;SALJ,CAAA;;EAQA,MAAA,IAAM2U,cAAc,GAAG,SAAjBA,cAAiB,CAAC3U,OAAD,EAAwC;EAC3D,QAAA,IAAI9P,IAAJ,KAAIA,IAAAA,IAAAA,IAAJ,eAAIA,IAAI,CAAEuC,EAAV,EAAc;EACV;EACA,UAAA,IAAMxD,IAAI,GAAG;cAAEiB,IAAI,EAAEA,IAAI,CAACuC,EAAAA;aAA1B,CAAA;EACAuN,UAAAA,OAAO,CAAC,MAAD,CAAP,GAAkB/Q,IAAlB,CAAA;EACH,SAJD,MAIO;EACH;EACA,UAAA,IAAM2lB,cAAc,GAAG,MAAI,CAACC,qBAAL,EAAvB,CAAA;;EACA,UAAA,IAAID,cAAJ,EAAoB;EAChB,YAAA,IAAM3lB,KAAI,GAAG;EAAE0Z,cAAAA,aAAa,EAAEiM,cAAAA;eAA9B,CAAA;EACA5U,YAAAA,OAAO,CAAC,MAAD,CAAP,GAAkB/Q,KAAlB,CAAA;EACH,WAAA;EACJ,SAAA;SAZL,CAAA;;EAeA,MAAA,IAAI,OAAOulB,OAAP,KAAmB,UAAvB,EAAmC;UAC/B,OAAOA,OAAO,CAACtkB,IAAD,CAAd,CAAA;EACH,OAFD,MAEO,IAAI,OAAOskB,OAAP,KAAmB,QAAvB,EAAiC;UACpC,OAAOE,gBAAgB,CAACF,OAAD,CAAvB,CAAA;SADG,MAEA,IAAIA,OAAO,IAAI,QAAOA,OAAP,CAAA,KAAmB,QAAlC,EAA4C;UAC/CG,cAAc,CAACH,OAAD,CAAd,CAAA;EACA,QAAA,OAAOA,OAAP,CAAA;EACH,OAHM,MAGA;EACH,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;EACJ,KAAA;EA/rBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,uBAAA;EAAA,IAAA,KAAA,EAisBI,SAA+C,qBAAA,GAAA;EAC3C,MAAA,IAAI,IAAK5f,CAAAA,OAAL,CAAamV,SAAjB,EAA4B;EACxB,QAAA,OAAO,IAAKqI,CAAAA,gBAAL,CAAsByC,qBAAtB,EAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAvsBL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAysBI,EAAA,SAAA,QAAA,CAAiB5lB,IAAjB,EAAyC;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACrC,MAAA,IAAM6lB,MAAM,GAAG,SAATA,MAAS,GAAY;EACvB,QAAA,IAAI,CAAC,MAAI,CAACzK,aAAV,EAAyB;YACrB,MAAI,CAACA,aAAL,GAAqB,IAArB,CAAA;;YACA,MAAI,CAACnR,aAAL,CAAmB,WAAnB,CAAA,CAAA;EACH,SAAA;SAJL,CAAA;;EAOA,MAAA,IAAI,CAAC,IAAA,CAAKtE,OAAL,CAAatF,SAAlB,EAA6B;EACzB,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAA,CAAKQ,IAAL,GAAY,IAAI,IAAK8E,CAAAA,OAAL,CAAatF,SAAjB,CACR,IADQ,EAER,IAFQ,EAGR,IAAA,CAAKsF,OAAL,CAAatF,SAHL,CAAZ,CAAA;QAMA,IAAK8O,CAAAA,iBAAL,CAAuB1H,KAAvB,EAAA,CAAA;EAEA,MAAA,IAAA,CAAK5G,IAAL,CAAUQ,YAAV,CAAuBrB,IAAvB,CAAA,CAAA;EAEA,MAAA,IAAM2Z,gBAAgB,GAAG,IAAK+J,CAAAA,eAAL,EAAzB,CAAA;;QAEA,IAAK3Z,CAAAA,gBAAL,CAAsB,IAAtB,CAAA,CAAA;;QAEA,IAAI,CAAC4P,gBAAL,EAAuB;UACnBkM,MAAM,EAAA,CAAA;EACT,OAFD,MAEO;EACH;UACA,IAAKC,CAAAA,uBAAL,CAA6BD,MAA7B,CAAA,CAAA;EACH,OAAA;EACJ,KAzuBL;EA4uBI;;EA5uBJ,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EA6uBI,SAAmC,eAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EAC/B,MAAA,IAAME,YAAY,GAAG,SAAfA,YAAe,GAAiB;EAClC;EACA,QAAA,IAAI,CAAC,MAAI,CAACpgB,OAAL,CAAamV,SAAlB,EAA6B;EACzB,UAAA,OAAO,CAAC,KAAD,EAAQ,KAAR,CAAP,CAAA;EACH,SAFD,MAEO;EACH,UAAA,IAAMrC,KAAK,GAAG,MAAI,CAAC0K,gBAAL,CAAsBlJ,mBAAtB,EAAd,CAAA;;YAEA,IAAI,CAACxB,KAAL,EAAY;EACR,YAAA,OAAO,CAAC,KAAD,EAAQ,KAAR,CAAP,CAAA;EACH,WAFD,MAEO;cACH,IAAMkB,iBAAgB,GAClB,MAAI,CAACwJ,gBAAL,CAAsBO,eAAtB,CAAsCjL,KAAtC,CADJ,CADG;;;EAKH,YAAA,OAAO,CAAC,IAAD,EAAOkB,iBAAP,CAAP,CAAA;EACH,WAAA;EACJ,SAAA;SAhBL,CAAA;;EAmBA,MAAA,IAAMqM,aAAa,GAAG,SAAhBA,aAAgB,GAAe;EACjC;EACA,QAAA,IAAI,MAAI,CAACrgB,OAAL,CAAasgB,QAAb,KAA0B,KAA9B,EAAqC;EACjC,UAAA,OAAO,KAAP,CAAA;EACH,SAAA;;EAED,QAAA,IAAMC,QAAQ,GAAG,MAAI,CAACC,mBAAL,EAAjB,CAAA;;UACA,IAAIxM,gBAAgB,GAAG,KAAvB,CAAA;;UAEA,MAAI,CAAC9Y,IAAL,CAAUmC,OAAV,CAAkB,UAAC/B,IAAD,EAAac,KAAb,EAA+B;YAC7C,IAAId,IAAI,CAACV,cAAT,EAAyB;EACrBoZ,YAAAA,gBAAgB,GAAG,IAAnB,CAAA;EACA,YAAA,OAAO,KAAP,CAAA;EACH,WAHD,MAGO,IAAI,CAAC1Y,IAAI,CAACW,WAAL,EAAL,EAAyB;EAC5B,YAAA,OAAO,KAAP,CAAA;EACH,WAFM,MAEA;cACHX,IAAI,CAAC+C,OAAL,GAAe,IAAf,CAAA;cACA,OAAOjC,KAAK,KAAKmkB,QAAjB,CAAA;EACH,WAAA;WATL,CAAA,CAAA;;EAYA,QAAA,OAAOvM,gBAAP,CAAA;SArBJ,CAAA;;EAwBA,MAAA,IAAA,aAAA,GAAqCoM,YAAY,EAAjD;EAAA,UAAA,cAAA,GAAA,cAAA,CAAA,aAAA,EAAA,CAAA,CAAA;EAAA,UAAKK,UAAL,GAAA,cAAA,CAAA,CAAA,CAAA;YAAiBzM,gBAAjB,qBA5C+B;;;QA8C/B,IAAI,CAACyM,UAAL,EAAiB;UACbzM,gBAAgB,GAAGqM,aAAa,EAAhC,CAAA;EACH,OAAA;;EAED,MAAA,OAAOrM,gBAAP,CAAA;EACH,KAhyBL;EAmyBI;;EAnyBJ,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,yBAAA;MAAA,KAoyBI,EAAA,SAAA,uBAAA,CAAgCI,UAAhC,EAA8D;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EAC1D,MAAA,IAAMgM,YAAY,GAAG,SAAfA,YAAe,GAAe;EAChC,QAAA,IAAI,CAAC,MAAI,CAACpgB,OAAL,CAAamV,SAAlB,EAA6B;EACzB,UAAA,OAAO,KAAP,CAAA;EACH,SAFD,MAEO;EACH,UAAA,IAAMrC,KAAK,GAAG,MAAI,CAAC0K,gBAAL,CAAsBlJ,mBAAtB,EAAd,CAAA;;YAEA,IAAI,CAACxB,KAAL,EAAY;EACR,YAAA,OAAO,KAAP,CAAA;EACH,WAFD,MAEO;EACH,YAAA,MAAI,CAAC0K,gBAAL,CAAsB2C,uBAAtB,CACIrN,KADJ,EAEIsB,UAFJ,CAAA,CAAA;;EAKA,YAAA,OAAO,IAAP,CAAA;EACH,WAAA;EACJ,SAAA;SAhBL,CAAA;;EAmBA,MAAA,IAAMiM,aAAa,GAAG,SAAhBA,aAAgB,GAAY;EAC9B,QAAA,IAAME,QAAQ,GAAG,MAAI,CAACC,mBAAL,EAAjB,CAAA;;UACA,IAAIxL,YAAY,GAAG,CAAnB,CAAA;;EAEA,QAAA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAAC5Z,IAAD,EAAsB;EAC1C0Z,UAAAA,YAAY,IAAI,CAAhB,CAAA;;EACA,UAAA,MAAI,CAACvR,SAAL,CAAenI,IAAf,EAAqB,KAArB,EAA4B,YAAM;EAC9B0Z,YAAAA,YAAY,IAAI,CAAhB,CAAA;cACAtB,SAAS,EAAA,CAAA;aAFb,CAAA,CAAA;WAFJ,CAAA;;EAQA,QAAA,IAAMA,SAAS,GAAG,SAAZA,SAAY,GAAY;YAC1B,MAAI,CAACxY,IAAL,CAAUmC,OAAV,CAAkB,UAAC/B,IAAD,EAAac,KAAb,EAA+B;cAC7C,IAAId,IAAI,CAACV,cAAT,EAAyB;EACrB,cAAA,IAAI,CAACU,IAAI,CAAC2P,UAAV,EAAsB;kBAClBiK,eAAe,CAAC5Z,IAAD,CAAf,CAAA;EACH,eAAA;;EAED,cAAA,OAAO,KAAP,CAAA;EACH,aAND,MAMO;EACH,cAAA,MAAI,CAACmI,SAAL,CAAenI,IAAf,EAAqB,KAArB,EAA4B,IAA5B,CAAA,CAAA;;gBAEA,OAAOc,KAAK,KAAKmkB,QAAjB,CAAA;EACH,aAAA;aAXL,CAAA,CAAA;;YAcA,IAAIvL,YAAY,KAAK,CAArB,EAAwB;cACpBZ,UAAU,EAAA,CAAA;EACb,WAAA;WAjBL,CAAA;;UAoBAV,SAAS,EAAA,CAAA;SAhCb,CAAA;;QAmCA,IAAI,CAAC0M,YAAY,EAAjB,EAAqB;UACjBC,aAAa,EAAA,CAAA;EAChB,OAAA;EACJ,KAAA;EA91BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EAg2BI,SAAsC,mBAAA,GAAA;EAClC,MAAA,IAAI,KAAKrgB,OAAL,CAAasgB,QAAb,KAA0B,IAA9B,EAAoC;EAChC,QAAA,OAAO,CAAC,CAAR,CAAA;SADJ,MAEO,IAAI,OAAO,IAAA,CAAKtgB,OAAL,CAAasgB,QAApB,KAAiC,QAArC,EAA+C;UAClD,OAAO,IAAA,CAAKtgB,OAAL,CAAasgB,QAApB,CAAA;SADG,MAEA,IAAI,OAAO,IAAA,CAAKtgB,OAAL,CAAasgB,QAApB,KAAiC,QAArC,EAA+C;UAClD,OAAOI,QAAQ,CAAC,IAAK1gB,CAAAA,OAAL,CAAasgB,QAAd,EAAwB,EAAxB,CAAf,CAAA;EACH,OAFM,MAEA;EACH,QAAA,OAAO,CAAP,CAAA;EACH,OAAA;EACJ,KAAA;EA12BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAk5BI,EAAA,SAAA,cAAA,CAAuBxf,OAAvB,EAAiE;EAC7D,MAAA,IAAM6f,OAAO,GAAG9gB,MAAM,CAACiB,OAAD,CAAtB,CAAA;EAEA,MAAA,IAAM+Y,OAAO,GAAG8G,OAAO,CAAC9E,OAAR,CAAgB,iBAAhB,CAAhB,CAAA;;QAEA,IAAIhC,OAAO,CAACpe,MAAZ,EAAoB;EAChB,QAAA,IAAMH,MAAI,GAAG,IAAA,CAAKwgB,OAAL,CAAajC,OAAb,CAAb,CAAA;;EAEA,QAAA,IAAIve,MAAJ,EAAU;YACN,OAAO;EACHkgB,YAAAA,IAAI,EAAE,QADH;EAEHlgB,YAAAA,IAAI,EAAJA,MAAAA;aAFJ,CAAA;EAIH,SAAA;EACJ,OATD,MASO;EACH,QAAA,IAAMiQ,GAAG,GAAGoV,OAAO,CAAC9E,OAAR,CAAgB,iBAAhB,CAAZ,CAAA;;UACA,IAAItQ,GAAG,CAAC9P,MAAR,EAAgB;EACZ,UAAA,IAAMH,MAAI,GAAG,IAAA,CAAKwgB,OAAL,CAAavQ,GAAb,CAAb,CAAA;;EACA,UAAA,IAAIjQ,MAAJ,EAAU;cACN,OAAO;EACHkgB,cAAAA,IAAI,EAAE,OADH;EAEHlgB,cAAAA,IAAI,EAAJA,MAAAA;eAFJ,CAAA;EAIH,WAAA;EACJ,SAAA;EACJ,OAAA;;EAED,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EA96BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAg7BI,EAAA,SAAA,OAAA,CAAgBsE,QAAhB,EAA4D;EACxD,MAAA,IAAMwZ,GAAG,GAAGxZ,QAAQ,CAACic,OAAT,CAAiB,kBAAjB,CAAZ,CAAA;;EACA,MAAA,IAAIzC,GAAG,CAAC3d,MAAJ,KAAe,CAAnB,EAAsB;EAClB,QAAA,OAAO,IAAP,CAAA;EACH,OAFD,MAEO;EACH,QAAA,OAAO2d,GAAG,CAAC/e,IAAJ,CAAS,MAAT,CAAP,CAAA;EACH,OAAA;EACJ,KAAA;EAv7BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EA88BI,SAA0B,SAAA,GAAA;EACtB,MAAA,IAAI,IAAK2F,CAAAA,OAAL,CAAamV,SAAjB,EAA4B;UACxB,IAAKqI,CAAAA,gBAAL,CAAsBrI,SAAtB,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EAl9BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;MAAA,KAo9BI,EAAA,SAAA,iBAAA,CAA0BgE,YAA1B,EAAuD;EACnD,MAAA,IAAM7d,IAAI,GAAG,IAAKoS,CAAAA,eAAL,EAAb,CAAA;;EACA,MAAA,IAAIpS,IAAJ,EAAU;EACN,QAAA,IAAM4E,WAAW,GAAG,IAAA,CAAKkC,sBAAL,CAA4B9G,IAA5B,CAApB,CAAA;;EACA,QAAA,IAAI4E,WAAJ,EAAiB;YACbA,WAAW,CAACud,MAAZ,CAAmBtE,YAAnB,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EA59BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EA89BI,SAAoC,mBAAA,GAAA;EAChC,MAAA,IAAM7d,IAAI,GAAG,IAAKoS,CAAAA,eAAL,EAAb,CAAA;;EACA,MAAA,IAAIpS,IAAJ,EAAU;UACN,IAAKwZ,CAAAA,mBAAL,CAAyBxZ,IAAzB,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EAn+BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;EAAA,IAAA,KAAA,EAq+BI,SAAuC,oBAAA,GAAA;EACnC,MAAA,IAAI,IAAK0E,CAAAA,OAAL,CAAagJ,GAAjB,EAAsB;EAClB;EACA,QAAA,OAAO,UAAP,CAAA;EACH,OAHD,MAGO;EACH;EACA,QAAA,OAAO,UAAP,CAAA;EACH,OAAA;EACJ,KAAA;EA7+BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EA++BI,SAAgC,YAAA,GAAA;EAC5B,MAAA,IAAI,KAAKhJ,OAAL,CAAagJ,GAAb,IAAoB,IAAxB,EAA8B;UAC1B,OAAO,IAAA,CAAKhJ,OAAL,CAAagJ,GAApB,CAAA;EACH,OAFD,MAEO;UACH,IAAM4X,OAAO,GAAG,IAAK9f,CAAAA,OAAL,CAAazG,IAAb,CAAkB,KAAlB,CAAhB,CAAA;;UAEA,IACIumB,OAAO,KAAK,IAAZ,IACAA,OAAO,KAAK,KADZ,IAEAA,OAAO,KAAKtgB,SAHhB,EAIE;EACE,UAAA,OAAO,IAAP,CAAA;EACH,SAND,MAMO;EACH,UAAA,OAAO,KAAP,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EA//BL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAigCI,SACIhF,YAAAA,CAAAA,IADJ,EAEI2gB,YAFJ,EAGQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACJ,MAAA,IAAM9G,SAAS,GAAG,SAAZA,SAAY,GAAY;EAC1B,QAAA,IAAI,MAAI,CAACnV,OAAL,CAAamV,SAAjB,EAA4B;YACxB,MAAI,CAACqI,gBAAL,CAAsBrI,SAAtB,EAAA,CAAA;EACH,SAAA;SAHL,CAAA;;QAMA,IAAI,CAAC7Z,IAAL,EAAW;EACP;EACA,QAAA,IAAA,CAAKulB,mBAAL,EAAA,CAAA;UACA1L,SAAS,EAAA,CAAA;EACT,QAAA,OAAA;EACH,OAAA;;EACD,MAAA,IAAM2L,cAAc,GAAG;EAAE3H,QAAAA,YAAY,EAAE,IAAhB;EAAsB4H,QAAAA,UAAU,EAAE,IAAA;SAAzD,CAAA;;EACA,MAAA,IAAMC,aAAa,GAAQF,cAAAA,CAAAA,cAAAA,CAAAA,EAAAA,EAAAA,cAAR,GAA4B7E,YAAY,IAAI,EAA5C,CAAnB,CAAA;;EAEA,MAAA,IAAMgF,SAAS,GAAG,SAAZA,SAAY,GAAe;EAC7B,QAAA,IAAI,MAAI,CAACjhB,OAAL,CAAakhB,eAAjB,EAAkC;EAC9B,UAAA,OACI,MAAI,CAAClhB,OAAL,CAAamhB,UAAb,KAA4B,IAA5B,IACA,MAAI,CAACnhB,OAAL,CAAakhB,eAAb,CAA6B5lB,IAA7B,CAFJ,CAAA;EAIH,SALD,MAKO;EACH,UAAA,OAAO,MAAI,CAAC0E,OAAL,CAAamhB,UAAb,KAA4B,IAAnC,CAAA;EACH,SAAA;SARL,CAAA;;EAWA,MAAA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAY;EAC5B,QAAA,IAAMrmB,MAAM,GAAGO,IAAI,CAACP,MAApB,CAAA;;UAEA,IAAIA,MAAM,IAAIA,MAAM,CAACA,MAAjB,IAA2B,CAACA,MAAM,CAACsD,OAAvC,EAAgD;EAC5C,UAAA,MAAI,CAACqQ,QAAL,CAAc3T,MAAd,EAAsB,KAAtB,CAAA,CAAA;EACH,SAAA;SALL,CAAA;;QAQA,IAAI,CAACkmB,SAAS,EAAd,EAAkB;EACd,QAAA,OAAA;EACH,OAAA;;EAED,MAAA,IAAI,KAAKzX,iBAAL,CAAuBC,cAAvB,CAAsCnO,IAAtC,CAAJ,EAAiD;UAC7C,IAAI0lB,aAAa,CAACD,UAAlB,EAA8B;EAC1B,UAAA,IAAA,CAAKF,mBAAL,EAAA,CAAA;;YACA,IAAKvc,CAAAA,aAAL,CAAmB,aAAnB,EAAkC;EAC9BhJ,YAAAA,IAAI,EAAE,IADwB;EAE9B+lB,YAAAA,aAAa,EAAE/lB,IAAAA;aAFnB,CAAA,CAAA;EAIH,SAAA;EACJ,OARD,MAQO;EACH,QAAA,IAAMgmB,cAAc,GAAG,IAAK5T,CAAAA,eAAL,MAA0B,IAAjD,CAAA;EACA,QAAA,IAAA,CAAKmT,mBAAL,EAAA,CAAA;EACA,QAAA,IAAA,CAAKjM,cAAL,CAAoBtZ,IAApB,EAA0B0lB,aAAa,CAAC7H,YAAxC,CAAA,CAAA;;UAEA,IAAK7U,CAAAA,aAAL,CAAmB,aAAnB,EAAkC;EAC9BhJ,UAAAA,IAAI,EAAJA,IAD8B;EAE9BimB,UAAAA,eAAe,EAAED,cAAAA;WAFrB,CAAA,CAAA;;UAIAF,WAAW,EAAA,CAAA;EACd,OAAA;;QAEDjM,SAAS,EAAA,CAAA;EACZ,KAAA;EAhkCL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAkkCI,SAAmB9a,UAAAA,CAAAA,IAAnB,EAA4CgR,UAA5C,EAA2E;QACvE,IAAI,CAAChR,IAAL,EAAW;EACP,QAAA,OAAA;EACH,OAFD,MAEO;UACH,IAAKiK,CAAAA,aAAL,CAAmB,gBAAnB,EAAqC;EAAEkd,UAAAA,SAAS,EAAEnnB,IAAAA;WAAlD,CAAA,CAAA;;EAEA,QAAA,IAAIgR,UAAJ,EAAgB;YACZ,IAAKoW,CAAAA,aAAL,CAAmBpW,UAAnB,CAAA,CAAA;EACA,UAAA,IAAA,CAAKqW,WAAL,CAAiBrnB,IAAjB,EAAuBgR,UAAvB,CAAA,CAAA;EACH,SAHD,MAGO;YACH,IAAKsW,CAAAA,QAAL,CAActnB,IAAd,CAAA,CAAA;EACH,SAAA;;UAED,IAAI,IAAA,CAAKoF,UAAL,EAAJ,EAAuB;YACnB,IAAK8X,CAAAA,UAAL,CAAgB/W,OAAhB,EAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EAnlCL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAqlCI,EAAA,SAAA,aAAA,CAAsB6K,UAAtB,EAA8C;QAC1C,IAAMuW,wBAAwB,GAC1B,IAAKpY,CAAAA,iBAAL,CAAuBqY,qBAAvB,CAA6CxW,UAA7C,CADJ,CAAA;;EAD0C,MAAA,IAAA,SAAA,GAAA,0BAAA,CAG1BuW,wBAH0B,CAAA;EAAA,UAAA,KAAA,CAAA;;EAAA,MAAA,IAAA;UAG1C,KAA0C,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAA/BxkB,CAA+B,GAAA,KAAA,CAAA,KAAA,CAAA;EACtC,UAAA,IAAA,CAAKoM,iBAAL,CAAuBsL,mBAAvB,CAA2C1X,CAA3C,CAAA,CAAA;EACH,SAAA;EALyC,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;EAM7C,KAAA;EA3lCL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EA6lCI,SAAoB/C,WAAAA,CAAAA,IAApB,EAAsCgR,UAAtC,EAA8D;QAC1DA,UAAU,CAAC3P,YAAX,CAAwBrB,IAAxB,CAAA,CAAA;QAEAgR,UAAU,CAACzQ,cAAX,GAA4B,KAA5B,CAAA;QACAyQ,UAAU,CAACJ,UAAX,GAAwB,KAAxB,CAAA;;QAEA,IAAK7G,CAAAA,gBAAL,CAAsBiH,UAAtB,CAAA,CAAA;EACH,KAAA;EApmCL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;EAAA,IAAA,KAAA,EAsmCI,2BACIyW,YADJ,EAEIzW,UAFJ,EAGIC,UAHJ,EAIQ;QACJ,IAAMF,OAAO,GAAG0W,YAAY,IAAI,KAAKjC,cAAL,CAAoBxU,UAApB,CAAhC,CAAA;QAEA,IAAK+T,CAAAA,UAAL,CAAgB2C,WAAhB,CAA4B3W,OAA5B,EAAqCC,UAArC,EAAiDC,UAAjD,CAAA,CAAA;EACH,KAAA;EA9mCL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;MAAA,KAgnCI,EAAA,SAAA,kBAAA,CACIhQ,IADJ,EAIQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QAAA,IAFJoI,KAEI,uEAFI,IAEJ,CAAA;EAAA,MAAA,IADJ4H,UACI,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,SAAA,CAAA;QACJhQ,IAAI,CAAC2P,UAAL,GAAkB,IAAlB,CAAA;EAEA,MAAA,IAAA,CAAKsR,iBAAL,CAAuB,IAAvB,EAA6BjhB,IAA7B,EAAmC,YAAM;EACrC,QAAA,MAAI,CAACmI,SAAL,CAAenI,IAAf,EAAqBoI,KAArB,EAA4B4H,UAA5B,CAAA,CAAA;SADJ,CAAA,CAAA;EAGH,KAAA;EA1nCL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,YAAA,CAAA;EAAA,CAAA,CAAkCwF,WAAlC,EAAA;;EAAauK,eAAAA,CAAAA,cACkC,UAAA,EAAA;EACvCzB,EAAAA,cAAc,EAAE,MADuB;EAEvC7Y,EAAAA,UAAU,EAAE,IAF2B;EAGvCuf,EAAAA,QAAQ,EAAE,KAH6B;EAGtB;EACjB/V,EAAAA,UAAU,EAAE,IAJ2B;EAKvC;EACA;EACAvC,EAAAA,UAAU,EAAE1H,SAP2B;EAQvCjG,EAAAA,IAAI,EAAEiG,SARiC;EASvC2M,EAAAA,UAAU,EAAE3M,SAT2B;EAUvCsf,EAAAA,OAAO,EAAEtf,SAV8B;EAWvC2I,EAAAA,WAAW,EAAE,KAX0B;EAYvCmF,EAAAA,eAAe,EAAE,IAZsB;EAavC1T,EAAAA,SAAS,EAAEH,IAb4B;EAcvC6F,EAAAA,SAAS,EAAEE,SAd4B;EAcjB;EACtBqC,EAAAA,WAAW,EAAErC,SAf0B;EAef;EACxB4gB,EAAAA,eAAe,EAAE5gB,SAhBsB;EAiBvCwJ,EAAAA,UAAU,EAAExJ,SAjB2B;EAkBvCqB,EAAAA,UAAU,EAAErB,SAlB2B;EAmBvC4B,EAAAA,UAAU,EAAE5B,SAnB2B;EAoBvCiU,EAAAA,qBAAqB,EAAEjU,SApBgB;EAqBvCL,EAAAA,cAAc,EAAEK,SArBuB;EAsBvC4L,EAAAA,YAAY,EAAE5L,SAtByB;EAuBvC+L,EAAAA,SAAS,EAAE/L,SAvB4B;EAwBvC2S,EAAAA,qBAAqB,EAAE3S,SAxBgB;EAyBvCwH,EAAAA,UAAU,EAAE,UAzB2B;EA0BvCnE,EAAAA,eAAe,EAAE,GA1BsB;EA0BjB;EACtB;EACA;EACAqF,EAAAA,GAAG,EAAE1I,SA7BkC;EA6BvB;EAChB6U,EAAAA,SAAS,EAAE,KA9B4B;EA8BrB;EAClBgM,EAAAA,UAAU,EAAE,IA/B2B;EAgCvCxX,EAAAA,eAAe,EAAE,KAhCsB;EAiCvCjG,EAAAA,KAAK,EAAE,IAjCgC;EAiC1B;EACbic,EAAAA,aAAa,EAAE,GAlCwB;EAkCnB;EACpB7U,EAAAA,QAAQ,EAAE,CAnC6B;EAoCvC0U,EAAAA,cAAc,EAAE,IAAA;EApCuB;;EA4nC/ChQ,YAAY,CAACP,QAAb,CAAsBoM,YAAtB,EAAoC,MAApC,CAAA;;;;;;;;;;;;"}
1
+ {"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.1\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record<string, Position> = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map<NodeId, Node>;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map<NodeId, Node>();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record<string, unknown>[] => {\n return nodes.map((node) => {\n const tmpNode: Record<string, unknown> = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex] || null;\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex] || null;\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren()) {\n return this.children[0] || null;\n } else if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n\n if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n public getNextVisibleNode(): Node | null {\n if (this.hasChildren() && this.is_open) {\n // First child\n return this.children[0] || null;\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (previousSibling.hasChildren()) {\n return previousSibling.getLastChild();\n } else {\n return previousSibling;\n }\n }\n }\n\n public getPreviousVisibleNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n\n if (!lastChild) {\n return null;\n }\n\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild?.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.$element.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery<HTMLElement>): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (!area) {\n return null;\n }\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery<HTMLElement> | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n const child = node.children[i];\n\n if (child) {\n if (i === childrenLength - 1) {\n _iterateNode(child, null);\n } else {\n const nextChild = node.children[i + 1];\n\n if (nextChild) {\n _iterateNode(child, nextChild);\n }\n }\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery<HTMLElement>): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n if (position) {\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n }\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"<span>\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = Text | Element;\n\nexport default class ElementsRenderer {\n public openedIconElement?: IconElement;\n public closedIconElement?: IconElement;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\"\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\"\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n if ($element[0]) {\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1\n );\n }\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node)\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private setTreeItemAriaAttributes(\n element: HTMLElement,\n name: string,\n level: number,\n isSelected: boolean\n ) {\n element.setAttribute(\"aria-label\", name);\n element.setAttribute(\"aria-level\", `${level}`);\n element.setAttribute(\"aria-selected\", getBoolString(isSelected));\n element.setAttribute(\"role\", \"treeitem\");\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"none\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"none\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n if (iconElement) {\n buttonLink.appendChild(iconElement.cloneNode(true));\n }\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n const titleSpan = this.createTitleSpan(\n node.name,\n isSelected,\n true,\n level\n );\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(node.is_open));\n div.appendChild(titleSpan);\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"none\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"none\");\n\n li.appendChild(div);\n\n // title span\n const titleSpan = this.createTitleSpan(\n node.name,\n isSelected,\n false,\n level\n );\n div.appendChild(titleSpan);\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n isSelected: boolean,\n isFolder: boolean,\n level: number\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n this.setTreeItemAriaAttributes(titleSpan, nodeName, level, isSelected);\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(\n value: string | Element\n ): IconElement | undefined {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery<HTMLElement> {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback<any>,\n handleError: JQuery.Ajax.ErrorCallback<any>\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextVisibleNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousVisibleNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextVisibleNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget<unknown> | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget<unknown>;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n } else {\n return undefined;\n }\n };\n};\n\nexport default class SimpleWidget<WidgetOptions> {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery<HTMLElement>;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget<WidgetOptions> extends SimpleWidget<WidgetOptions> {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0] || null;\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record<string, unknown>;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent && this.$scrollParent[0]) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0]?.tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set<NodeId>();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0] || false;\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery<HTMLElement>;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft(),\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n $span.attr(\"aria-selected\", \"true\");\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n $span.attr(\"aria-selected\", \"false\");\n\n $span.trigger(\"blur\");\n }\n\n protected getUl(): JQuery<HTMLElement> {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery<HTMLElement> {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery<HTMLElement> {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration = \"fast\",\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const openedIconElement =\n this.treeWidget.renderer.openedIconElement;\n\n if (openedIconElement) {\n const icon = openedIconElement.cloneNode(true);\n buttonEl.appendChild(icon);\n }\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $titleSpan = this.getSpan();\n $titleSpan.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | undefined = \"fast\",\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const closedIconElement =\n this.treeWidget.renderer.closedIconElement;\n\n if (closedIconElement) {\n const icon = closedIconElement.cloneNode(true);\n buttonEl.appendChild(icon);\n }\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $titleSpan = this.getSpan();\n $titleSpan.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery<Element>;\n\n constructor($element: JQuery<Element>, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('<span class=\"jqtree-border\"></span>');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery<Element>;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery<Element>, position: Position) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `<li class=\"jqtree_common jqtree-ghost\"><span class=\"jqtree_common jqtree-circle\"></span>\n <span class=\"jqtree_common jqtree-line\"></span></li>`,\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0]?.element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget<JQTreeOptions> {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"&#x25bc;\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - ▼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery<HTMLElement>\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record<string, unknown>)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record<string, unknown>\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery<HTMLElement>): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): [boolean, boolean] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery<HTMLElement>);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery<HTMLElement>);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery<HTMLElement>): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"&#x25c0;\";\n } else {\n // triangle to the right\n return \"&#x25ba;\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (data) {\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n\n this._triggerEvent(\"tree.load_data\", {\n tree_data: data,\n parent_node: parentNode,\n });\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["version","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","isNodeRecordWithChildren","data","_typeof","Array","Node","o","arguments","length","undefined","isRoot","nodeClass","_classCallCheck","_defineProperty","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","_createClass","key","value","loadFromData","removeChildren","_iterator","_createForOfIteratorHelper","_step","s","n","done","node","createNode","addChild","err","e","f","push","setParent","addChildAtPosition","index","splice","removeChild","doRemoveChild","getChildIndex","indexOf","hasChildren","isFolder","iterate","callback","_iterate","level","_iterator2","_step2","child","result","moveNode","movedNode","targetNode","isParentOf","getData","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByName","getNodeByCallback","getNodeByNameMustExist","concat","addAfter","nodeInfo","childIndex","addBefore","addParent","newParent","originalParent","_iterator3","_step3","remove","append","prepend","getLevel","getNodeById","nodeId","get","addNodeToIndex","id","set","removeNodeFromIndex","_this","_this$tree","getPreviousSibling","previousIndex","getNextSibling","nextIndex","getNodesByProperty","filter","getNextNode","includeChildren","nextSibling","getNextVisibleNode","is_open","getPreviousNode","previousSibling","getParent","getLastChild","getPreviousVisibleNode","lastChild","initFromData","_this2","addNode","nodeData","addChildren","childrenData","_iterator4","_step4","_this$tree2","_this$tree3","getNodeClass","_this$tree4","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","mouseCapture","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","mouseStart","_this$treeWidget$opti","pageX","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","mouseDrag","move","area","findHoveredArea","canMoveToArea","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","mouseStop","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolder","_openNode","slide","openFolderDelay","openFolderTimer","window","setTimeout","clearTimeout","previousParent","doMove","empty","_refreshElements","event","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","VisibleNodeIterator","_this3","isFirstNode","_iterateNode","nextNode","mustIterateInside","handleFirstNode","handleNode","handleOpenFolder","handleClosedFolder","childrenLength","forEach","_","i","nextChild","handleAfterOpenFolder","_VisibleNodeIterator","_inherits","_super","_createSuper","currentNode","treeBottom","_this4","_assertThisInitialized","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","nodeName","offsetX","offsetY","$tree","text","html","css","isInt","isFunction","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","render","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","mustShowFolder","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","setTreeItemAriaAttributes","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","titleSpan","createTitleSpan","liClasses","join","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","loadFromUrl","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","loadData","parseData","handleError","jqXHR","onLoadFailed","submitRequest","isLoading","onLoading","urlInfoInput","_ajaxSettings$method","url","ajaxSettings","_objectSpread","method","cache","dataType","success","error","toUpperCase","ajax","dataFilter","getParsedData","JSON","parse","parsedData","KeyHandler","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","deinit","off","selectNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","_len","_key","defaults","constructor","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","_SimpleWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","SaveStateHandler","saveState","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","getStateFromStorage","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","getSelectedNodeIds","selectedNodeIds","getSelectedNodes","open_nodes","selected_node","setInitialState","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","setInitialStateOnDemand","cbFinished","doSetInitialStateOnDemand","getNodeIdToBeSelected","onGetStateFromStorage","getItem","nodeIds","selectCount","addToSelection","selectedNodes","removeFromSelection","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ScrollHandler","isInitialized","checkScrolling","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","scrollToY","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","originalTop","scrollParentTop","windowHeight","getScrollLeft","scrollLeft","initScrollParent","_$scrollParent$","getParentWithOverflow","cssAttributes","hasOverFlow","_i","_cssAttributes","attr","overflowValue","parents","setDocumentAsScrollParent","tagName","handleVerticalScrollingWithScrollParent","scrollParent","distanceBottom","offsetHeight","refreshHitAreas","handleVerticalScrollingWithDocument","distanceTop","dndHandler","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","getSelectedNodesUnder","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","select","mustSetFocus","$li","getLi","$span","getSpan","trigger","deselect","removeAttr","getUl","FolderElement","_NodeElement","open","animationSpeed","$button","getButton","buttonEl","renderer","icon","doOpen","$titleSpan","slideDown","show","close","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","_this$node$children$","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","_MouseWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","getTree","optionsParam","toJson","doLoadData","loadDataFromUrl","param1","param2","param3","doLoadDataFromUrl","reload","getNodeByHtmlElement","parseParams","_this2$options$slide","_parseParams","_parseParams2","_slicedToArray","addNodeAfter","newNodeInfo","existingNode","newNode","addNodeBefore","addParentNode","removeNode","appendNode","parentNodeParam","prependNode","updateNode","idIsChanged","isSelectedNodeInSubtree","subtree","positionIndex","saveStateHandler","nodeOffset","nodeTop","treeOffset","setState","setOption","option","keyHandler","getVersion","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","loadFolderOnDemand","mustSelect","selectCurrentNode","_get","_getPrototypeOf","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","_this$options$startDn","startDndDelay","dataUrl","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","initTree","_this5","doInit","_this6","restoreState","autoOpenNodes","autoOpen","maxLevel","getAutoOpenMaxLevel","_restoreState","_restoreState2","isRestored","_this7","parseInt","$target","deselectCurrentNode","dataRtl","_this8","defaultOptions","mustToggle","selectOptions","canSelect","onCanSelectNode","selectable","openParents","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","tree_data","parent_node","selectedNodesUnderParent","urlInfoParam","_this9"],"mappings":"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"}