{"version":3,"file":"static/js/nm.charts.3733157071e20d6d.js","sources":["webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/accessors.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/array.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/constant.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/cluster.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/stratify.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/tree.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/binary.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/enclose.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/index.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/siblings.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/partition.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/dice.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/index.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/round.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/slice.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/util/PoweredByUtil.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/draw/BaseRenderer.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/util/ModelUtil.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/util/DiUtil.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/util/LabelUtil.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/RenderUtil.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/draw/BpmnRenderUtil.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/SvgTransformUtil.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/draw/BpmnRenderer.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/Text.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/draw/TextRenderer.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/draw/PathMap.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/i18n/translate/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/i18n/translate/translate.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/layout/LayoutUtil.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/ModelUtil.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/import/Util.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/import/BpmnImporter.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/Event.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/Mouse.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/interaction-events/InteractionEvents.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/Elements.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/outline/Outline.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/selection/Selection.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/selection/SelectionVisuals.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/selection/SelectionBehavior.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/Platform.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/IdGenerator.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/overlays/Overlays.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/overlays/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/change-support/ChangeSupport.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/command/CommandInterceptor.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/root-elements/RootElementsBehavior.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/EscapeUtil.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/util/DrilldownUtil.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/features/drilldown/DrilldownBreadcrumbs.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/features/drilldown/DrilldownCentering.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/features/drilldown/SubprocessCompatibility.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/features/drilldown/DrilldownOverlayBehavior.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/draw/DefaultRenderer.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/core/Canvas.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/Collections.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/core/ElementRegistry.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/model/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/core/ElementFactory.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/core/EventBus.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/core/GraphicsFactory.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/util/GraphicsUtil.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/core/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/draw/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/draw/Styles.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/Diagram.js","webpack://kuika-sample-react-app/../../node_modules/moddle/dist/index.esm.js","webpack://kuika-sample-react-app/../../node_modules/moddle-xml/dist/index.esm.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-moddle/dist/index.esm.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/import/BpmnTreeWalker.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/util/CompatibilityUtil.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/BaseViewer.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/import/Importer.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/Viewer.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/core/index.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/draw/index.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/import/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/selection/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/interaction-events/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/outline/index.js","webpack://kuika-sample-react-app/../../node_modules/bpmn-js/lib/features/drilldown/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/change-support/index.js","webpack://kuika-sample-react-app/../../node_modules/diagram-js/lib/features/root-elements/index.js","webpack://kuika-sample-react-app/../../node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js","webpack://kuika-sample-react-app/../../node_modules/chartjs-plugin-doughnutlabel-v3/dist/chartjs-plugin-doughnutlabel.esm.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/linear.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/quad.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/cubic.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/poly.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/sin.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/math.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/exp.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/circle.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/bounce.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/back.js","webpack://kuika-sample-react-app/../../node_modules/d3-ease/src/elastic.js","webpack://kuika-sample-react-app/../../node_modules/d3-regression/dist/d3-regression.js","webpack://kuika-sample-react-app/../../node_modules/d3-timer/src/timer.js","webpack://kuika-sample-react-app/./node_modules/react-chartjs-2/dist/index.modern.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/array.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/numberArray.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-color/src/define.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-color/src/color.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/basis.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/constant.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/color.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/rgb.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/basisClosed.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/number.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/string.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/value.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/date.js","webpack://kuika-sample-react-app/../../node_modules/@antv/g-base/node_modules/d3-interpolate/src/object.js","webpack://kuika-sample-react-app/../../node_modules/bizcharts/node_modules/d3-color/src/define.js","webpack://kuika-sample-react-app/../../node_modules/bizcharts/node_modules/d3-color/src/color.js","webpack://kuika-sample-react-app/../../node_modules/canvg/lib/index.es.js","webpack://kuika-sample-react-app/../../node_modules/chart.js/dist/chart.mjs","webpack://kuika-sample-react-app/../../node_modules/chart.js/dist/chunks/helpers.segment.mjs"],"sourcesContent":["export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var nodes = Array.from(data),\n n = nodes.length,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n for (i = 0; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = parentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","import {shuffle} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(Array.from(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","import array from \"../array.js\";\nimport enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = (circles = array(circles)).length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","/**\n * This file must not be changed or exchanged.\n *\n * @see http://bpmn.io/license for more information.\n */\n\nimport {\n assignStyle,\n domify,\n delegate as domDelegate,\n query as domQuery\n} from 'min-dom';\n\n\n// inlined ../../resources/logo.svg\nvar BPMNIO_LOGO_SVG = '';\n\nexport var BPMNIO_IMG = BPMNIO_LOGO_SVG;\n\nexport var LOGO_STYLES = {\n verticalAlign: 'middle'\n};\n\nexport var LINK_STYLES = {\n 'color': '#404040'\n};\n\nvar LIGHTBOX_STYLES = {\n 'zIndex': '1001',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'right': '0',\n 'bottom': '0'\n};\n\nvar BACKDROP_STYLES = {\n 'width': '100%',\n 'height': '100%',\n 'background': 'rgba(40,40,40,0.2)'\n};\n\nvar NOTICE_STYLES = {\n 'position': 'absolute',\n 'left': '50%',\n 'top': '40%',\n 'transform': 'translate(-50%)',\n 'width': '260px',\n 'padding': '10px',\n 'background': 'white',\n 'boxShadow': '0 1px 4px rgba(0,0,0,0.3)',\n 'fontFamily': 'Helvetica, Arial, sans-serif',\n 'fontSize': '14px',\n 'display': 'flex',\n 'lineHeight': '1.3'\n};\n\nvar LIGHTBOX_MARKUP =\n '
' +\n '
' +\n '
' +\n '' +\n BPMNIO_IMG +\n '' +\n '' +\n 'Web-based tooling for BPMN, DMN and forms ' +\n 'powered by bpmn.io.' +\n '' +\n '
' +\n '
';\n\n\nvar lightbox;\n\nfunction createLightbox() {\n lightbox = domify(LIGHTBOX_MARKUP);\n\n assignStyle(lightbox, LIGHTBOX_STYLES);\n assignStyle(domQuery('svg', lightbox), LOGO_STYLES);\n assignStyle(domQuery('.backdrop', lightbox), BACKDROP_STYLES);\n assignStyle(domQuery('.notice', lightbox), NOTICE_STYLES);\n assignStyle(domQuery('.link', lightbox), LINK_STYLES, {\n 'margin': '15px 20px 15px 10px',\n 'alignSelf': 'center'\n });\n}\n\nexport function open() {\n\n if (!lightbox) {\n createLightbox();\n\n domDelegate.bind(lightbox, '.backdrop', 'click', function(event) {\n document.body.removeChild(lightbox);\n });\n }\n\n document.body.appendChild(lightbox);\n}\n","var DEFAULT_RENDER_PRIORITY = 1000;\n\n/**\n * @typedef {import('../core/Types').ElementLike} Element\n * @typedef {import('../core/Types').ConnectionLike} Connection\n * @typedef {import('../core/Types').ShapeLike} Shape\n *\n * @typedef {import('../core/EventBus').default} EventBus\n */\n\n/**\n * The base implementation of shape and connection renderers.\n *\n * @param {EventBus} eventBus\n * @param {number} [renderPriority=1000]\n */\nexport default function BaseRenderer(eventBus, renderPriority) {\n var self = this;\n\n renderPriority = renderPriority || DEFAULT_RENDER_PRIORITY;\n\n eventBus.on([ 'render.shape', 'render.connection' ], renderPriority, function(evt, context) {\n var type = evt.type,\n element = context.element,\n visuals = context.gfx,\n attrs = context.attrs;\n\n if (self.canRender(element)) {\n if (type === 'render.shape') {\n return self.drawShape(visuals, element, attrs);\n } else {\n return self.drawConnection(visuals, element, attrs);\n }\n }\n });\n\n eventBus.on([ 'render.getShapePath', 'render.getConnectionPath' ], renderPriority, function(evt, element) {\n if (self.canRender(element)) {\n if (evt.type === 'render.getShapePath') {\n return self.getShapePath(element);\n } else {\n return self.getConnectionPath(element);\n }\n }\n });\n}\n\n/**\n * Checks whether an element can be rendered.\n *\n * @param {Element} element The element to be rendered.\n *\n * @return {boolean} Whether the element can be rendered.\n */\nBaseRenderer.prototype.canRender = function(element) {};\n\n/**\n * Draws a shape.\n *\n * @param {SVGElement} visuals The SVG element to draw the shape into.\n * @param {Shape} shape The shape to be drawn.\n *\n * @return {SVGElement} The SVG element of the shape drawn.\n */\nBaseRenderer.prototype.drawShape = function(visuals, shape) {};\n\n/**\n * Draws a connection.\n *\n * @param {SVGElement} visuals The SVG element to draw the connection into.\n * @param {Connection} connection The connection to be drawn.\n *\n * @return {SVGElement} The SVG element of the connection drawn.\n */\nBaseRenderer.prototype.drawConnection = function(visuals, connection) {};\n\n/**\n * Gets the SVG path of the graphical representation of a shape.\n *\n * @param {Shape} shape The shape.\n *\n * @return {string} The SVG path of the shape.\n */\nBaseRenderer.prototype.getShapePath = function(shape) {};\n\n/**\n * Gets the SVG path of the graphical representation of a connection.\n *\n * @param {Connection} connection The connection.\n *\n * @return {string} The SVG path of the connection.\n */\nBaseRenderer.prototype.getConnectionPath = function(connection) {};\n","import {\n some\n} from 'min-dash';\n\n/**\n * @typedef { import('../model/Types').Element } Element\n * @typedef { import('../model/Types').ModdleElement } ModdleElement\n */\n\n/**\n * Is an element of the given BPMN type?\n *\n * @param {Element|ModdleElement} element\n * @param {string} type\n *\n * @return {boolean}\n */\nexport function is(element, type) {\n var bo = getBusinessObject(element);\n\n return bo && (typeof bo.$instanceOf === 'function') && bo.$instanceOf(type);\n}\n\n\n/**\n * Return true if element has any of the given types.\n *\n * @param {Element|ModdleElement} element\n * @param {string[]} types\n *\n * @return {boolean}\n */\nexport function isAny(element, types) {\n return some(types, function(t) {\n return is(element, t);\n });\n}\n\n/**\n * Return the business object for a given element.\n *\n * @param {Element|ModdleElement} element\n *\n * @return {ModdleElement}\n */\nexport function getBusinessObject(element) {\n return (element && element.businessObject) || element;\n}\n\n/**\n * Return the di object for a given element.\n *\n * @param {Element} element\n *\n * @return {ModdleElement}\n */\nexport function getDi(element) {\n return element && element.di;\n}","import {\n is,\n getBusinessObject,\n getDi\n} from './ModelUtil';\n\nimport {\n some\n} from 'min-dash';\n\n/**\n * @typedef {import('../model/Types').Element} Element\n * @typedef {import('../model/Types').ModdleElement} ModdleElement\n */\n\n/**\n * @param {Element} element\n * @param {ModdleElement} [di]\n *\n * @return {boolean}\n */\nexport function isExpanded(element, di) {\n\n if (is(element, 'bpmn:CallActivity')) {\n return false;\n }\n\n if (is(element, 'bpmn:SubProcess')) {\n di = di || getDi(element);\n\n if (di && is(di, 'bpmndi:BPMNPlane')) {\n return true;\n }\n\n return di && !!di.isExpanded;\n }\n\n if (is(element, 'bpmn:Participant')) {\n return !!getBusinessObject(element).processRef;\n }\n\n return true;\n}\n\n/**\n * @param {Element} element\n *\n * @return {boolean}\n */\nexport function isInterrupting(element) {\n return element && getBusinessObject(element).isInterrupting !== false;\n}\n\n/**\n * @param {Element} element\n *\n * @return {boolean}\n */\nexport function isEventSubProcess(element) {\n return element && !!getBusinessObject(element).triggeredByEvent;\n}\n\n/**\n * @param {Element} element\n * @param {string} eventType\n *\n * @return {boolean}\n */\nexport function hasEventDefinition(element, eventType) {\n var eventDefinitions = getBusinessObject(element).eventDefinitions;\n\n return some(eventDefinitions, function(event) {\n return is(event, eventType);\n });\n}\n\n/**\n * @param {Element} element\n *\n * @return {boolean}\n */\nexport function hasErrorEventDefinition(element) {\n return hasEventDefinition(element, 'bpmn:ErrorEventDefinition');\n}\n\n/**\n * @param {Element} element\n *\n * @return {boolean}\n */\nexport function hasEscalationEventDefinition(element) {\n return hasEventDefinition(element, 'bpmn:EscalationEventDefinition');\n}\n\n/**\n * @param {Element} element\n *\n * @return {boolean}\n */\nexport function hasCompensateEventDefinition(element) {\n return hasEventDefinition(element, 'bpmn:CompensateEventDefinition');\n}\n","import {\n assign\n} from 'min-dash';\n\nimport { is } from './ModelUtil';\n\nimport { isLabel } from 'diagram-js/lib/util/ModelUtil';\n\nexport { isLabel } from 'diagram-js/lib/util/ModelUtil';\n\n/**\n * @typedef {import('diagram-js/lib/util/Types').Point} Point\n * @typedef {import('diagram-js/lib/util/Types').Rect} Rect\n *\n * @typedef {import('../model/Types').Element} Element\n * @typedef {import('../model/Types').ModdleElement} ModdleElement\n */\n\nexport var DEFAULT_LABEL_SIZE = {\n width: 90,\n height: 20\n};\n\nexport var FLOW_LABEL_INDENT = 15;\n\n\n/**\n * Return true if the given semantic has an external label.\n *\n * @param {Element} semantic\n *\n * @return {boolean}\n */\nexport function isLabelExternal(semantic) {\n return is(semantic, 'bpmn:Event') ||\n is(semantic, 'bpmn:Gateway') ||\n is(semantic, 'bpmn:DataStoreReference') ||\n is(semantic, 'bpmn:DataObjectReference') ||\n is(semantic, 'bpmn:DataInput') ||\n is(semantic, 'bpmn:DataOutput') ||\n is(semantic, 'bpmn:SequenceFlow') ||\n is(semantic, 'bpmn:MessageFlow') ||\n is(semantic, 'bpmn:Group');\n}\n\n/**\n * Return true if the given element has an external label.\n *\n * @param {Element} element\n *\n * @return {boolean}\n */\nexport function hasExternalLabel(element) {\n return isLabel(element.label);\n}\n\n/**\n * Get the position of a sequence flow label.\n *\n * @param {Point[]} waypoints\n *\n * @return {Point}\n */\nexport function getFlowLabelPosition(waypoints) {\n\n // get the waypoints mid\n var mid = waypoints.length / 2 - 1;\n\n var first = waypoints[Math.floor(mid)];\n var second = waypoints[Math.ceil(mid + 0.01)];\n\n // get position\n var position = getWaypointsMid(waypoints);\n\n // calculate angle\n var angle = Math.atan((second.y - first.y) / (second.x - first.x));\n\n var x = position.x,\n y = position.y;\n\n if (Math.abs(angle) < Math.PI / 2) {\n y -= FLOW_LABEL_INDENT;\n } else {\n x += FLOW_LABEL_INDENT;\n }\n\n return { x: x, y: y };\n}\n\n\n/**\n * Get the middle of a number of waypoints.\n *\n * @param {Point[]} waypoints\n *\n * @return {Point}\n */\nexport function getWaypointsMid(waypoints) {\n\n var mid = waypoints.length / 2 - 1;\n\n var first = waypoints[Math.floor(mid)];\n var second = waypoints[Math.ceil(mid + 0.01)];\n\n return {\n x: first.x + (second.x - first.x) / 2,\n y: first.y + (second.y - first.y) / 2\n };\n}\n\n/**\n * Get the middle of the external label of an element.\n *\n * @param {Element} element\n *\n * @return {Point}\n */\nexport function getExternalLabelMid(element) {\n\n if (element.waypoints) {\n return getFlowLabelPosition(element.waypoints);\n } else if (is(element, 'bpmn:Group')) {\n return {\n x: element.x + element.width / 2,\n y: element.y + DEFAULT_LABEL_SIZE.height / 2\n };\n } else {\n return {\n x: element.x + element.width / 2,\n y: element.y + element.height + DEFAULT_LABEL_SIZE.height / 2\n };\n }\n}\n\n\n/**\n * Return the bounds of an elements label, parsed from the elements DI or\n * generated from its bounds.\n *\n * @param {ModdleElement} di\n * @param {Element} element\n *\n * @return {Rect}\n */\nexport function getExternalLabelBounds(di, element) {\n\n var mid,\n size,\n bounds,\n label = di.label;\n\n if (label && label.bounds) {\n bounds = label.bounds;\n\n size = {\n width: Math.max(DEFAULT_LABEL_SIZE.width, bounds.width),\n height: bounds.height\n };\n\n mid = {\n x: bounds.x + bounds.width / 2,\n y: bounds.y + bounds.height / 2\n };\n } else {\n\n mid = getExternalLabelMid(element);\n\n size = DEFAULT_LABEL_SIZE;\n }\n\n return assign({\n x: mid.x - size.width / 2,\n y: mid.y - size.height / 2\n }, size);\n}\n\n/**\n * @param {ModdleElement} semantic\n *\n * @returns {string}\n */\nfunction getLabelAttr(semantic) {\n if (\n is(semantic, 'bpmn:FlowElement') ||\n is(semantic, 'bpmn:Participant') ||\n is(semantic, 'bpmn:Lane') ||\n is(semantic, 'bpmn:SequenceFlow') ||\n is(semantic, 'bpmn:MessageFlow') ||\n is(semantic, 'bpmn:DataInput') ||\n is(semantic, 'bpmn:DataOutput')\n ) {\n return 'name';\n }\n\n if (is(semantic, 'bpmn:TextAnnotation')) {\n return 'text';\n }\n\n if (is(semantic, 'bpmn:Group')) {\n return 'categoryValueRef';\n }\n}\n\n/**\n * @param {ModdleElement} semantic\n *\n * @returns {string}\n */\nfunction getCategoryValue(semantic) {\n var categoryValueRef = semantic['categoryValueRef'];\n\n if (!categoryValueRef) {\n return '';\n }\n\n\n return categoryValueRef.value || '';\n}\n\n/**\n * @param {Element} element\n *\n * @return {string}\n */\nexport function getLabel(element) {\n var semantic = element.businessObject,\n attr = getLabelAttr(semantic);\n\n if (attr) {\n\n if (attr === 'categoryValueRef') {\n\n return getCategoryValue(semantic);\n }\n\n return semantic[attr] || '';\n }\n}\n\n\n/**\n * @param {Element} element\n * @param {string} text\n *\n * @return {Element}\n */\nexport function setLabel(element, text) {\n var semantic = element.businessObject,\n attr = getLabelAttr(semantic);\n\n if (attr) {\n\n if (attr === 'categoryValueRef') {\n semantic['categoryValueRef'].value = text;\n } else {\n semantic[attr] = text;\n }\n\n }\n\n return element;\n}\n","import {\n isNumber\n} from 'min-dash';\n\nimport {\n attr as svgAttr,\n create as svgCreate\n} from 'tiny-svg';\n\n\n/**\n * @typedef {(string|number)[]} Component\n *\n * @typedef {import('../util/Types').Point} Point\n */\n\n/**\n * @param {Component[] | Component[][]} elements\n *\n * @return {string}\n */\nexport function componentsToPath(elements) {\n return elements.flat().join(',').replace(/,?([A-z]),?/g, '$1');\n}\n\n/**\n * @param {Point[]} points\n *\n * @return {string}\n */\nexport function toSVGPoints(points) {\n var result = '';\n\n for (var i = 0, p; (p = points[i]); i++) {\n result += p.x + ',' + p.y + ' ';\n }\n\n return result;\n}\n\n/**\n * @param {Point} point\n *\n * @return {Component[]}\n */\nfunction move(point) {\n return [ 'M', point.x, point.y ];\n}\n\n/**\n * @param {Point} point\n *\n * @return {Component[]}\n */\nfunction lineTo(point) {\n return [ 'L', point.x, point.y ];\n}\n\n/**\n * @param {Point} p1\n * @param {Point} p2\n * @param {Point} p3\n *\n * @return {Component[]}\n */\nfunction curveTo(p1, p2, p3) {\n return [ 'C', p1.x, p1.y, p2.x, p2.y, p3.x, p3.y ];\n}\n\n/**\n * @param {Point[]} waypoints\n * @param {number} [cornerRadius]\n * @return {Component[][]}\n */\nfunction drawPath(waypoints, cornerRadius) {\n const pointCount = waypoints.length;\n\n const path = [ move(waypoints[0]) ];\n\n for (let i = 1; i < pointCount; i++) {\n\n const pointBefore = waypoints[i - 1];\n const point = waypoints[i];\n const pointAfter = waypoints[i + 1];\n\n if (!pointAfter || !cornerRadius) {\n path.push(lineTo(point));\n\n continue;\n }\n\n const effectiveRadius = Math.min(\n cornerRadius,\n vectorLength(point.x - pointBefore.x, point.y - pointBefore.y),\n vectorLength(pointAfter.x - point.x, pointAfter.y - point.y)\n );\n\n if (!effectiveRadius) {\n path.push(lineTo(point));\n\n continue;\n }\n\n const beforePoint = getPointAtLength(point, pointBefore, effectiveRadius);\n const beforePoint2 = getPointAtLength(point, pointBefore, effectiveRadius * .5);\n\n const afterPoint = getPointAtLength(point, pointAfter, effectiveRadius);\n const afterPoint2 = getPointAtLength(point, pointAfter, effectiveRadius * .5);\n\n path.push(lineTo(beforePoint));\n path.push(curveTo(beforePoint2, afterPoint2, afterPoint));\n }\n\n return path;\n}\n\nfunction getPointAtLength(start, end, length) {\n\n const deltaX = end.x - start.x;\n const deltaY = end.y - start.y;\n\n const totalLength = vectorLength(deltaX, deltaY);\n\n const percent = length / totalLength;\n\n return {\n x: start.x + deltaX * percent,\n y: start.y + deltaY * percent\n };\n}\n\nfunction vectorLength(x, y) {\n return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n}\n\n/**\n * @param {Point[]} points\n * @param {number|Object} [attrs]\n * @param {number} [radius]\n *\n * @return {SVGElement}\n */\nexport function createLine(points, attrs, radius) {\n\n if (isNumber(attrs)) {\n radius = attrs;\n attrs = null;\n }\n\n if (!attrs) {\n attrs = {};\n }\n\n const line = svgCreate('path', attrs);\n\n if (isNumber(radius)) {\n line.dataset.cornerRadius = String(radius);\n }\n\n return updateLine(line, points);\n}\n\n/**\n * @param {SVGElement} gfx\n * @param {Point[]} points\n *\n * @return {SVGElement}\n */\nexport function updateLine(gfx, points) {\n\n const cornerRadius = parseInt(gfx.dataset.cornerRadius, 10) || 0;\n\n svgAttr(gfx, {\n d: componentsToPath(drawPath(points, cornerRadius))\n });\n\n return gfx;\n}\n","import {\n has,\n some\n} from 'min-dash';\n\nimport {\n getDi\n} from '../util/ModelUtil';\n\nimport {\n componentsToPath\n} from 'diagram-js/lib/util/RenderUtil';\n\n\n/**\n * @typedef {import('../model').ModdleElement} ModdleElement\n * @typedef {import('../model').Element} Element\n *\n * @typedef {import('../model').ShapeLike} ShapeLike\n *\n * @typedef {import('diagram-js/lib/util/Types').Dimensions} Dimensions\n * @typedef {import('diagram-js/lib/util/Types').Rect} Rect\n */\n\n// re-export for compatibility\nexport {\n getDi,\n getBusinessObject as getSemantic\n} from '../util/ModelUtil';\n\n\nexport var black = 'hsl(225, 10%, 15%)';\nexport var white = 'white';\n\n// element utils //////////////////////\n\n/**\n * Checks if eventDefinition of the given element matches with semantic type.\n *\n * @param {ModdleElement} event\n * @param {string} eventDefinitionType\n *\n * @return {boolean}\n */\nexport function isTypedEvent(event, eventDefinitionType) {\n return some(event.eventDefinitions, function(definition) {\n return definition.$type === eventDefinitionType;\n });\n}\n\n/**\n * Check if element is a throw event.\n *\n * @param {ModdleElement} event\n *\n * @return {boolean}\n */\nexport function isThrowEvent(event) {\n return (event.$type === 'bpmn:IntermediateThrowEvent') || (event.$type === 'bpmn:EndEvent');\n}\n\n/**\n * Check if element is a throw event.\n *\n * @param {ModdleElement} element\n *\n * @return {boolean}\n */\nexport function isCollection(element) {\n var dataObject = element.dataObjectRef;\n\n return element.isCollection || (dataObject && dataObject.isCollection);\n}\n\n\n// color access //////////////////////\n\n/**\n * @param {Element} element\n * @param {string} [defaultColor]\n * @param {string} [overrideColor]\n *\n * @return {string}\n */\nexport function getFillColor(element, defaultColor, overrideColor) {\n var di = getDi(element);\n\n return overrideColor || di.get('color:background-color') || di.get('bioc:fill') || defaultColor || white;\n}\n\n/**\n * @param {Element} element\n * @param {string} [defaultColor]\n * @param {string} [overrideColor]\n *\n * @return {string}\n */\nexport function getStrokeColor(element, defaultColor, overrideColor) {\n var di = getDi(element);\n\n return overrideColor || di.get('color:border-color') || di.get('bioc:stroke') || defaultColor || black;\n}\n\n/**\n * @param {Element} element\n * @param {string} [defaultColor]\n * @param {string} [defaultStrokeColor]\n * @param {string} [overrideColor]\n *\n * @return {string}\n */\nexport function getLabelColor(element, defaultColor, defaultStrokeColor, overrideColor) {\n var di = getDi(element),\n label = di.get('label');\n\n return overrideColor || (label && label.get('color:color')) || defaultColor ||\n getStrokeColor(element, defaultStrokeColor);\n}\n\n// cropping path customizations //////////////////////\n\n/**\n * @param {ShapeLike} shape\n *\n * @return {string} path\n */\nexport function getCirclePath(shape) {\n\n var cx = shape.x + shape.width / 2,\n cy = shape.y + shape.height / 2,\n radius = shape.width / 2;\n\n var circlePath = [\n [ 'M', cx, cy ],\n [ 'm', 0, -radius ],\n [ 'a', radius, radius, 0, 1, 1, 0, 2 * radius ],\n [ 'a', radius, radius, 0, 1, 1, 0, -2 * radius ],\n [ 'z' ]\n ];\n\n return componentsToPath(circlePath);\n}\n\n/**\n * @param {ShapeLike} shape\n * @param {number} [borderRadius]\n *\n * @return {string} path\n */\nexport function getRoundRectPath(shape, borderRadius) {\n\n var x = shape.x,\n y = shape.y,\n width = shape.width,\n height = shape.height;\n\n var roundRectPath = [\n [ 'M', x + borderRadius, y ],\n [ 'l', width - borderRadius * 2, 0 ],\n [ 'a', borderRadius, borderRadius, 0, 0, 1, borderRadius, borderRadius ],\n [ 'l', 0, height - borderRadius * 2 ],\n [ 'a', borderRadius, borderRadius, 0, 0, 1, -borderRadius, borderRadius ],\n [ 'l', borderRadius * 2 - width, 0 ],\n [ 'a', borderRadius, borderRadius, 0, 0, 1, -borderRadius, -borderRadius ],\n [ 'l', 0, borderRadius * 2 - height ],\n [ 'a', borderRadius, borderRadius, 0, 0, 1, borderRadius, -borderRadius ],\n [ 'z' ]\n ];\n\n return componentsToPath(roundRectPath);\n}\n\n/**\n * @param {ShapeLike} shape\n *\n * @return {string} path\n */\nexport function getDiamondPath(shape) {\n\n var width = shape.width,\n height = shape.height,\n x = shape.x,\n y = shape.y,\n halfWidth = width / 2,\n halfHeight = height / 2;\n\n var diamondPath = [\n [ 'M', x + halfWidth, y ],\n [ 'l', halfWidth, halfHeight ],\n [ 'l', -halfWidth, halfHeight ],\n [ 'l', -halfWidth, -halfHeight ],\n [ 'z' ]\n ];\n\n return componentsToPath(diamondPath);\n}\n\n/**\n * @param {ShapeLike} shape\n *\n * @return {string} path\n */\nexport function getRectPath(shape) {\n var x = shape.x,\n y = shape.y,\n width = shape.width,\n height = shape.height;\n\n var rectPath = [\n [ 'M', x, y ],\n [ 'l', width, 0 ],\n [ 'l', 0, height ],\n [ 'l', -width, 0 ],\n [ 'z' ]\n ];\n\n return componentsToPath(rectPath);\n}\n\n/**\n * Get width and height from element or overrides.\n *\n * @param {Dimensions|Rect|ShapeLike} bounds\n * @param {Object} overrides\n *\n * @returns {Dimensions}\n */\nexport function getBounds(bounds, overrides = {}) {\n return {\n width: getWidth(bounds, overrides),\n height: getHeight(bounds, overrides)\n };\n}\n\n/**\n * Get width from element or overrides.\n *\n * @param {Dimensions|Rect|ShapeLike} bounds\n * @param {Object} overrides\n *\n * @returns {number}\n */\nexport function getWidth(bounds, overrides = {}) {\n return has(overrides, 'width') ? overrides.width : bounds.width;\n}\n\n/**\n * Get height from element or overrides.\n *\n * @param {Dimensions|Rect|ShapeLike} bounds\n * @param {Object} overrides\n *\n * @returns {number}\n */\nexport function getHeight(bounds, overrides = {}) {\n return has(overrides, 'height') ? overrides.height : bounds.height;\n}","import {\r\n transform as svgTransform,\r\n createTransform\r\n} from 'tiny-svg';\r\n\r\n\r\n/**\r\n * @param {SVGElement} gfx\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} [angle]\r\n * @param {number} [amount]\r\n */\r\nexport function transform(gfx, x, y, angle, amount) {\r\n var translate = createTransform();\r\n translate.setTranslate(x, y);\r\n\r\n var rotate = createTransform();\r\n rotate.setRotate(angle || 0, 0, 0);\r\n\r\n var scale = createTransform();\r\n scale.setScale(amount || 1, amount || 1);\r\n\r\n svgTransform(gfx, [ translate, rotate, scale ]);\r\n}\r\n\r\n\r\n/**\r\n * @param {SVGElement} gfx\r\n * @param {number} x\r\n * @param {number} y\r\n */\r\nexport function translate(gfx, x, y) {\r\n var translate = createTransform();\r\n translate.setTranslate(x, y);\r\n\r\n svgTransform(gfx, translate);\r\n}\r\n\r\n\r\n/**\r\n * @param {SVGElement} gfx\r\n * @param {number} angle\r\n */\r\nexport function rotate(gfx, angle) {\r\n var rotate = createTransform();\r\n rotate.setRotate(angle, 0, 0);\r\n\r\n svgTransform(gfx, rotate);\r\n}\r\n\r\n\r\n/**\r\n * @param {SVGElement} gfx\r\n * @param {number} amount\r\n */\r\nexport function scale(gfx, amount) {\r\n var scale = createTransform();\r\n scale.setScale(amount, amount);\r\n\r\n svgTransform(gfx, scale);\r\n}\r\n","import inherits from 'inherits-browser';\n\nimport {\n assign,\n forEach,\n isObject\n} from 'min-dash';\n\nimport BaseRenderer from 'diagram-js/lib/draw/BaseRenderer';\n\nimport {\n isExpanded,\n isEventSubProcess\n} from '../util/DiUtil';\n\nimport {\n getLabel\n} from '../util/LabelUtil';\n\nimport {\n is\n} from '../util/ModelUtil';\n\nimport {\n createLine\n} from 'diagram-js/lib/util/RenderUtil';\n\nimport {\n isTypedEvent,\n isThrowEvent,\n isCollection,\n getBounds,\n getDi,\n getSemantic,\n getCirclePath,\n getRoundRectPath,\n getDiamondPath,\n getRectPath,\n getFillColor,\n getStrokeColor,\n getLabelColor,\n getHeight,\n getWidth\n} from './BpmnRenderUtil';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate,\n classes as svgClasses\n} from 'tiny-svg';\n\nimport {\n rotate,\n transform,\n translate\n} from 'diagram-js/lib/util/SvgTransformUtil';\n\nimport Ids from 'ids';\n\nimport { black } from './BpmnRenderUtil';\n\nvar rendererIds = new Ids();\n\nvar ELEMENT_LABEL_DISTANCE = 10,\n INNER_OUTER_DIST = 3,\n PARTICIPANT_STROKE_WIDTH = 1.5,\n TASK_BORDER_RADIUS = 10;\n\nvar DEFAULT_OPACITY = 0.95,\n FULL_OPACITY = 1,\n LOW_OPACITY = 0.25;\n\n/**\n * @typedef { Partial<{\n * defaultFillColor: string,\n * defaultStrokeColor: string,\n * defaultLabelColor: string\n * }> } BpmnRendererConfig\n *\n * @typedef { Partial<{\n * fill: string,\n * stroke: string,\n * width: string,\n * height: string\n * }> } Attrs\n */\n\n/**\n * @typedef { import('../model/Types').Element } Element\n */\n\n/**\n * A renderer for BPMN elements\n *\n * @param {BpmnRendererConfig} config\n * @param {import('diagram-js/lib/core/EventBus').default} eventBus\n * @param {import('diagram-js/lib/draw/Styles').default} styles\n * @param {import('./PathMap').default} pathMap\n * @param {import('diagram-js/lib/core/Canvas').default} canvas\n * @param {import('./TextRenderer').default} textRenderer\n * @param {number} [priority]\n */\nexport default function BpmnRenderer(\n config, eventBus, styles, pathMap,\n canvas, textRenderer, priority) {\n\n BaseRenderer.call(this, eventBus, priority);\n\n var defaultFillColor = config && config.defaultFillColor,\n defaultStrokeColor = config && config.defaultStrokeColor,\n defaultLabelColor = config && config.defaultLabelColor;\n\n var rendererId = rendererIds.next();\n\n var markers = {};\n\n function shapeStyle(attrs) {\n return styles.computeStyle(attrs, {\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n stroke: black,\n strokeWidth: 2,\n fill: 'white'\n });\n }\n\n function lineStyle(attrs) {\n return styles.computeStyle(attrs, [ 'no-fill' ], {\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n stroke: black,\n strokeWidth: 2\n });\n }\n\n function addMarker(id, options) {\n var {\n ref = { x: 0, y: 0 },\n scale = 1,\n element\n } = options;\n\n var marker = svgCreate('marker', {\n id: id,\n viewBox: '0 0 20 20',\n refX: ref.x,\n refY: ref.y,\n markerWidth: 20 * scale,\n markerHeight: 20 * scale,\n orient: 'auto'\n });\n\n svgAppend(marker, element);\n\n var defs = domQuery('defs', canvas._svg);\n\n if (!defs) {\n defs = svgCreate('defs');\n\n svgAppend(canvas._svg, defs);\n }\n\n svgAppend(defs, marker);\n\n markers[id] = marker;\n }\n\n function colorEscape(str) {\n\n // only allow characters and numbers\n return str.replace(/[^0-9a-zA-Z]+/g, '_');\n }\n\n function marker(type, fill, stroke) {\n var id = type + '-' + colorEscape(fill) + '-' + colorEscape(stroke) + '-' + rendererId;\n\n if (!markers[id]) {\n createMarker(id, type, fill, stroke);\n }\n\n return 'url(#' + id + ')';\n }\n\n function createMarker(id, type, fill, stroke) {\n\n if (type === 'sequenceflow-end') {\n var sequenceflowEnd = svgCreate('path', {\n d: 'M 1 5 L 11 10 L 1 15 Z',\n ...shapeStyle({\n fill: stroke,\n stroke: stroke,\n strokeWidth: 1\n })\n });\n\n addMarker(id, {\n element: sequenceflowEnd,\n ref: { x: 11, y: 10 },\n scale: 0.5\n });\n }\n\n if (type === 'messageflow-start') {\n var messageflowStart = svgCreate('circle', {\n cx: 6,\n cy: 6,\n r: 3.5,\n ...shapeStyle({\n fill,\n stroke: stroke,\n strokeWidth: 1,\n\n // fix for safari / chrome / firefox bug not correctly\n // resetting stroke dash array\n strokeDasharray: [ 10000, 1 ]\n })\n });\n\n addMarker(id, {\n element: messageflowStart,\n ref: { x: 6, y: 6 }\n });\n }\n\n if (type === 'messageflow-end') {\n var messageflowEnd = svgCreate('path', {\n d: 'm 1 5 l 0 -3 l 7 3 l -7 3 z',\n ...shapeStyle({\n fill,\n stroke: stroke,\n strokeWidth: 1,\n\n // fix for safari / chrome / firefox bug not correctly\n // resetting stroke dash array\n strokeDasharray: [ 10000, 1 ]\n })\n });\n\n addMarker(id, {\n element: messageflowEnd,\n ref: { x: 8.5, y: 5 }\n });\n }\n\n if (type === 'association-start') {\n var associationStart = svgCreate('path', {\n d: 'M 11 5 L 1 10 L 11 15',\n ...lineStyle({\n fill: 'none',\n stroke,\n strokeWidth: 1.5,\n\n // fix for safari / chrome / firefox bug not correctly\n // resetting stroke dash array\n strokeDasharray: [ 10000, 1 ]\n })\n });\n\n addMarker(id, {\n element: associationStart,\n ref: { x: 1, y: 10 },\n scale: 0.5\n });\n }\n\n if (type === 'association-end') {\n var associationEnd = svgCreate('path', {\n d: 'M 1 5 L 11 10 L 1 15',\n ...lineStyle({\n fill: 'none',\n stroke,\n strokeWidth: 1.5,\n\n // fix for safari / chrome / firefox bug not correctly\n // resetting stroke dash array\n strokeDasharray: [ 10000, 1 ]\n })\n });\n\n addMarker(id, {\n element: associationEnd,\n ref: { x: 11, y: 10 },\n scale: 0.5\n });\n }\n\n if (type === 'conditional-flow-marker') {\n var conditionalFlowMarker = svgCreate('path', {\n d: 'M 0 10 L 8 6 L 16 10 L 8 14 Z',\n ...shapeStyle({\n fill,\n stroke: stroke\n })\n });\n\n addMarker(id, {\n element: conditionalFlowMarker,\n ref: { x: -1, y: 10 },\n scale: 0.5\n });\n }\n\n if (type === 'conditional-default-flow-marker') {\n var defaultFlowMarker = svgCreate('path', {\n d: 'M 6 4 L 10 16',\n ...shapeStyle({\n stroke: stroke\n })\n });\n\n addMarker(id, {\n element: defaultFlowMarker,\n ref: { x: 0, y: 10 },\n scale: 0.5\n });\n }\n }\n\n function drawCircle(parentGfx, width, height, offset, attrs = {}) {\n\n if (isObject(offset)) {\n attrs = offset;\n offset = 0;\n }\n\n offset = offset || 0;\n\n attrs = shapeStyle(attrs);\n\n var cx = width / 2,\n cy = height / 2;\n\n var circle = svgCreate('circle', {\n cx: cx,\n cy: cy,\n r: Math.round((width + height) / 4 - offset),\n ...attrs\n });\n\n svgAppend(parentGfx, circle);\n\n return circle;\n }\n\n function drawRect(parentGfx, width, height, r, offset, attrs) {\n\n if (isObject(offset)) {\n attrs = offset;\n offset = 0;\n }\n\n offset = offset || 0;\n\n attrs = shapeStyle(attrs);\n\n var rect = svgCreate('rect', {\n x: offset,\n y: offset,\n width: width - offset * 2,\n height: height - offset * 2,\n rx: r,\n ry: r,\n ...attrs\n });\n\n svgAppend(parentGfx, rect);\n\n return rect;\n }\n\n function drawDiamond(parentGfx, width, height, attrs) {\n\n var x_2 = width / 2;\n var y_2 = height / 2;\n\n var points = [\n { x: x_2, y: 0 },\n { x: width, y: y_2 },\n { x: x_2, y: height },\n { x: 0, y: y_2 }\n ];\n\n var pointsString = points.map(function(point) {\n return point.x + ',' + point.y;\n }).join(' ');\n\n attrs = shapeStyle(attrs);\n\n var polygon = svgCreate('polygon', {\n ...attrs,\n points: pointsString\n });\n\n svgAppend(parentGfx, polygon);\n\n return polygon;\n }\n\n /**\n * @param {SVGElement} parentGfx\n * @param {Point[]} waypoints\n * @param {any} attrs\n * @param {number} [radius]\n *\n * @return {SVGElement}\n */\n function drawLine(parentGfx, waypoints, attrs, radius) {\n attrs = lineStyle(attrs);\n\n var line = createLine(waypoints, attrs, radius);\n\n svgAppend(parentGfx, line);\n\n return line;\n }\n\n /**\n * @param {SVGElement} parentGfx\n * @param {Point[]} waypoints\n * @param {any} attrs\n *\n * @return {SVGElement}\n */\n function drawConnectionSegments(parentGfx, waypoints, attrs) {\n return drawLine(parentGfx, waypoints, attrs, 5);\n }\n\n function drawPath(parentGfx, d, attrs) {\n attrs = lineStyle(attrs);\n\n var path = svgCreate('path', {\n ...attrs,\n d\n });\n\n svgAppend(parentGfx, path);\n\n return path;\n }\n\n function drawMarker(type, parentGfx, path, attrs) {\n return drawPath(parentGfx, path, assign({ 'data-marker': type }, attrs));\n }\n\n function renderer(type) {\n return handlers[type];\n }\n\n function as(type) {\n return function(parentGfx, element, attrs) {\n return renderer(type)(parentGfx, element, attrs);\n };\n }\n\n var eventIconRenderers = {\n 'bpmn:MessageEventDefinition': function(parentGfx, element, attrs = {}, isThrowing) {\n var pathData = pathMap.getScaledPath('EVENT_MESSAGE', {\n xScaleFactor: 0.9,\n yScaleFactor: 0.9,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.235,\n my: 0.315\n }\n });\n\n var fill = isThrowing\n ? getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n : getFillColor(element, defaultFillColor, attrs.fill);\n\n var stroke = isThrowing\n ? getFillColor(element, defaultFillColor, attrs.fill)\n : getStrokeColor(element, defaultStrokeColor, attrs.stroke);\n\n var messagePath = drawPath(parentGfx, pathData, {\n fill,\n stroke,\n strokeWidth: 1\n });\n\n return messagePath;\n },\n 'bpmn:TimerEventDefinition': function(parentGfx, element, attrs = {}) {\n var circle = drawCircle(parentGfx, element.width, element.height, 0.2 * element.height, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 2\n });\n\n var pathData = pathMap.getScaledPath('EVENT_TIMER_WH', {\n xScaleFactor: 0.75,\n yScaleFactor: 0.75,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.5,\n my: 0.5\n }\n });\n\n drawPath(parentGfx, pathData, {\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 2\n });\n\n for (var i = 0; i < 12; i++) {\n var linePathData = pathMap.getScaledPath('EVENT_TIMER_LINE', {\n xScaleFactor: 0.75,\n yScaleFactor: 0.75,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.5,\n my: 0.5\n }\n });\n\n var width = element.width / 2,\n height = element.height / 2;\n\n drawPath(parentGfx, linePathData, {\n strokeWidth: 1,\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n transform: 'rotate(' + (i * 30) + ',' + height + ',' + width + ')'\n });\n }\n\n return circle;\n },\n 'bpmn:EscalationEventDefinition': function(parentGfx, event, attrs = {}, isThrowing) {\n var pathData = pathMap.getScaledPath('EVENT_ESCALATION', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.5,\n my: 0.2\n }\n });\n\n var fill = isThrowing\n ? getStrokeColor(event, defaultStrokeColor, attrs.stroke)\n : getFillColor(event, defaultFillColor, attrs.fill);\n\n return drawPath(parentGfx, pathData, {\n fill,\n stroke: getStrokeColor(event, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n },\n 'bpmn:ConditionalEventDefinition': function(parentGfx, event, attrs = {}) {\n var pathData = pathMap.getScaledPath('EVENT_CONDITIONAL', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.5,\n my: 0.222\n }\n });\n\n return drawPath(parentGfx, pathData, {\n fill: getFillColor(event, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(event, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n },\n 'bpmn:LinkEventDefinition': function(parentGfx, event, attrs = {}, isThrowing) {\n var pathData = pathMap.getScaledPath('EVENT_LINK', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.57,\n my: 0.263\n }\n });\n\n var fill = isThrowing\n ? getStrokeColor(event, defaultStrokeColor, attrs.stroke)\n : getFillColor(event, defaultFillColor, attrs.fill);\n\n return drawPath(parentGfx, pathData, {\n fill,\n stroke: getStrokeColor(event, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n },\n 'bpmn:ErrorEventDefinition': function(parentGfx, event, attrs = {}, isThrowing) {\n var pathData = pathMap.getScaledPath('EVENT_ERROR', {\n xScaleFactor: 1.1,\n yScaleFactor: 1.1,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.2,\n my: 0.722\n }\n });\n\n var fill = isThrowing\n ? getStrokeColor(event, defaultStrokeColor, attrs.stroke)\n : getFillColor(event, defaultFillColor, attrs.fill);\n\n return drawPath(parentGfx, pathData, {\n fill,\n stroke: getStrokeColor(event, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n },\n 'bpmn:CancelEventDefinition': function(parentGfx, event, attrs = {}, isThrowing) {\n var pathData = pathMap.getScaledPath('EVENT_CANCEL_45', {\n xScaleFactor: 1.0,\n yScaleFactor: 1.0,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.638,\n my: -0.055\n }\n });\n\n var fill = isThrowing ? getStrokeColor(event, defaultStrokeColor, attrs.stroke) : 'none';\n\n var path = drawPath(parentGfx, pathData, {\n fill,\n stroke: getStrokeColor(event, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n rotate(path, 45);\n\n return path;\n },\n 'bpmn:CompensateEventDefinition': function(parentGfx, event, attrs = {}, isThrowing) {\n var pathData = pathMap.getScaledPath('EVENT_COMPENSATION', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.22,\n my: 0.5\n }\n });\n\n var fill = isThrowing\n ? getStrokeColor(event, defaultStrokeColor, attrs.stroke)\n : getFillColor(event, defaultFillColor, attrs.fill);\n\n return drawPath(parentGfx, pathData, {\n fill,\n stroke: getStrokeColor(event, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n },\n 'bpmn:SignalEventDefinition': function(parentGfx, event, attrs = {}, isThrowing) {\n var pathData = pathMap.getScaledPath('EVENT_SIGNAL', {\n xScaleFactor: 0.9,\n yScaleFactor: 0.9,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.5,\n my: 0.2\n }\n });\n\n var fill = isThrowing\n ? getStrokeColor(event, defaultStrokeColor, attrs.stroke)\n : getFillColor(event, defaultFillColor, attrs.fill);\n\n return drawPath(parentGfx, pathData, {\n strokeWidth: 1,\n fill,\n stroke: getStrokeColor(event, defaultStrokeColor, attrs.stroke)\n });\n },\n 'bpmn:MultipleEventDefinition': function(parentGfx, event, attrs = {}, isThrowing) {\n var pathData = pathMap.getScaledPath('EVENT_MULTIPLE', {\n xScaleFactor: 1.1,\n yScaleFactor: 1.1,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.222,\n my: 0.36\n }\n });\n\n var fill = isThrowing\n ? getStrokeColor(event, defaultStrokeColor, attrs.stroke)\n : getFillColor(event, defaultFillColor, attrs.fill);\n\n return drawPath(parentGfx, pathData, {\n fill,\n strokeWidth: 1\n });\n },\n 'bpmn:ParallelMultipleEventDefinition': function(parentGfx, event, attrs = {}) {\n var pathData = pathMap.getScaledPath('EVENT_PARALLEL_MULTIPLE', {\n xScaleFactor: 1.2,\n yScaleFactor: 1.2,\n containerWidth: event.width,\n containerHeight: event.height,\n position: {\n mx: 0.458,\n my: 0.194\n }\n });\n\n return drawPath(parentGfx, pathData, {\n fill: getStrokeColor(event, defaultStrokeColor, attrs.stroke),\n stroke: getStrokeColor(event, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n },\n 'bpmn:TerminateEventDefinition': function(parentGfx, element, attrs = {}) {\n var circle = drawCircle(parentGfx, element.width, element.height, 8, {\n fill: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 4\n });\n\n return circle;\n }\n };\n\n function renderEventIcon(element, parentGfx, attrs = {}) {\n var semantic = getSemantic(element),\n isThrowing = isThrowEvent(semantic);\n\n if (semantic.get('eventDefinitions') && semantic.get('eventDefinitions').length > 1) {\n if (semantic.get('parallelMultiple')) {\n return eventIconRenderers[ 'bpmn:ParallelMultipleEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n else {\n return eventIconRenderers[ 'bpmn:MultipleEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n }\n\n if (isTypedEvent(semantic, 'bpmn:MessageEventDefinition')) {\n return eventIconRenderers[ 'bpmn:MessageEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:TimerEventDefinition')) {\n return eventIconRenderers[ 'bpmn:TimerEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:ConditionalEventDefinition')) {\n return eventIconRenderers[ 'bpmn:ConditionalEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:SignalEventDefinition')) {\n return eventIconRenderers[ 'bpmn:SignalEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:EscalationEventDefinition')) {\n return eventIconRenderers[ 'bpmn:EscalationEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:LinkEventDefinition')) {\n return eventIconRenderers[ 'bpmn:LinkEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:ErrorEventDefinition')) {\n return eventIconRenderers[ 'bpmn:ErrorEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:CancelEventDefinition')) {\n return eventIconRenderers[ 'bpmn:CancelEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:CompensateEventDefinition')) {\n return eventIconRenderers[ 'bpmn:CompensateEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n if (isTypedEvent(semantic, 'bpmn:TerminateEventDefinition')) {\n return eventIconRenderers[ 'bpmn:TerminateEventDefinition' ](parentGfx, element, attrs, isThrowing);\n }\n\n return null;\n }\n\n var taskMarkerRenderers = {\n 'ParticipantMultiplicityMarker': function(parentGfx, element, attrs = {}) {\n var width = getWidth(element, attrs),\n height = getHeight(element, attrs);\n\n var markerPath = pathMap.getScaledPath('MARKER_PARALLEL', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: width,\n containerHeight: height,\n position: {\n mx: ((width / 2 - 6) / width),\n my: (height - 15) / height\n }\n });\n\n drawMarker('participant-multiplicity', parentGfx, markerPath, {\n strokeWidth: 2,\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n },\n 'SubProcessMarker': function(parentGfx, element, attrs = {}) {\n var markerRect = drawRect(parentGfx, 14, 14, 0, {\n strokeWidth: 1,\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n\n translate(markerRect, element.width / 2 - 7.5, element.height - 20);\n\n var markerPath = pathMap.getScaledPath('MARKER_SUB_PROCESS', {\n xScaleFactor: 1.5,\n yScaleFactor: 1.5,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: (element.width / 2 - 7.5) / element.width,\n my: (element.height - 20) / element.height\n }\n });\n\n drawMarker('sub-process', parentGfx, markerPath, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n },\n 'ParallelMarker': function(parentGfx, element, attrs) {\n var width = getWidth(element, attrs),\n height = getHeight(element, attrs);\n\n var markerPath = pathMap.getScaledPath('MARKER_PARALLEL', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: width,\n containerHeight: height,\n position: {\n mx: ((width / 2 + attrs.parallel) / width),\n my: (height - 20) / height\n }\n });\n\n drawMarker('parallel', parentGfx, markerPath, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n },\n 'SequentialMarker': function(parentGfx, element, attrs) {\n var markerPath = pathMap.getScaledPath('MARKER_SEQUENTIAL', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: ((element.width / 2 + attrs.seq) / element.width),\n my: (element.height - 19) / element.height\n }\n });\n\n drawMarker('sequential', parentGfx, markerPath, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n },\n 'CompensationMarker': function(parentGfx, element, attrs) {\n var markerMath = pathMap.getScaledPath('MARKER_COMPENSATION', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: ((element.width / 2 + attrs.compensation) / element.width),\n my: (element.height - 13) / element.height\n }\n });\n\n drawMarker('compensation', parentGfx, markerMath, {\n strokeWidth: 1,\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n },\n 'LoopMarker': function(parentGfx, element, attrs) {\n var width = getWidth(element, attrs),\n height = getHeight(element, attrs);\n\n var markerPath = pathMap.getScaledPath('MARKER_LOOP', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: width,\n containerHeight: height,\n position: {\n mx: ((width / 2 + attrs.loop) / width),\n my: (height - 7) / height\n }\n });\n\n drawMarker('loop', parentGfx, markerPath, {\n strokeWidth: 1.5,\n fill: 'none',\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeMiterlimit: 0.5\n });\n },\n 'AdhocMarker': function(parentGfx, element, attrs) {\n var width = getWidth(element, attrs),\n height = getHeight(element, attrs);\n\n var markerPath = pathMap.getScaledPath('MARKER_ADHOC', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: width,\n containerHeight: height,\n position: {\n mx: ((width / 2 + attrs.adhoc) / width),\n my: (height - 15) / height\n }\n });\n\n drawMarker('adhoc', parentGfx, markerPath, {\n strokeWidth: 1,\n fill: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n }\n };\n\n function renderTaskMarker(type, parentGfx, element, attrs) {\n taskMarkerRenderers[ type ](parentGfx, element, attrs);\n }\n\n function renderTaskMarkers(parentGfx, element, taskMarkers, attrs = {}) {\n attrs = {\n fill: attrs.fill,\n stroke: attrs.stroke,\n width: getWidth(element, attrs),\n height: getHeight(element, attrs)\n };\n\n var semantic = getSemantic(element);\n\n var subprocess = taskMarkers && taskMarkers.includes('SubProcessMarker');\n\n if (subprocess) {\n attrs = {\n ...attrs,\n seq: -21,\n parallel: -22,\n compensation: -42,\n loop: -18,\n adhoc: 10\n };\n } else {\n attrs = {\n ...attrs,\n seq: -5,\n parallel: -6,\n compensation: -27,\n loop: 0,\n adhoc: 10\n };\n }\n\n forEach(taskMarkers, function(marker) {\n renderTaskMarker(marker, parentGfx, element, attrs);\n });\n\n if (semantic.get('isForCompensation')) {\n renderTaskMarker('CompensationMarker', parentGfx, element, attrs);\n }\n\n if (is(semantic, 'bpmn:AdHocSubProcess')) {\n renderTaskMarker('AdhocMarker', parentGfx, element, attrs);\n }\n\n var loopCharacteristics = semantic.get('loopCharacteristics'),\n isSequential = loopCharacteristics && loopCharacteristics.get('isSequential');\n\n if (loopCharacteristics) {\n\n if (isSequential === undefined) {\n renderTaskMarker('LoopMarker', parentGfx, element, attrs);\n }\n\n if (isSequential === false) {\n renderTaskMarker('ParallelMarker', parentGfx, element, attrs);\n }\n\n if (isSequential === true) {\n renderTaskMarker('SequentialMarker', parentGfx, element, attrs);\n }\n }\n }\n\n function renderLabel(parentGfx, label, attrs = {}) {\n attrs = assign({\n size: {\n width: 100\n }\n }, attrs);\n\n var text = textRenderer.createText(label || '', attrs);\n\n svgClasses(text).add('djs-label');\n\n svgAppend(parentGfx, text);\n\n return text;\n }\n\n function renderEmbeddedLabel(parentGfx, element, align, attrs = {}) {\n var semantic = getSemantic(element);\n\n var box = getBounds({\n x: element.x,\n y: element.y,\n width: element.width,\n height: element.height\n }, attrs);\n\n return renderLabel(parentGfx, semantic.name, {\n align,\n box,\n padding: 7,\n style: {\n fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor, attrs.stroke)\n }\n });\n }\n\n function renderExternalLabel(parentGfx, element, attrs = {}) {\n var box = {\n width: 90,\n height: 30,\n x: element.width / 2 + element.x,\n y: element.height / 2 + element.y\n };\n\n return renderLabel(parentGfx, getLabel(element), {\n box: box,\n fitBox: true,\n style: assign(\n {},\n textRenderer.getExternalStyle(),\n {\n fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor, attrs.stroke)\n }\n )\n });\n }\n\n function renderLaneLabel(parentGfx, text, element, attrs = {}) {\n var textBox = renderLabel(parentGfx, text, {\n box: {\n height: 30,\n width: getHeight(element, attrs),\n },\n align: 'center-middle',\n style: {\n fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor, attrs.stroke)\n }\n });\n\n var top = -1 * getHeight(element, attrs);\n\n transform(textBox, 0, -top, 270);\n }\n\n function renderActivity(parentGfx, element, attrs = {}) {\n var {\n width,\n height\n } = getBounds(element, attrs);\n\n return drawRect(parentGfx, width, height, TASK_BORDER_RADIUS, {\n ...attrs,\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n fillOpacity: DEFAULT_OPACITY,\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n }\n\n function renderAssociation(parentGfx, element, attrs = {}) {\n var semantic = getSemantic(element);\n\n var fill = getFillColor(element, defaultFillColor, attrs.fill),\n stroke = getStrokeColor(element, defaultStrokeColor, attrs.stroke);\n\n if (semantic.get('associationDirection') === 'One' ||\n semantic.get('associationDirection') === 'Both') {\n attrs.markerEnd = marker('association-end', fill, stroke);\n }\n\n if (semantic.get('associationDirection') === 'Both') {\n attrs.markerStart = marker('association-start', fill, stroke);\n }\n\n attrs = pickAttrs(attrs, [\n 'markerStart',\n 'markerEnd'\n ]);\n\n return drawConnectionSegments(parentGfx, element.waypoints, {\n ...attrs,\n stroke,\n strokeDasharray: '0, 5'\n });\n }\n\n function renderDataObject(parentGfx, element, attrs = {}) {\n var fill = getFillColor(element, defaultFillColor, attrs.fill),\n stroke = getStrokeColor(element, defaultStrokeColor, attrs.stroke);\n\n var pathData = pathMap.getScaledPath('DATA_OBJECT_PATH', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.474,\n my: 0.296\n }\n });\n\n var dataObject = drawPath(parentGfx, pathData, {\n fill,\n fillOpacity: DEFAULT_OPACITY,\n stroke\n });\n\n var semantic = getSemantic(element);\n\n if (isCollection(semantic)) {\n var collectionPathData = pathMap.getScaledPath('DATA_OBJECT_COLLECTION_PATH', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.33,\n my: (element.height - 18) / element.height\n }\n });\n\n drawPath(parentGfx, collectionPathData, {\n strokeWidth: 2,\n fill,\n stroke\n });\n }\n\n return dataObject;\n }\n\n function renderEvent(parentGfx, element, attrs = {}) {\n return drawCircle(parentGfx, element.width, element.height, {\n fillOpacity: DEFAULT_OPACITY,\n ...attrs,\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n }\n\n function renderGateway(parentGfx, element, attrs = {}) {\n return drawDiamond(parentGfx, element.width, element.height, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n fillOpacity: DEFAULT_OPACITY,\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n }\n\n function renderLane(parentGfx, element, attrs = {}) {\n var lane = drawRect(parentGfx, getWidth(element, attrs), getHeight(element, attrs), 0, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n fillOpacity: attrs.fillOpacity || DEFAULT_OPACITY,\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1.5\n });\n\n var semantic = getSemantic(element);\n\n if (is(semantic, 'bpmn:Lane')) {\n var text = semantic.get('name');\n\n renderLaneLabel(parentGfx, text, element, attrs);\n }\n\n return lane;\n }\n\n function renderSubProcess(parentGfx, element, attrs = {}) {\n var activity = renderActivity(parentGfx, element, attrs);\n\n if (isEventSubProcess(element)) {\n svgAttr(activity, {\n strokeDasharray: '0, 5.5',\n strokeWidth: 2.5\n });\n }\n\n var expanded = isExpanded(element);\n\n renderEmbeddedLabel(parentGfx, element, expanded ? 'center-top' : 'center-middle', attrs);\n\n if (expanded) {\n renderTaskMarkers(parentGfx, element, undefined, attrs);\n } else {\n renderTaskMarkers(parentGfx, element, [ 'SubProcessMarker' ], attrs);\n }\n\n return activity;\n }\n\n function renderTask(parentGfx, element, attrs = {}) {\n var activity = renderActivity(parentGfx, element, attrs);\n\n renderEmbeddedLabel(parentGfx, element, 'center-middle', attrs);\n\n renderTaskMarkers(parentGfx, element, undefined, attrs);\n\n return activity;\n }\n\n var handlers = this.handlers = {\n 'bpmn:AdHocSubProcess': function(parentGfx, element, attrs = {}) {\n if (isExpanded(element)) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke',\n 'width',\n 'height'\n ]);\n } else {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n }\n\n return renderSubProcess(parentGfx, element, attrs);\n },\n 'bpmn:Association': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n return renderAssociation(parentGfx, element, attrs);\n },\n 'bpmn:BoundaryEvent': function(parentGfx, element, attrs = {}) {\n var { renderIcon = true } = attrs;\n\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var semantic = getSemantic(element),\n cancelActivity = semantic.get('cancelActivity');\n\n attrs = {\n strokeWidth: 1.5,\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n fillOpacity: FULL_OPACITY,\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n };\n\n if (!cancelActivity) {\n attrs.strokeDasharray = '6';\n }\n\n var event = renderEvent(parentGfx, element, attrs);\n\n drawCircle(parentGfx, element.width, element.height, INNER_OUTER_DIST, {\n ...attrs,\n fill: 'none'\n });\n\n if (renderIcon) {\n renderEventIcon(element, parentGfx, attrs);\n }\n\n return event;\n },\n 'bpmn:BusinessRuleTask': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var task = renderTask(parentGfx, element, attrs);\n\n var headerData = pathMap.getScaledPath('TASK_TYPE_BUSINESS_RULE_MAIN', {\n abspos: {\n x: 8,\n y: 8\n }\n });\n\n var businessPath = drawPath(parentGfx, headerData);\n\n svgAttr(businessPath, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n var headerPathData = pathMap.getScaledPath('TASK_TYPE_BUSINESS_RULE_HEADER', {\n abspos: {\n x: 8,\n y: 8\n }\n });\n\n var businessHeaderPath = drawPath(parentGfx, headerPathData);\n\n svgAttr(businessHeaderPath, {\n fill: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n return task;\n },\n 'bpmn:CallActivity': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n return renderSubProcess(parentGfx, element, {\n strokeWidth: 5,\n ...attrs\n });\n },\n 'bpmn:ComplexGateway': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var gateway = renderGateway(parentGfx, element, attrs);\n\n var pathData = pathMap.getScaledPath('GATEWAY_COMPLEX', {\n xScaleFactor: 0.5,\n yScaleFactor:0.5,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.46,\n my: 0.26\n }\n });\n\n drawPath(parentGfx, pathData, {\n fill: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n return gateway;\n },\n 'bpmn:DataInput': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var arrowPathData = pathMap.getRawPath('DATA_ARROW');\n\n var dataObject = renderDataObject(parentGfx, element, attrs);\n\n drawPath(parentGfx, arrowPathData, {\n fill: 'none',\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n return dataObject;\n },\n 'bpmn:DataInputAssociation': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n return renderAssociation(parentGfx, element, {\n ...attrs,\n markerEnd: marker('association-end', getFillColor(element, defaultFillColor, attrs.fill), getStrokeColor(element, defaultStrokeColor, attrs.stroke))\n });\n },\n 'bpmn:DataObject': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n return renderDataObject(parentGfx, element, attrs);\n },\n 'bpmn:DataObjectReference': as('bpmn:DataObject'),\n 'bpmn:DataOutput': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var arrowPathData = pathMap.getRawPath('DATA_ARROW');\n\n var dataObject = renderDataObject(parentGfx, element, attrs);\n\n drawPath(parentGfx, arrowPathData, {\n strokeWidth: 1,\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n\n return dataObject;\n },\n 'bpmn:DataOutputAssociation': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n return renderAssociation(parentGfx, element, {\n ...attrs,\n markerEnd: marker('association-end', getFillColor(element, defaultFillColor, attrs.fill), getStrokeColor(element, defaultStrokeColor, attrs.stroke))\n });\n },\n 'bpmn:DataStoreReference': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var dataStorePath = pathMap.getScaledPath('DATA_STORE', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0,\n my: 0.133\n }\n });\n\n return drawPath(parentGfx, dataStorePath, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n fillOpacity: DEFAULT_OPACITY,\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 2\n });\n },\n 'bpmn:EndEvent': function(parentGfx, element, attrs = {}) {\n var { renderIcon = true } = attrs;\n\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var event = renderEvent(parentGfx, element, {\n ...attrs,\n strokeWidth: 4\n });\n\n if (renderIcon) {\n renderEventIcon(element, parentGfx, attrs);\n }\n\n return event;\n },\n 'bpmn:EventBasedGateway': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var semantic = getSemantic(element);\n\n var diamond = renderGateway(parentGfx, element, attrs);\n\n drawCircle(parentGfx, element.width, element.height, element.height * 0.20, {\n fill: getFillColor(element, 'none', attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n var type = semantic.get('eventGatewayType'),\n instantiate = !!semantic.get('instantiate');\n\n function drawEvent() {\n\n var pathData = pathMap.getScaledPath('GATEWAY_EVENT_BASED', {\n xScaleFactor: 0.18,\n yScaleFactor: 0.18,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.36,\n my: 0.44\n }\n });\n\n drawPath(parentGfx, pathData, {\n fill: 'none',\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 2\n });\n }\n\n if (type === 'Parallel') {\n var pathData = pathMap.getScaledPath('GATEWAY_PARALLEL', {\n xScaleFactor: 0.4,\n yScaleFactor: 0.4,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.474,\n my: 0.296\n }\n });\n\n drawPath(parentGfx, pathData, {\n fill: 'none',\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n } else if (type === 'Exclusive') {\n if (!instantiate) {\n drawCircle(parentGfx, element.width, element.height, element.height * 0.26, {\n fill: 'none',\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n }\n\n drawEvent();\n }\n\n\n return diamond;\n },\n 'bpmn:ExclusiveGateway': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var gateway = renderGateway(parentGfx, element, attrs);\n\n var pathData = pathMap.getScaledPath('GATEWAY_EXCLUSIVE', {\n xScaleFactor: 0.4,\n yScaleFactor: 0.4,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.32,\n my: 0.3\n }\n });\n\n var di = getDi(element);\n\n if (di.get('isMarkerVisible')) {\n drawPath(parentGfx, pathData, {\n fill: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n }\n\n return gateway;\n },\n 'bpmn:Gateway': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n return renderGateway(parentGfx, element, attrs);\n },\n 'bpmn:Group': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke',\n 'width',\n 'height'\n ]);\n\n return drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS, {\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1.5,\n strokeDasharray: '10, 6, 0, 6',\n fill: 'none',\n pointerEvents: 'none',\n width: getWidth(element, attrs),\n height: getHeight(element, attrs)\n });\n },\n 'bpmn:InclusiveGateway': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var gateway = renderGateway(parentGfx, element, attrs);\n\n drawCircle(parentGfx, element.width, element.height, element.height * 0.24, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 2.5\n });\n\n return gateway;\n },\n 'bpmn:IntermediateEvent': function(parentGfx, element, attrs = {}) {\n var { renderIcon = true } = attrs;\n\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var outer = renderEvent(parentGfx, element, {\n ...attrs,\n strokeWidth: 1.5\n });\n\n drawCircle(parentGfx, element.width, element.height, INNER_OUTER_DIST, {\n fill: 'none',\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1.5\n });\n\n if (renderIcon) {\n renderEventIcon(element, parentGfx, attrs);\n }\n\n return outer;\n },\n 'bpmn:IntermediateCatchEvent': as('bpmn:IntermediateEvent'),\n 'bpmn:IntermediateThrowEvent': as('bpmn:IntermediateEvent'),\n 'bpmn:Lane': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke',\n 'width',\n 'height'\n ]);\n\n return renderLane(parentGfx, element, {\n ...attrs,\n fillOpacity: LOW_OPACITY\n });\n },\n 'bpmn:ManualTask': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var task = renderTask(parentGfx, element, attrs);\n\n var pathData = pathMap.getScaledPath('TASK_TYPE_MANUAL', {\n abspos: {\n x: 17,\n y: 15\n }\n });\n\n drawPath(parentGfx, pathData, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 0.5\n });\n\n return task;\n },\n 'bpmn:MessageFlow': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var semantic = getSemantic(element),\n di = getDi(element);\n\n var fill = getFillColor(element, defaultFillColor, attrs.fill),\n stroke = getStrokeColor(element, defaultStrokeColor, attrs.stroke);\n\n var path = drawConnectionSegments(parentGfx, element.waypoints, {\n markerEnd: marker('messageflow-end', fill, stroke),\n markerStart: marker('messageflow-start', fill, stroke),\n stroke,\n strokeDasharray: '10, 11',\n strokeWidth: 1.5\n });\n\n if (semantic.get('messageRef')) {\n var midPoint = path.getPointAtLength(path.getTotalLength() / 2);\n\n var markerPathData = pathMap.getScaledPath('MESSAGE_FLOW_MARKER', {\n abspos: {\n x: midPoint.x,\n y: midPoint.y\n }\n });\n\n var messageAttrs = {\n strokeWidth: 1\n };\n\n if (di.get('messageVisibleKind') === 'initiating') {\n messageAttrs.fill = fill;\n messageAttrs.stroke = stroke;\n } else {\n messageAttrs.fill = stroke;\n messageAttrs.stroke = fill;\n }\n\n var message = drawPath(parentGfx, markerPathData, messageAttrs);\n\n var messageRef = semantic.get('messageRef'),\n name = messageRef.get('name');\n\n var label = renderLabel(parentGfx, name, {\n align: 'center-top',\n fitBox: true,\n style: {\n fill: stroke\n }\n });\n\n var messageBounds = message.getBBox(),\n labelBounds = label.getBBox();\n\n var translateX = midPoint.x - labelBounds.width / 2,\n translateY = midPoint.y + messageBounds.height / 2 + ELEMENT_LABEL_DISTANCE;\n\n transform(label, translateX, translateY, 0);\n }\n\n return path;\n },\n 'bpmn:ParallelGateway': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var diamond = renderGateway(parentGfx, element, attrs);\n\n var pathData = pathMap.getScaledPath('GATEWAY_PARALLEL', {\n xScaleFactor: 0.6,\n yScaleFactor: 0.6,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.46,\n my: 0.2\n }\n });\n\n drawPath(parentGfx, pathData, {\n fill: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n return diamond;\n },\n 'bpmn:Participant': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke',\n 'width',\n 'height'\n ]);\n\n var participant = renderLane(parentGfx, element, attrs);\n\n var expandedParticipant = isExpanded(element);\n\n var semantic = getSemantic(element),\n name = semantic.get('name');\n\n if (expandedParticipant) {\n drawLine(parentGfx, [\n {\n x: 30,\n y: 0\n },\n {\n x: 30,\n y: getHeight(element, attrs)\n }\n ], {\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: PARTICIPANT_STROKE_WIDTH\n });\n\n renderLaneLabel(parentGfx, name, element, attrs);\n } else {\n renderLabel(parentGfx, name, {\n box: getBounds(element, attrs),\n align: 'center-middle',\n style: {\n fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor, attrs.stroke)\n }\n });\n }\n\n if (semantic.get('participantMultiplicity')) {\n renderTaskMarker('ParticipantMultiplicityMarker', parentGfx, element, attrs);\n }\n\n return participant;\n },\n 'bpmn:ReceiveTask' : function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var semantic = getSemantic(element);\n\n var task = renderTask(parentGfx, element, attrs);\n\n var pathData;\n\n if (semantic.get('instantiate')) {\n drawCircle(parentGfx, 28, 28, 20 * 0.22, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n pathData = pathMap.getScaledPath('TASK_TYPE_INSTANTIATING_SEND', {\n abspos: {\n x: 7.77,\n y: 9.52\n }\n });\n } else {\n pathData = pathMap.getScaledPath('TASK_TYPE_SEND', {\n xScaleFactor: 0.9,\n yScaleFactor: 0.9,\n containerWidth: 21,\n containerHeight: 14,\n position: {\n mx: 0.3,\n my: 0.4\n }\n });\n }\n\n drawPath(parentGfx, pathData, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n return task;\n },\n 'bpmn:ScriptTask': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var task = renderTask(parentGfx, element, attrs);\n\n var pathData = pathMap.getScaledPath('TASK_TYPE_SCRIPT', {\n abspos: {\n x: 15,\n y: 20\n }\n });\n\n drawPath(parentGfx, pathData, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n return task;\n },\n 'bpmn:SendTask': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var task = renderTask(parentGfx, element, attrs);\n\n var pathData = pathMap.getScaledPath('TASK_TYPE_SEND', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: 21,\n containerHeight: 14,\n position: {\n mx: 0.285,\n my: 0.357\n }\n });\n\n drawPath(parentGfx, pathData, {\n fill: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n stroke: getFillColor(element, defaultFillColor, attrs.fill),\n strokeWidth: 1\n });\n\n return task;\n },\n 'bpmn:SequenceFlow': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var fill = getFillColor(element, defaultFillColor, attrs.fill),\n stroke = getStrokeColor(element, defaultStrokeColor, attrs.stroke);\n\n var connection = drawConnectionSegments(parentGfx, element.waypoints, {\n markerEnd: marker('sequenceflow-end', fill, stroke),\n stroke\n });\n\n var semantic = getSemantic(element);\n\n var { source } = element;\n\n if (source) {\n var sourceSemantic = getSemantic(source);\n\n // conditional flow marker\n if (semantic.get('conditionExpression') && is(sourceSemantic, 'bpmn:Activity')) {\n svgAttr(connection, {\n markerStart: marker('conditional-flow-marker', fill, stroke)\n });\n }\n\n // default marker\n if (sourceSemantic.get('default') && (is(sourceSemantic, 'bpmn:Gateway') || is(sourceSemantic, 'bpmn:Activity')) &&\n sourceSemantic.get('default') === semantic) {\n svgAttr(connection, {\n markerStart: marker('conditional-default-flow-marker', fill, stroke)\n });\n }\n }\n\n return connection;\n },\n 'bpmn:ServiceTask': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var task = renderTask(parentGfx, element, attrs);\n\n drawCircle(parentGfx, 10, 10, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: 'none',\n transform: 'translate(6, 6)'\n });\n\n var pathDataService1 = pathMap.getScaledPath('TASK_TYPE_SERVICE', {\n abspos: {\n x: 12,\n y: 18\n }\n });\n\n drawPath(parentGfx, pathDataService1, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n drawCircle(parentGfx, 10, 10, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: 'none',\n transform: 'translate(11, 10)'\n });\n\n var pathDataService2 = pathMap.getScaledPath('TASK_TYPE_SERVICE', {\n abspos: {\n x: 17,\n y: 22\n }\n });\n\n drawPath(parentGfx, pathDataService2, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1\n });\n\n return task;\n },\n 'bpmn:StartEvent': function(parentGfx, element, attrs = {}) {\n var { renderIcon = true } = attrs;\n\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var semantic = getSemantic(element);\n\n if (!semantic.get('isInterrupting')) {\n attrs = {\n ...attrs,\n strokeDasharray: '6'\n };\n }\n\n var event = renderEvent(parentGfx, element, attrs);\n\n if (renderIcon) {\n renderEventIcon(element, parentGfx, attrs);\n }\n\n return event;\n },\n 'bpmn:SubProcess': function(parentGfx, element, attrs = {}) {\n if (isExpanded(element)) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke',\n 'width',\n 'height'\n ]);\n } else {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n }\n\n return renderSubProcess(parentGfx, element, attrs);\n },\n 'bpmn:Task': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n return renderTask(parentGfx, element, attrs);\n },\n 'bpmn:TextAnnotation': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke',\n 'width',\n 'height'\n ]);\n\n var {\n width,\n height\n } = getBounds(element, attrs);\n\n var textElement = drawRect(parentGfx, width, height, 0, 0, {\n fill: 'none',\n stroke: 'none'\n });\n\n var textPathData = pathMap.getScaledPath('TEXT_ANNOTATION', {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: width,\n containerHeight: height,\n position: {\n mx: 0.0,\n my: 0.0\n }\n });\n\n drawPath(parentGfx, textPathData, {\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke)\n });\n\n var semantic = getSemantic(element),\n text = semantic.get('text') || '';\n\n renderLabel(parentGfx, text, {\n align: 'left-top',\n box: getBounds(element, attrs),\n padding: 7,\n style: {\n fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor, attrs.stroke)\n }\n });\n\n return textElement;\n },\n 'bpmn:Transaction': function(parentGfx, element, attrs = {}) {\n if (isExpanded(element)) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke',\n 'width',\n 'height'\n ]);\n } else {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n }\n\n var outer = renderSubProcess(parentGfx, element, {\n strokeWidth: 1.5,\n ...attrs\n });\n\n var innerAttrs = styles.style([ 'no-fill', 'no-events' ], {\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 1.5\n });\n\n var expanded = isExpanded(element);\n\n if (!expanded) {\n attrs = {};\n }\n\n drawRect(\n parentGfx,\n getWidth(element, attrs),\n getHeight(element, attrs),\n TASK_BORDER_RADIUS - INNER_OUTER_DIST,\n INNER_OUTER_DIST,\n innerAttrs\n );\n\n return outer;\n },\n 'bpmn:UserTask': function(parentGfx, element, attrs = {}) {\n attrs = pickAttrs(attrs, [\n 'fill',\n 'stroke'\n ]);\n\n var task = renderTask(parentGfx, element, attrs);\n\n var x = 15;\n var y = 12;\n\n var pathDataUser1 = pathMap.getScaledPath('TASK_TYPE_USER_1', {\n abspos: {\n x: x,\n y: y\n }\n });\n\n drawPath(parentGfx, pathDataUser1, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 0.5\n });\n\n var pathDataUser2 = pathMap.getScaledPath('TASK_TYPE_USER_2', {\n abspos: {\n x: x,\n y: y\n }\n });\n\n drawPath(parentGfx, pathDataUser2, {\n fill: getFillColor(element, defaultFillColor, attrs.fill),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 0.5\n });\n\n var pathDataUser3 = pathMap.getScaledPath('TASK_TYPE_USER_3', {\n abspos: {\n x: x,\n y: y\n }\n });\n\n drawPath(parentGfx, pathDataUser3, {\n fill: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n stroke: getStrokeColor(element, defaultStrokeColor, attrs.stroke),\n strokeWidth: 0.5\n });\n\n return task;\n },\n 'label': function(parentGfx, element, attrs = {}) {\n return renderExternalLabel(parentGfx, element, attrs);\n }\n };\n\n // extension API, use at your own risk\n this._drawPath = drawPath;\n\n this._renderer = renderer;\n}\n\n\ninherits(BpmnRenderer, BaseRenderer);\n\nBpmnRenderer.$inject = [\n 'config.bpmnRenderer',\n 'eventBus',\n 'styles',\n 'pathMap',\n 'canvas',\n 'textRenderer'\n];\n\n\n/**\n * @param {Element} element\n *\n * @return {boolean}\n */\nBpmnRenderer.prototype.canRender = function(element) {\n return is(element, 'bpmn:BaseElement');\n};\n\n/**\n * Draw shape into parentGfx.\n *\n * @param {SVGElement} parentGfx\n * @param {Element} element\n * @param {Attrs} [attrs]\n *\n * @return {SVGElement} mainGfx\n */\nBpmnRenderer.prototype.drawShape = function(parentGfx, element, attrs = {}) {\n var { type } = element;\n\n var handler = this._renderer(type);\n\n return handler(parentGfx, element, attrs);\n};\n\n/**\n * Draw connection into parentGfx.\n *\n * @param {SVGElement} parentGfx\n * @param {Element} element\n * @param {Attrs} [attrs]\n *\n * @return {SVGElement} mainGfx\n */\nBpmnRenderer.prototype.drawConnection = function(parentGfx, element, attrs = {}) {\n var { type } = element;\n\n var handler = this._renderer(type);\n\n return handler(parentGfx, element, attrs);\n};\n\n/**\n * Get shape path.\n *\n * @param {Element} element\n *\n * @return {string} path\n */\nBpmnRenderer.prototype.getShapePath = function(element) {\n if (is(element, 'bpmn:Event')) {\n return getCirclePath(element);\n }\n\n if (is(element, 'bpmn:Activity')) {\n return getRoundRectPath(element, TASK_BORDER_RADIUS);\n }\n\n if (is(element, 'bpmn:Gateway')) {\n return getDiamondPath(element);\n }\n\n return getRectPath(element);\n};\n\n/**\n * Pick attributes if they exist.\n *\n * @param {Object} attrs\n * @param {string[]} keys\n *\n * @returns {Object}\n */\nfunction pickAttrs(attrs, keys = []) {\n return keys.reduce((pickedAttrs, key) => {\n if (attrs[ key ]) {\n pickedAttrs[ key ] = attrs[ key ];\n }\n\n return pickedAttrs;\n }, {});\n}","import {\n isObject,\n assign,\n forEach,\n reduce\n} from 'min-dash';\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate,\n remove as svgRemove\n} from 'tiny-svg';\n\nimport {\n assignStyle\n} from 'min-dom';\n\n\n/**\n * @typedef {import('../util/Types').Dimensions} Dimensions\n *\n * @typedef { {\n * top: number;\n * left: number;\n * right: number;\n * bottom: number;\n * } } Padding\n *\n * @typedef { number | Partial } PaddingConfig\n *\n * @typedef { {\n * horizontal: 'center' | 'left';\n * vertical: 'top' | 'center';\n * } } Alignment\n *\n * @typedef { 'center-middle' | 'center-top' } AlignmentConfig\n *\n * @typedef { Partial<{\n * align: AlignmentConfig;\n * style: Record;\n * padding: PaddingConfig;\n * }> } BaseTextConfig\n *\n * @typedef { BaseTextConfig & Partial<{\n * size: Dimensions;\n * }> } TextConfig\n *\n * @typedef { BaseTextConfig & Partial<{\n * box: Dimensions;\n * fitBox: boolean;\n * }> } TextLayoutConfig\n *\n * @typedef { Dimensions & {\n * text: string;\n * } } LineDescriptor\n */\n\nvar DEFAULT_BOX_PADDING = 0;\n\nvar DEFAULT_LABEL_SIZE = {\n width: 150,\n height: 50\n};\n\n\n/**\n * @param {AlignmentConfig} align\n * @return {Alignment}\n */\nfunction parseAlign(align) {\n\n var parts = align.split('-');\n\n return {\n horizontal: parts[0] || 'center',\n vertical: parts[1] || 'top'\n };\n}\n\n/**\n * @param {PaddingConfig} padding\n *\n * @return {Padding}\n */\nfunction parsePadding(padding) {\n\n if (isObject(padding)) {\n return assign({ top: 0, left: 0, right: 0, bottom: 0 }, padding);\n } else {\n return {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n }\n}\n\n/**\n * @param {string} text\n * @param {SVGTextElement} fakeText\n *\n * @return {import('../util/Types').Dimensions}\n */\nfunction getTextBBox(text, fakeText) {\n\n fakeText.textContent = text;\n\n var textBBox;\n\n try {\n var bbox,\n emptyLine = text === '';\n\n // add dummy text, when line is empty to\n // determine correct height\n fakeText.textContent = emptyLine ? 'dummy' : text;\n\n textBBox = fakeText.getBBox();\n\n // take text rendering related horizontal\n // padding into account\n bbox = {\n width: textBBox.width + textBBox.x * 2,\n height: textBBox.height\n };\n\n if (emptyLine) {\n\n // correct width\n bbox.width = 0;\n }\n\n return bbox;\n } catch (e) {\n return { width: 0, height: 0 };\n }\n}\n\n\n/**\n * Layout the next line and return the layouted element.\n *\n * Alters the lines passed.\n *\n * @param {string[]} lines\n * @param {number} maxWidth\n * @param {SVGTextElement} fakeText\n *\n * @return {LineDescriptor} the line descriptor\n */\nfunction layoutNext(lines, maxWidth, fakeText) {\n\n var originalLine = lines.shift(),\n fitLine = originalLine;\n\n var textBBox;\n\n for (;;) {\n textBBox = getTextBBox(fitLine, fakeText);\n\n textBBox.width = fitLine ? textBBox.width : 0;\n\n // try to fit\n if (fitLine === ' ' || fitLine === '' || textBBox.width < Math.round(maxWidth) || fitLine.length < 2) {\n return fit(lines, fitLine, originalLine, textBBox);\n }\n\n fitLine = shortenLine(fitLine, textBBox.width, maxWidth);\n }\n}\n\n/**\n * @param {string[]} lines\n * @param {string} fitLine\n * @param {string} originalLine\n * @param {Dimensions} textBBox\n *\n * @return {LineDescriptor}\n */\nfunction fit(lines, fitLine, originalLine, textBBox) {\n if (fitLine.length < originalLine.length) {\n var remainder = originalLine.slice(fitLine.length).trim();\n\n lines.unshift(remainder);\n }\n\n return {\n width: textBBox.width,\n height: textBBox.height,\n text: fitLine\n };\n}\n\nvar SOFT_BREAK = '\\u00AD';\n\n\n/**\n * Shortens a line based on spacing and hyphens.\n * Returns the shortened result on success.\n *\n * @param {string} line\n * @param {number} maxLength the maximum characters of the string\n *\n * @return {string} the shortened string\n */\nfunction semanticShorten(line, maxLength) {\n\n var parts = line.split(/(\\s|-|\\u00AD)/g),\n part,\n shortenedParts = [],\n length = 0;\n\n // try to shorten via break chars\n if (parts.length > 1) {\n\n while ((part = parts.shift())) {\n if (part.length + length < maxLength) {\n shortenedParts.push(part);\n length += part.length;\n } else {\n\n // remove previous part, too if hyphen does not fit anymore\n if (part === '-' || part === SOFT_BREAK) {\n shortenedParts.pop();\n }\n\n break;\n }\n }\n }\n\n var last = shortenedParts[shortenedParts.length - 1];\n\n // translate trailing soft break to actual hyphen\n if (last && last === SOFT_BREAK) {\n shortenedParts[shortenedParts.length - 1] = '-';\n }\n\n return shortenedParts.join('');\n}\n\n\n/**\n * @param {string} line\n * @param {number} width\n * @param {number} maxWidth\n *\n * @return {string}\n */\nfunction shortenLine(line, width, maxWidth) {\n var length = Math.max(line.length * (maxWidth / width), 1);\n\n // try to shorten semantically (i.e. based on spaces and hyphens)\n var shortenedLine = semanticShorten(line, length);\n\n if (!shortenedLine) {\n\n // force shorten by cutting the long word\n shortenedLine = line.slice(0, Math.max(Math.round(length - 1), 1));\n }\n\n return shortenedLine;\n}\n\n\n/**\n * @return {SVGSVGElement}\n */\nfunction getHelperSvg() {\n var helperSvg = document.getElementById('helper-svg');\n\n if (!helperSvg) {\n helperSvg = svgCreate('svg');\n\n svgAttr(helperSvg, {\n id: 'helper-svg'\n });\n\n assignStyle(helperSvg, {\n visibility: 'hidden',\n position: 'fixed',\n width: 0,\n height: 0\n });\n\n document.body.appendChild(helperSvg);\n }\n\n return helperSvg;\n}\n\n\n/**\n * Creates a new label utility\n *\n * @param {TextConfig} config\n */\nexport default function Text(config) {\n\n this._config = assign({}, {\n size: DEFAULT_LABEL_SIZE,\n padding: DEFAULT_BOX_PADDING,\n style: {},\n align: 'center-top'\n }, config || {});\n}\n\n/**\n * Returns the layouted text as an SVG element.\n *\n * @param {string} text\n * @param {TextLayoutConfig} options\n *\n * @return {SVGElement}\n */\nText.prototype.createText = function(text, options) {\n return this.layoutText(text, options).element;\n};\n\n/**\n * Returns a labels layouted dimensions.\n *\n * @param {string} text to layout\n * @param {TextLayoutConfig} options\n *\n * @return {Dimensions}\n */\nText.prototype.getDimensions = function(text, options) {\n return this.layoutText(text, options).dimensions;\n};\n\n/**\n * Creates and returns a label and its bounding box.\n *\n * @param {string} text the text to render on the label\n * @param {TextLayoutConfig} options\n *\n * @return { {\n * element: SVGElement,\n * dimensions: Dimensions\n * } }\n */\nText.prototype.layoutText = function(text, options) {\n var box = assign({}, this._config.size, options.box),\n style = assign({}, this._config.style, options.style),\n align = parseAlign(options.align || this._config.align),\n padding = parsePadding(options.padding !== undefined ? options.padding : this._config.padding),\n fitBox = options.fitBox || false;\n\n var lineHeight = getLineHeight(style);\n\n // we split text by lines and normalize\n // {soft break} + {line break} => { line break }\n var lines = text.split(/\\u00AD?\\r?\\n/),\n layouted = [];\n\n var maxWidth = box.width - padding.left - padding.right;\n\n // ensure correct rendering by attaching helper text node to invisible SVG\n var helperText = svgCreate('text');\n svgAttr(helperText, { x: 0, y: 0 });\n svgAttr(helperText, style);\n\n var helperSvg = getHelperSvg();\n\n svgAppend(helperSvg, helperText);\n\n while (lines.length) {\n layouted.push(layoutNext(lines, maxWidth, helperText));\n }\n\n if (align.vertical === 'middle') {\n padding.top = padding.bottom = 0;\n }\n\n var totalHeight = reduce(layouted, function(sum, line, idx) {\n return sum + (lineHeight || line.height);\n }, 0) + padding.top + padding.bottom;\n\n var maxLineWidth = reduce(layouted, function(sum, line, idx) {\n return line.width > sum ? line.width : sum;\n }, 0);\n\n // the y position of the next line\n var y = padding.top;\n\n if (align.vertical === 'middle') {\n y += (box.height - totalHeight) / 2;\n }\n\n // magic number initial offset\n y -= (lineHeight || layouted[0].height) / 4;\n\n\n var textElement = svgCreate('text');\n\n svgAttr(textElement, style);\n\n // layout each line taking into account that parent\n // shape might resize to fit text size\n forEach(layouted, function(line) {\n\n var x;\n\n y += (lineHeight || line.height);\n\n switch (align.horizontal) {\n case 'left':\n x = padding.left;\n break;\n\n case 'right':\n x = ((fitBox ? maxLineWidth : maxWidth)\n - padding.right - line.width);\n break;\n\n default:\n\n // aka center\n x = Math.max((((fitBox ? maxLineWidth : maxWidth)\n - line.width) / 2 + padding.left), 0);\n }\n\n var tspan = svgCreate('tspan');\n svgAttr(tspan, { x: x, y: y });\n\n tspan.textContent = line.text;\n\n svgAppend(textElement, tspan);\n });\n\n svgRemove(helperText);\n\n var dimensions = {\n width: maxLineWidth,\n height: totalHeight\n };\n\n return {\n dimensions: dimensions,\n element: textElement\n };\n};\n\n\nfunction getLineHeight(style) {\n if ('fontSize' in style && 'lineHeight' in style) {\n return style.lineHeight * parseInt(style.fontSize, 10);\n }\n}\n","import { assign } from 'min-dash';\n\nimport TextUtil from 'diagram-js/lib/util/Text';\n\nvar DEFAULT_FONT_SIZE = 12;\nvar LINE_HEIGHT_RATIO = 1.2;\n\nvar MIN_TEXT_ANNOTATION_HEIGHT = 30;\n\n/**\n * @typedef { {\n * fontFamily: string;\n * fontSize: number;\n * fontWeight: string;\n * lineHeight: number;\n * } } TextRendererStyle\n *\n * @typedef { {\n * defaultStyle?: Partial;\n * externalStyle?: Partial;\n * } } TextRendererConfig\n *\n * @typedef { import('diagram-js/lib/util/Text').TextLayoutConfig } TextLayoutConfig\n *\n * @typedef { import('diagram-js/lib/util/Types').Rect } Rect\n */\n\n\n/**\n * Renders text and computes text bounding boxes.\n *\n * @param {TextRendererConfig} [config]\n */\nexport default function TextRenderer(config) {\n\n var defaultStyle = assign({\n fontFamily: 'Arial, sans-serif',\n fontSize: DEFAULT_FONT_SIZE,\n fontWeight: 'normal',\n lineHeight: LINE_HEIGHT_RATIO\n }, config && config.defaultStyle || {});\n\n var fontSize = parseInt(defaultStyle.fontSize, 10) - 1;\n\n var externalStyle = assign({}, defaultStyle, {\n fontSize: fontSize\n }, config && config.externalStyle || {});\n\n var textUtil = new TextUtil({\n style: defaultStyle\n });\n\n /**\n * Get the new bounds of an externally rendered,\n * layouted label.\n *\n * @param {Rect} bounds\n * @param {string} text\n *\n * @return {Rect}\n */\n this.getExternalLabelBounds = function(bounds, text) {\n\n var layoutedDimensions = textUtil.getDimensions(text, {\n box: {\n width: 90,\n height: 30\n },\n style: externalStyle\n });\n\n // resize label shape to fit label text\n return {\n x: Math.round(bounds.x + bounds.width / 2 - layoutedDimensions.width / 2),\n y: Math.round(bounds.y),\n width: Math.ceil(layoutedDimensions.width),\n height: Math.ceil(layoutedDimensions.height)\n };\n\n };\n\n /**\n * Get the new bounds of text annotation.\n *\n * @param {Rect} bounds\n * @param {string} text\n *\n * @return {Rect}\n */\n this.getTextAnnotationBounds = function(bounds, text) {\n\n var layoutedDimensions = textUtil.getDimensions(text, {\n box: bounds,\n style: defaultStyle,\n align: 'left-top',\n padding: 5\n });\n\n return {\n x: bounds.x,\n y: bounds.y,\n width: bounds.width,\n height: Math.max(MIN_TEXT_ANNOTATION_HEIGHT, Math.round(layoutedDimensions.height))\n };\n };\n\n /**\n * Create a layouted text element.\n *\n * @param {string} text\n * @param {TextLayoutConfig} [options]\n *\n * @return {SVGElement} rendered text\n */\n this.createText = function(text, options) {\n return textUtil.createText(text, options || {});\n };\n\n /**\n * Get default text style.\n */\n this.getDefaultStyle = function() {\n return defaultStyle;\n };\n\n /**\n * Get the external text style.\n */\n this.getExternalStyle = function() {\n return externalStyle;\n };\n\n}\n\nTextRenderer.$inject = [\n 'config.textRenderer'\n];","/**\n * Map containing SVG paths needed by BpmnRenderer\n */\nexport default function PathMap() {\n\n /**\n * Contains a map of path elements\n *\n *

Path definition

\n * A parameterized path is defined like this:\n *
\n   * 'GATEWAY_PARALLEL': {\n   *   d: 'm {mx},{my} {e.x0},0 0,{e.x1} {e.x1},0 0,{e.y0} -{e.x1},0 0,{e.y1} ' +\n          '-{e.x0},0 0,-{e.y1} -{e.x1},0 0,-{e.y0} {e.x1},0 z',\n   *   height: 17.5,\n   *   width:  17.5,\n   *   heightElements: [2.5, 7.5],\n   *   widthElements: [2.5, 7.5]\n   * }\n   * 
\n *

It's important to specify a correct height and width for the path as the scaling\n * is based on the ratio between the specified height and width in this object and the\n * height and width that is set as scale target (Note x,y coordinates will be scaled with\n * individual ratios).

\n *

The 'heightElements' and 'widthElements' array must contain the values that will be scaled.\n * The scaling is based on the computed ratios.\n * Coordinates on the y axis should be in the heightElement's array, they will be scaled using\n * the computed ratio coefficient.\n * In the parameterized path the scaled values can be accessed through the 'e' object in {} brackets.\n *

    \n *
  • The values for the y axis can be accessed in the path string using {e.y0}, {e.y1}, ....
  • \n *
  • The values for the x axis can be accessed in the path string using {e.x0}, {e.x1}, ....
  • \n *
\n * The numbers x0, x1 respectively y0, y1, ... map to the corresponding array index.\n *

\n */\n this.pathMap = {\n 'EVENT_MESSAGE': {\n d: 'm {mx},{my} l 0,{e.y1} l {e.x1},0 l 0,-{e.y1} z l {e.x0},{e.y0} l {e.x0},-{e.y0}',\n height: 36,\n width: 36,\n heightElements: [ 6, 14 ],\n widthElements: [ 10.5, 21 ]\n },\n 'EVENT_SIGNAL': {\n d: 'M {mx},{my} l {e.x0},{e.y0} l -{e.x1},0 Z',\n height: 36,\n width: 36,\n heightElements: [ 18 ],\n widthElements: [ 10, 20 ]\n },\n 'EVENT_ESCALATION': {\n d: 'M {mx},{my} l {e.x0},{e.y0} l -{e.x0},-{e.y1} l -{e.x0},{e.y1} Z',\n height: 36,\n width: 36,\n heightElements: [ 20, 7 ],\n widthElements: [ 8 ]\n },\n 'EVENT_CONDITIONAL': {\n d: 'M {e.x0},{e.y0} l {e.x1},0 l 0,{e.y2} l -{e.x1},0 Z ' +\n 'M {e.x2},{e.y3} l {e.x0},0 ' +\n 'M {e.x2},{e.y4} l {e.x0},0 ' +\n 'M {e.x2},{e.y5} l {e.x0},0 ' +\n 'M {e.x2},{e.y6} l {e.x0},0 ' +\n 'M {e.x2},{e.y7} l {e.x0},0 ' +\n 'M {e.x2},{e.y8} l {e.x0},0 ',\n height: 36,\n width: 36,\n heightElements: [ 8.5, 14.5, 18, 11.5, 14.5, 17.5, 20.5, 23.5, 26.5 ],\n widthElements: [ 10.5, 14.5, 12.5 ]\n },\n 'EVENT_LINK': {\n d: 'm {mx},{my} 0,{e.y0} -{e.x1},0 0,{e.y1} {e.x1},0 0,{e.y0} {e.x0},-{e.y2} -{e.x0},-{e.y2} z',\n height: 36,\n width: 36,\n heightElements: [ 4.4375, 6.75, 7.8125 ],\n widthElements: [ 9.84375, 13.5 ]\n },\n 'EVENT_ERROR': {\n d: 'm {mx},{my} {e.x0},-{e.y0} {e.x1},-{e.y1} {e.x2},{e.y2} {e.x3},-{e.y3} -{e.x4},{e.y4} -{e.x5},-{e.y5} z',\n height: 36,\n width: 36,\n heightElements: [ 0.023, 8.737, 8.151, 16.564, 10.591, 8.714 ],\n widthElements: [ 0.085, 6.672, 6.97, 4.273, 5.337, 6.636 ]\n },\n 'EVENT_CANCEL_45': {\n d: 'm {mx},{my} -{e.x1},0 0,{e.x0} {e.x1},0 0,{e.y1} {e.x0},0 ' +\n '0,-{e.y1} {e.x1},0 0,-{e.y0} -{e.x1},0 0,-{e.y1} -{e.x0},0 z',\n height: 36,\n width: 36,\n heightElements: [ 4.75, 8.5 ],\n widthElements: [ 4.75, 8.5 ]\n },\n 'EVENT_COMPENSATION': {\n d: 'm {mx},{my} {e.x0},-{e.y0} 0,{e.y1} z m {e.x1},-{e.y2} {e.x2},-{e.y3} 0,{e.y1} -{e.x2},-{e.y3} z',\n height: 36,\n width: 36,\n heightElements: [ 6.5, 13, 0.4, 6.1 ],\n widthElements: [ 9, 9.3, 8.7 ]\n },\n 'EVENT_TIMER_WH': {\n d: 'M {mx},{my} l {e.x0},-{e.y0} m -{e.x0},{e.y0} l {e.x1},{e.y1} ',\n height: 36,\n width: 36,\n heightElements: [ 10, 2 ],\n widthElements: [ 3, 7 ]\n },\n 'EVENT_TIMER_LINE': {\n d: 'M {mx},{my} ' +\n 'm {e.x0},{e.y0} l -{e.x1},{e.y1} ',\n height: 36,\n width: 36,\n heightElements: [ 10, 3 ],\n widthElements: [ 0, 0 ]\n },\n 'EVENT_MULTIPLE': {\n d:'m {mx},{my} {e.x1},-{e.y0} {e.x1},{e.y0} -{e.x0},{e.y1} -{e.x2},0 z',\n height: 36,\n width: 36,\n heightElements: [ 6.28099, 12.56199 ],\n widthElements: [ 3.1405, 9.42149, 12.56198 ]\n },\n 'EVENT_PARALLEL_MULTIPLE': {\n d:'m {mx},{my} {e.x0},0 0,{e.y1} {e.x1},0 0,{e.y0} -{e.x1},0 0,{e.y1} ' +\n '-{e.x0},0 0,-{e.y1} -{e.x1},0 0,-{e.y0} {e.x1},0 z',\n height: 36,\n width: 36,\n heightElements: [ 2.56228, 7.68683 ],\n widthElements: [ 2.56228, 7.68683 ]\n },\n 'GATEWAY_EXCLUSIVE': {\n d:'m {mx},{my} {e.x0},{e.y0} {e.x1},{e.y0} {e.x2},0 {e.x4},{e.y2} ' +\n '{e.x4},{e.y1} {e.x2},0 {e.x1},{e.y3} {e.x0},{e.y3} ' +\n '{e.x3},0 {e.x5},{e.y1} {e.x5},{e.y2} {e.x3},0 z',\n height: 17.5,\n width: 17.5,\n heightElements: [ 8.5, 6.5312, -6.5312, -8.5 ],\n widthElements: [ 6.5, -6.5, 3, -3, 5, -5 ]\n },\n 'GATEWAY_PARALLEL': {\n d:'m {mx},{my} 0,{e.y1} -{e.x1},0 0,{e.y0} {e.x1},0 0,{e.y1} {e.x0},0 ' +\n '0,-{e.y1} {e.x1},0 0,-{e.y0} -{e.x1},0 0,-{e.y1} -{e.x0},0 z',\n height: 30,\n width: 30,\n heightElements: [ 5, 12.5 ],\n widthElements: [ 5, 12.5 ]\n },\n 'GATEWAY_EVENT_BASED': {\n d:'m {mx},{my} {e.x0},{e.y0} {e.x0},{e.y1} {e.x1},{e.y2} {e.x2},0 z',\n height: 11,\n width: 11,\n heightElements: [ -6, 6, 12, -12 ],\n widthElements: [ 9, -3, -12 ]\n },\n 'GATEWAY_COMPLEX': {\n d:'m {mx},{my} 0,{e.y0} -{e.x0},-{e.y1} -{e.x1},{e.y2} {e.x0},{e.y1} -{e.x2},0 0,{e.y3} ' +\n '{e.x2},0 -{e.x0},{e.y1} l {e.x1},{e.y2} {e.x0},-{e.y1} 0,{e.y0} {e.x3},0 0,-{e.y0} {e.x0},{e.y1} ' +\n '{e.x1},-{e.y2} -{e.x0},-{e.y1} {e.x2},0 0,-{e.y3} -{e.x2},0 {e.x0},-{e.y1} -{e.x1},-{e.y2} ' +\n '-{e.x0},{e.y1} 0,-{e.y0} -{e.x3},0 z',\n height: 17.125,\n width: 17.125,\n heightElements: [ 4.875, 3.4375, 2.125, 3 ],\n widthElements: [ 3.4375, 2.125, 4.875, 3 ]\n },\n 'DATA_OBJECT_PATH': {\n d:'m 0,0 {e.x1},0 {e.x0},{e.y0} 0,{e.y1} -{e.x2},0 0,-{e.y2} {e.x1},0 0,{e.y0} {e.x0},0',\n height: 61,\n width: 51,\n heightElements: [ 10, 50, 60 ],\n widthElements: [ 10, 40, 50, 60 ]\n },\n 'DATA_OBJECT_COLLECTION_PATH': {\n d: 'm{mx},{my} m 3,2 l 0,10 m 3,-10 l 0,10 m 3,-10 l 0,10',\n height: 10,\n width: 10,\n heightElements: [],\n widthElements: []\n },\n 'DATA_ARROW': {\n d:'m 5,9 9,0 0,-3 5,5 -5,5 0,-3 -9,0 z',\n height: 61,\n width: 51,\n heightElements: [],\n widthElements: []\n },\n 'DATA_STORE': {\n d:'m {mx},{my} ' +\n 'l 0,{e.y2} ' +\n 'c {e.x0},{e.y1} {e.x1},{e.y1} {e.x2},0 ' +\n 'l 0,-{e.y2} ' +\n 'c -{e.x0},-{e.y1} -{e.x1},-{e.y1} -{e.x2},0' +\n 'c {e.x0},{e.y1} {e.x1},{e.y1} {e.x2},0 ' +\n 'm -{e.x2},{e.y0}' +\n 'c {e.x0},{e.y1} {e.x1},{e.y1} {e.x2},0' +\n 'm -{e.x2},{e.y0}' +\n 'c {e.x0},{e.y1} {e.x1},{e.y1} {e.x2},0',\n height: 61,\n width: 61,\n heightElements: [ 7, 10, 45 ],\n widthElements: [ 2, 58, 60 ]\n },\n 'TEXT_ANNOTATION': {\n d: 'm {mx}, {my} m 10,0 l -10,0 l 0,{e.y0} l 10,0',\n height: 30,\n width: 10,\n heightElements: [ 30 ],\n widthElements: [ 10 ]\n },\n 'MARKER_SUB_PROCESS': {\n d: 'm{mx},{my} m 7,2 l 0,10 m -5,-5 l 10,0',\n height: 10,\n width: 10,\n heightElements: [],\n widthElements: []\n },\n 'MARKER_PARALLEL': {\n d: 'm{mx},{my} m 3,2 l 0,10 m 3,-10 l 0,10 m 3,-10 l 0,10',\n height: 10,\n width: 10,\n heightElements: [],\n widthElements: []\n },\n 'MARKER_SEQUENTIAL': {\n d: 'm{mx},{my} m 0,3 l 10,0 m -10,3 l 10,0 m -10,3 l 10,0',\n height: 10,\n width: 10,\n heightElements: [],\n widthElements: []\n },\n 'MARKER_COMPENSATION': {\n d: 'm {mx},{my} 7,-5 0,10 z m 7.1,-0.3 6.9,-4.7 0,10 -6.9,-4.7 z',\n height: 10,\n width: 21,\n heightElements: [],\n widthElements: []\n },\n 'MARKER_LOOP': {\n d: 'm {mx},{my} c 3.526979,0 6.386161,-2.829858 6.386161,-6.320661 0,-3.490806 -2.859182,-6.320661 ' +\n '-6.386161,-6.320661 -3.526978,0 -6.38616,2.829855 -6.38616,6.320661 0,1.745402 ' +\n '0.714797,3.325567 1.870463,4.469381 0.577834,0.571908 1.265885,1.034728 2.029916,1.35457 ' +\n 'l -0.718163,-3.909793 m 0.718163,3.909793 -3.885211,0.802902',\n height: 13.9,\n width: 13.7,\n heightElements: [],\n widthElements: []\n },\n 'MARKER_ADHOC': {\n d: 'm {mx},{my} m 0.84461,2.64411 c 1.05533,-1.23780996 2.64337,-2.07882 4.29653,-1.97997996 2.05163,0.0805 ' +\n '3.85579,1.15803 5.76082,1.79107 1.06385,0.34139996 2.24454,0.1438 3.18759,-0.43767 0.61743,-0.33642 ' +\n '1.2775,-0.64078 1.7542,-1.17511 0,0.56023 0,1.12046 0,1.6807 -0.98706,0.96237996 -2.29792,1.62393996 ' +\n '-3.6918,1.66181996 -1.24459,0.0927 -2.46671,-0.2491 -3.59505,-0.74812 -1.35789,-0.55965 ' +\n '-2.75133,-1.33436996 -4.27027,-1.18121996 -1.37741,0.14601 -2.41842,1.13685996 -3.44288,1.96782996 z',\n height: 4,\n width: 15,\n heightElements: [],\n widthElements: []\n },\n 'TASK_TYPE_SEND': {\n d: 'm {mx},{my} l 0,{e.y1} l {e.x1},0 l 0,-{e.y1} z l {e.x0},{e.y0} l {e.x0},-{e.y0}',\n height: 14,\n width: 21,\n heightElements: [ 6, 14 ],\n widthElements: [ 10.5, 21 ]\n },\n 'TASK_TYPE_SCRIPT': {\n d: 'm {mx},{my} c 9.966553,-6.27276 -8.000926,-7.91932 2.968968,-14.938 l -8.802728,0 ' +\n 'c -10.969894,7.01868 6.997585,8.66524 -2.968967,14.938 z ' +\n 'm -7,-12 l 5,0 ' +\n 'm -4.5,3 l 4.5,0 ' +\n 'm -3,3 l 5,0' +\n 'm -4,3 l 5,0',\n height: 15,\n width: 12.6,\n heightElements: [ 6, 14 ],\n widthElements: [ 10.5, 21 ]\n },\n 'TASK_TYPE_USER_1': {\n d: 'm {mx},{my} c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 ' +\n '-4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 ' +\n '0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 ' +\n 'h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 z' +\n 'm -8,6 l 0,5.5 m 11,0 l 0,-5'\n },\n 'TASK_TYPE_USER_2': {\n d: 'm {mx},{my} m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 ' +\n '-2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 '\n },\n 'TASK_TYPE_USER_3': {\n d: 'm {mx},{my} m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 ' +\n '4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 ' +\n '-4.20799998,3.36699999 -4.20699998,4.34799999 z'\n },\n 'TASK_TYPE_MANUAL': {\n d: 'm {mx},{my} c 0.234,-0.01 5.604,0.008 8.029,0.004 0.808,0 1.271,-0.172 1.417,-0.752 0.227,-0.898 ' +\n '-0.334,-1.314 -1.338,-1.316 -2.467,-0.01 -7.886,-0.004 -8.108,-0.004 -0.014,-0.079 0.016,-0.533 0,-0.61 ' +\n '0.195,-0.042 8.507,0.006 9.616,0.002 0.877,-0.007 1.35,-0.438 1.353,-1.208 0.003,-0.768 -0.479,-1.09 ' +\n '-1.35,-1.091 -2.968,-0.002 -9.619,-0.013 -9.619,-0.013 v -0.591 c 0,0 5.052,-0.016 7.225,-0.016 ' +\n '0.888,-0.002 1.354,-0.416 1.351,-1.193 -0.006,-0.761 -0.492,-1.196 -1.361,-1.196 -3.473,-0.005 ' +\n '-10.86,-0.003 -11.0829995,-0.003 -0.022,-0.047 -0.045,-0.094 -0.069,-0.139 0.3939995,-0.319 ' +\n '2.0409995,-1.626 2.4149995,-2.017 0.469,-0.4870005 0.519,-1.1650005 0.162,-1.6040005 -0.414,-0.511 ' +\n '-0.973,-0.5 -1.48,-0.236 -1.4609995,0.764 -6.5999995,3.6430005 -7.7329995,4.2710005 -0.9,0.499 ' +\n '-1.516,1.253 -1.882,2.19 -0.37000002,0.95 -0.17,2.01 -0.166,2.979 0.004,0.718 -0.27300002,1.345 ' +\n '-0.055,2.063 0.629,2.087 2.425,3.312 4.859,3.318 4.6179995,0.014 9.2379995,-0.139 13.8569995,-0.158 ' +\n '0.755,-0.004 1.171,-0.301 1.182,-1.033 0.012,-0.754 -0.423,-0.969 -1.183,-0.973 -1.778,-0.01 ' +\n '-5.824,-0.004 -6.04,-0.004 10e-4,-0.084 0.003,-0.586 10e-4,-0.67 z'\n },\n 'TASK_TYPE_INSTANTIATING_SEND': {\n d: 'm {mx},{my} l 0,8.4 l 12.6,0 l 0,-8.4 z l 6.3,3.6 l 6.3,-3.6'\n },\n 'TASK_TYPE_SERVICE': {\n d: 'm {mx},{my} v -1.71335 c 0.352326,-0.0705 0.703932,-0.17838 1.047628,-0.32133 ' +\n '0.344416,-0.14465 0.665822,-0.32133 0.966377,-0.52145 l 1.19431,1.18005 1.567487,-1.57688 ' +\n '-1.195028,-1.18014 c 0.403376,-0.61394 0.683079,-1.29908 0.825447,-2.01824 l 1.622133,-0.01 ' +\n 'v -2.2196 l -1.636514,0.01 c -0.07333,-0.35153 -0.178319,-0.70024 -0.323564,-1.04372 ' +\n '-0.145244,-0.34406 -0.321407,-0.6644 -0.522735,-0.96217 l 1.131035,-1.13631 -1.583305,-1.56293 ' +\n '-1.129598,1.13589 c -0.614052,-0.40108 -1.302883,-0.68093 -2.022633,-0.82247 l 0.0093,-1.61852 ' +\n 'h -2.241173 l 0.0042,1.63124 c -0.353763,0.0736 -0.705369,0.17977 -1.049785,0.32371 -0.344415,0.14437 ' +\n '-0.665102,0.32092 -0.9635006,0.52046 l -1.1698628,-1.15823 -1.5667691,1.5792 1.1684265,1.15669 ' +\n 'c -0.4026573,0.61283 -0.68308,1.29797 -0.8247287,2.01713 l -1.6588041,0.003 v 2.22174 ' +\n 'l 1.6724648,-0.006 c 0.073327,0.35077 0.1797598,0.70243 0.3242851,1.04472 0.1452428,0.34448 ' +\n '0.3214064,0.6644 0.5227339,0.96066 l -1.1993431,1.19723 1.5840256,1.56011 1.1964668,-1.19348 ' +\n 'c 0.6140517,0.40346 1.3028827,0.68232 2.0233517,0.82331 l 7.19e-4,1.69892 h 2.226848 z ' +\n 'm 0.221462,-3.9957 c -1.788948,0.7502 -3.8576,-0.0928 -4.6097055,-1.87438 -0.7521065,-1.78321 ' +\n '0.090598,-3.84627 1.8802645,-4.59604 1.78823,-0.74936 3.856881,0.0929 4.608987,1.87437 ' +\n '0.752106,1.78165 -0.0906,3.84612 -1.879546,4.59605 z'\n },\n 'TASK_TYPE_SERVICE_FILL': {\n d: 'm {mx},{my} c -1.788948,0.7502 -3.8576,-0.0928 -4.6097055,-1.87438 -0.7521065,-1.78321 ' +\n '0.090598,-3.84627 1.8802645,-4.59604 1.78823,-0.74936 3.856881,0.0929 4.608987,1.87437 ' +\n '0.752106,1.78165 -0.0906,3.84612 -1.879546,4.59605 z'\n },\n 'TASK_TYPE_BUSINESS_RULE_HEADER': {\n d: 'm {mx},{my} 0,4 20,0 0,-4 z'\n },\n 'TASK_TYPE_BUSINESS_RULE_MAIN': {\n d: 'm {mx},{my} 0,12 20,0 0,-12 z' +\n 'm 0,8 l 20,0 ' +\n 'm -13,-4 l 0,8'\n },\n 'MESSAGE_FLOW_MARKER': {\n d: 'm {mx},{my} m -10.5 ,-7 l 0,14 l 21,0 l 0,-14 z l 10.5,6 l 10.5,-6'\n }\n };\n\n /**\n * Return raw path for the given ID.\n *\n * @param {string} pathId\n *\n * @return {string} raw path\n */\n this.getRawPath = function getRawPath(pathId) {\n return this.pathMap[pathId].d;\n };\n\n /**\n * Scales the path to the given height and width.\n *

Use case

\n *

Use case is to scale the content of elements (event, gateways) based\n * on the element bounding box's size.\n *

\n *

Why not transform

\n *

Scaling a path with transform() will also scale the stroke and IE does not support\n * the option 'non-scaling-stroke' to prevent this.\n * Also there are use cases where only some parts of a path should be\n * scaled.

\n *\n * @param {string} pathId The ID of the path.\n * @param {Object} param

\n * Example param object scales the path to 60% size of the container (data.width, data.height).\n *

\n   *   {\n   *     xScaleFactor: 0.6,\n   *     yScaleFactor:0.6,\n   *     containerWidth: data.width,\n   *     containerHeight: data.height,\n   *     position: {\n   *       mx: 0.46,\n   *       my: 0.2,\n   *     }\n   *   }\n   *   
\n *
    \n *
  • targetpathwidth = xScaleFactor * containerWidth
  • \n *
  • targetpathheight = yScaleFactor * containerHeight
  • \n *
  • Position is used to set the starting coordinate of the path. M is computed:\n *
      \n *
    • position.x * containerWidth
    • \n *
    • position.y * containerHeight
    • \n *
    \n * Center of the container
     position: {\n   *       mx: 0.5,\n   *       my: 0.5,\n   *     }
    \n * Upper left corner of the container\n *
     position: {\n   *       mx: 0.0,\n   *       my: 0.0,\n   *     }
    \n *
  • \n *
\n *

\n *\n * @return {string} scaled path\n */\n this.getScaledPath = function getScaledPath(pathId, param) {\n var rawPath = this.pathMap[pathId];\n\n // positioning\n // compute the start point of the path\n var mx, my;\n\n if (param.abspos) {\n mx = param.abspos.x;\n my = param.abspos.y;\n } else {\n mx = param.containerWidth * param.position.mx;\n my = param.containerHeight * param.position.my;\n }\n\n var coordinates = {}; // map for the scaled coordinates\n if (param.position) {\n\n // path\n var heightRatio = (param.containerHeight / rawPath.height) * param.yScaleFactor;\n var widthRatio = (param.containerWidth / rawPath.width) * param.xScaleFactor;\n\n\n // Apply height ratio\n for (var heightIndex = 0; heightIndex < rawPath.heightElements.length; heightIndex++) {\n coordinates['y' + heightIndex] = rawPath.heightElements[heightIndex] * heightRatio;\n }\n\n // Apply width ratio\n for (var widthIndex = 0; widthIndex < rawPath.widthElements.length; widthIndex++) {\n coordinates['x' + widthIndex] = rawPath.widthElements[widthIndex] * widthRatio;\n }\n }\n\n // Apply value to raw path\n var path = format(\n rawPath.d, {\n mx: mx,\n my: my,\n e: coordinates\n }\n );\n return path;\n };\n}\n\n// helpers //////////////////////\n\n// copied and adjusted from https://github.com/adobe-webplatform/Snap.svg/blob/master/src/svg.js\nvar tokenRegex = /\\{([^{}]+)\\}/g,\n objNotationRegex = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g; // matches .xxxxx or [\"xxxxx\"] to run over object properties\n\nfunction replacer(all, key, obj) {\n var res = obj;\n key.replace(objNotationRegex, function(all, name, quote, quotedName, isFunc) {\n name = name || quotedName;\n if (res) {\n if (name in res) {\n res = res[name];\n }\n typeof res == 'function' && isFunc && (res = res());\n }\n });\n res = (res == null || res == obj ? all : res) + '';\n\n return res;\n}\n\nfunction format(str, obj) {\n return String(str).replace(tokenRegex, function(all, key) {\n return replacer(all, key, obj);\n });\n}\n","import translate from './translate';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n translate: [ 'value', translate ]\n};","/**\n * @typedef { {\n * [key: string]: string;\n * } } TranslateReplacements\n */\n\n/**\n * A simple translation stub to be used for multi-language support\n * in diagrams. Can be easily replaced with a more sophisticated\n * solution.\n *\n * @example\n *\n * ```javascript\n * // use it inside any diagram component by injecting `translate`.\n *\n * function MyService(translate) {\n * alert(translate('HELLO {you}', { you: 'You!' }));\n * }\n * ```\n *\n * @param {string} template to interpolate\n * @param {TranslateReplacements} [replacements] a map with substitutes\n *\n * @return {string} the translated string\n */\nexport default function translate(template, replacements) {\n\n replacements = replacements || {};\n\n return template.replace(/{([^}]+)}/g, function(_, key) {\n return replacements[key] || '{' + key + '}';\n });\n}","import {\n isObject,\n sortBy\n} from 'min-dash';\n\nimport {\n pointDistance,\n pointsOnLine\n} from '../util/Geometry';\n\nimport intersectPaths from 'path-intersection';\n\nimport { isConnection } from '../util/ModelUtil';\n\n/**\n * @typedef {import('../core/Types').ElementLike} Element\n * @typedef {import('../core/Types').ConnectionLike} Connection\n *\n * @typedef {import('../util/Types').DirectionTRBL} DirectionTRBL\n * @typedef {import('../util/Types').Point} Point\n * @typedef {import('../util/Types').Rect} Rect\n * @typedef {import('../util/Types').RectTRBL} RectTRBL\n */\n\n/**\n * @param {Rect} bounds\n *\n * @returns {Rect}\n */\nexport function roundBounds(bounds) {\n return {\n x: Math.round(bounds.x),\n y: Math.round(bounds.y),\n width: Math.round(bounds.width),\n height: Math.round(bounds.height)\n };\n}\n\n/**\n * @param {Point} point\n *\n * @returns {Point}\n */\nexport function roundPoint(point) {\n\n return {\n x: Math.round(point.x),\n y: Math.round(point.y)\n };\n}\n\n\n/**\n * Convert the given bounds to a { top, left, bottom, right } descriptor.\n *\n * @param {Point|Rect} bounds\n *\n * @return {RectTRBL}\n */\nexport function asTRBL(bounds) {\n return {\n top: bounds.y,\n right: bounds.x + (bounds.width || 0),\n bottom: bounds.y + (bounds.height || 0),\n left: bounds.x\n };\n}\n\n\n/**\n * Convert a { top, left, bottom, right } to an objects bounds.\n *\n * @param {RectTRBL} trbl\n *\n * @return {Rect}\n */\nexport function asBounds(trbl) {\n return {\n x: trbl.left,\n y: trbl.top,\n width: trbl.right - trbl.left,\n height: trbl.bottom - trbl.top\n };\n}\n\n\n/**\n * Get the mid of the given bounds or point.\n *\n * @param {Point|Rect} bounds\n *\n * @return {Point}\n */\nexport function getBoundsMid(bounds) {\n return roundPoint({\n x: bounds.x + (bounds.width || 0) / 2,\n y: bounds.y + (bounds.height || 0) / 2\n });\n}\n\n\n/**\n * Get the mid of the given Connection.\n *\n * @param {Connection} connection\n *\n * @return {Point}\n */\nexport function getConnectionMid(connection) {\n var waypoints = connection.waypoints;\n\n // calculate total length and length of each segment\n var parts = waypoints.reduce(function(parts, point, index) {\n\n var lastPoint = waypoints[index - 1];\n\n if (lastPoint) {\n var lastPart = parts[parts.length - 1];\n\n var startLength = lastPart && lastPart.endLength || 0;\n var length = distance(lastPoint, point);\n\n parts.push({\n start: lastPoint,\n end: point,\n startLength: startLength,\n endLength: startLength + length,\n length: length\n });\n }\n\n return parts;\n }, []);\n\n var totalLength = parts.reduce(function(length, part) {\n return length + part.length;\n }, 0);\n\n // find which segement contains middle point\n var midLength = totalLength / 2;\n\n var i = 0;\n var midSegment = parts[i];\n\n while (midSegment.endLength < midLength) {\n midSegment = parts[++i];\n }\n\n // calculate relative position on mid segment\n var segmentProgress = (midLength - midSegment.startLength) / midSegment.length;\n\n var midPoint = {\n x: midSegment.start.x + (midSegment.end.x - midSegment.start.x) * segmentProgress,\n y: midSegment.start.y + (midSegment.end.y - midSegment.start.y) * segmentProgress\n };\n\n return midPoint;\n}\n\n\n/**\n * Get the mid of the given Element.\n *\n * @param {Element} element\n *\n * @return {Point}\n */\nexport function getMid(element) {\n if (isConnection(element)) {\n return getConnectionMid(element);\n }\n\n return getBoundsMid(element);\n}\n\n// orientation utils //////////////////////\n\n/**\n * Get orientation of the given rectangle with respect to\n * the reference rectangle.\n *\n * A padding (positive or negative) may be passed to influence\n * horizontal / vertical orientation and intersection.\n *\n * @param {Rect} rect\n * @param {Rect} reference\n * @param {Point|number} padding\n *\n * @return {DirectionTRBL} the orientation; one of top, top-left, left, ..., bottom, right or intersect.\n */\nexport function getOrientation(rect, reference, padding) {\n\n padding = padding || 0;\n\n // make sure we can use an object, too\n // for individual { x, y } padding\n if (!isObject(padding)) {\n padding = { x: padding, y: padding };\n }\n\n\n var rectOrientation = asTRBL(rect),\n referenceOrientation = asTRBL(reference);\n\n var top = rectOrientation.bottom + padding.y <= referenceOrientation.top,\n right = rectOrientation.left - padding.x >= referenceOrientation.right,\n bottom = rectOrientation.top - padding.y >= referenceOrientation.bottom,\n left = rectOrientation.right + padding.x <= referenceOrientation.left;\n\n var vertical = top ? 'top' : (bottom ? 'bottom' : null),\n horizontal = left ? 'left' : (right ? 'right' : null);\n\n if (horizontal && vertical) {\n return vertical + '-' + horizontal;\n } else {\n return horizontal || vertical || 'intersect';\n }\n}\n\n\n// intersection utils //////////////////////\n\n/**\n * Get intersection between an element and a line path.\n *\n * @param {string} elementPath\n * @param {string} linePath\n * @param {boolean} cropStart Whether to crop start or end.\n *\n * @return {Point}\n */\nexport function getElementLineIntersection(elementPath, linePath, cropStart) {\n\n var intersections = getIntersections(elementPath, linePath);\n\n // recognize intersections\n // only one -> choose\n // two close together -> choose first\n // two or more distinct -> pull out appropriate one\n // none -> ok (fallback to point itself)\n if (intersections.length === 1) {\n return roundPoint(intersections[0]);\n } else if (intersections.length === 2 && pointDistance(intersections[0], intersections[1]) < 1) {\n return roundPoint(intersections[0]);\n } else if (intersections.length > 1) {\n\n // sort by intersections based on connection segment +\n // distance from start\n intersections = sortBy(intersections, function(i) {\n var distance = Math.floor(i.t2 * 100) || 1;\n\n distance = 100 - distance;\n\n distance = (distance < 10 ? '0' : '') + distance;\n\n // create a sort string that makes sure we sort\n // line segment ASC + line segment position DESC (for cropStart)\n // line segment ASC + line segment position ASC (for cropEnd)\n return i.segment2 + '#' + distance;\n });\n\n return roundPoint(intersections[cropStart ? 0 : intersections.length - 1]);\n }\n\n return null;\n}\n\n\nexport function getIntersections(a, b) {\n return intersectPaths(a, b);\n}\n\n\nexport function filterRedundantWaypoints(waypoints) {\n\n // alter copy of waypoints, not original\n waypoints = waypoints.slice();\n\n var idx = 0,\n point,\n previousPoint,\n nextPoint;\n\n while (waypoints[idx]) {\n point = waypoints[idx];\n previousPoint = waypoints[idx - 1];\n nextPoint = waypoints[idx + 1];\n\n if (pointDistance(point, nextPoint) === 0 ||\n pointsOnLine(previousPoint, nextPoint, point)) {\n\n // remove point, if overlapping with {nextPoint}\n // or on line with {previousPoint} -> {point} -> {nextPoint}\n waypoints.splice(idx, 1);\n } else {\n idx++;\n }\n }\n\n return waypoints;\n}\n\n// helpers //////////////////////\n\nfunction distance(a, b) {\n return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));\n}","import {\n has,\n isNil,\n isObject\n} from 'min-dash';\n\n/**\n * Checks whether a value is an instance of Connection.\n *\n * @param {any} value\n *\n * @return {boolean}\n */\nexport function isConnection(value) {\n return isObject(value) && has(value, 'waypoints');\n}\n\n/**\n * Checks whether a value is an instance of Label.\n *\n * @param {any} value\n *\n * @return {boolean}\n */\nexport function isLabel(value) {\n return isObject(value) && has(value, 'labelTarget');\n}\n\n/**\n * Checks whether a value is an instance of Root.\n *\n * @param {any} value\n *\n * @return {boolean}\n */\nexport function isRoot(value) {\n return isObject(value) && isNil(value.parent);\n}","export function elementToString(e) {\n if (!e) {\n return '';\n }\n\n return '<' + e.$type + (e.id ? ' id=\"' + e.id : '') + '\" />';\n}","import {\n assign\n} from 'min-dash';\n\nimport { is } from '../util/ModelUtil';\n\nimport {\n isLabelExternal,\n getExternalLabelBounds,\n getLabel\n} from '../util/LabelUtil';\n\nimport {\n getMid\n} from 'diagram-js/lib/layout/LayoutUtil';\n\nimport {\n isExpanded\n} from '../util/DiUtil';\n\nimport {\n elementToString\n} from './Util';\n\n/**\n * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas\n * @typedef {import('diagram-js/lib/core/ElementRegistry').default} ElementRegistry\n * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus\n * @typedef {import('diagram-js/lib/i18n/translate/translate').default} Translate\n *\n * @typedef {import('../features/modeling/ElementFactory').default} ElementFactory\n * @typedef {import('../draw/TextRenderer').default} TextRenderer\n *\n * @typedef {import('../model/Types').Element} Element\n * @typedef {import('../model/Types').Label} Label\n * @typedef {import('../model/Types').Shape} Shape\n * @typedef {import('../model/Types').Connection} Connection\n * @typedef {import('../model/Types').Root} Root\n * @typedef {import('../model/Types').ModdleElement} ModdleElement\n */\n\n/**\n * @param {ModdleElement} semantic\n * @param {ModdleElement} di\n * @param {Object} [attrs=null]\n *\n * @return {Object}\n */\nfunction elementData(semantic, di, attrs) {\n return assign({\n id: semantic.id,\n type: semantic.$type,\n businessObject: semantic,\n di: di\n }, attrs);\n}\n\nfunction getWaypoints(di, source, target) {\n\n var waypoints = di.waypoint;\n\n if (!waypoints || waypoints.length < 2) {\n return [ getMid(source), getMid(target) ];\n }\n\n return waypoints.map(function(p) {\n return { x: p.x, y: p.y };\n });\n}\n\nfunction notYetDrawn(translate, semantic, refSemantic, property) {\n return new Error(translate('element {element} referenced by {referenced}#{property} not yet drawn', {\n element: elementToString(refSemantic),\n referenced: elementToString(semantic),\n property: property\n }));\n}\n\n\n/**\n * An importer that adds bpmn elements to the canvas\n *\n * @param {EventBus} eventBus\n * @param {Canvas} canvas\n * @param {ElementFactory} elementFactory\n * @param {ElementRegistry} elementRegistry\n * @param {Function} translate\n * @param {TextRenderer} textRenderer\n */\nexport default function BpmnImporter(\n eventBus, canvas, elementFactory,\n elementRegistry, translate, textRenderer) {\n\n this._eventBus = eventBus;\n this._canvas = canvas;\n this._elementFactory = elementFactory;\n this._elementRegistry = elementRegistry;\n this._translate = translate;\n this._textRenderer = textRenderer;\n}\n\nBpmnImporter.$inject = [\n 'eventBus',\n 'canvas',\n 'elementFactory',\n 'elementRegistry',\n 'translate',\n 'textRenderer'\n];\n\n\n/**\n * Add a BPMN element (semantic) to the canvas making it a child of the\n * given parent.\n *\n * @param {ModdleElement} semantic\n * @param {ModdleElement} di\n * @param {Shape} parentElement\n *\n * @return {Shape | Root | Connection}\n */\nBpmnImporter.prototype.add = function(semantic, di, parentElement) {\n var element,\n translate = this._translate,\n hidden;\n\n var parentIndex;\n\n // ROOT ELEMENT\n // handle the special case that we deal with a\n // invisible root element (process, subprocess or collaboration)\n if (is(di, 'bpmndi:BPMNPlane')) {\n\n var attrs = is(semantic, 'bpmn:SubProcess')\n ? { id: semantic.id + '_plane' }\n : {};\n\n // add a virtual element (not being drawn)\n element = this._elementFactory.createRoot(elementData(semantic, di, attrs));\n\n this._canvas.addRootElement(element);\n }\n\n // SHAPE\n else if (is(di, 'bpmndi:BPMNShape')) {\n\n var collapsed = !isExpanded(semantic, di),\n isFrame = isFrameElement(semantic);\n\n hidden = parentElement && (parentElement.hidden || parentElement.collapsed);\n\n var bounds = di.bounds;\n\n element = this._elementFactory.createShape(elementData(semantic, di, {\n collapsed: collapsed,\n hidden: hidden,\n x: Math.round(bounds.x),\n y: Math.round(bounds.y),\n width: Math.round(bounds.width),\n height: Math.round(bounds.height),\n isFrame: isFrame\n }));\n\n if (is(semantic, 'bpmn:BoundaryEvent')) {\n this._attachBoundary(semantic, element);\n }\n\n // insert lanes behind other flow nodes (cf. #727)\n if (is(semantic, 'bpmn:Lane')) {\n parentIndex = 0;\n }\n\n if (is(semantic, 'bpmn:DataStoreReference')) {\n\n // check whether data store is inside our outside of its semantic parent\n if (!isPointInsideBBox(parentElement, getMid(bounds))) {\n parentElement = this._canvas.findRoot(parentElement);\n }\n }\n\n this._canvas.addShape(element, parentElement, parentIndex);\n }\n\n // CONNECTION\n else if (is(di, 'bpmndi:BPMNEdge')) {\n\n var source = this._getSource(semantic),\n target = this._getTarget(semantic);\n\n hidden = parentElement && (parentElement.hidden || parentElement.collapsed);\n\n element = this._elementFactory.createConnection(elementData(semantic, di, {\n hidden: hidden,\n source: source,\n target: target,\n waypoints: getWaypoints(di, source, target)\n }));\n\n if (is(semantic, 'bpmn:DataAssociation')) {\n\n // render always on top; this ensures DataAssociations\n // are rendered correctly across different \"hacks\" people\n // love to model such as cross participant / sub process\n // associations\n parentElement = this._canvas.findRoot(parentElement);\n }\n\n this._canvas.addConnection(element, parentElement, parentIndex);\n } else {\n throw new Error(translate('unknown di {di} for element {semantic}', {\n di: elementToString(di),\n semantic: elementToString(semantic)\n }));\n }\n\n // (optional) LABEL\n if (isLabelExternal(semantic) && getLabel(element)) {\n this.addLabel(semantic, di, element);\n }\n\n\n this._eventBus.fire('bpmnElement.added', { element: element });\n\n return element;\n};\n\n\n/**\n * Attach a boundary element to the given host.\n *\n * @param {ModdleElement} boundarySemantic\n * @param {Shape} boundaryElement\n */\nBpmnImporter.prototype._attachBoundary = function(boundarySemantic, boundaryElement) {\n var translate = this._translate;\n var hostSemantic = boundarySemantic.attachedToRef;\n\n if (!hostSemantic) {\n throw new Error(translate('missing {semantic}#attachedToRef', {\n semantic: elementToString(boundarySemantic)\n }));\n }\n\n var host = this._elementRegistry.get(hostSemantic.id),\n attachers = host && host.attachers;\n\n if (!host) {\n throw notYetDrawn(translate, boundarySemantic, hostSemantic, 'attachedToRef');\n }\n\n // wire element.host <> host.attachers\n boundaryElement.host = host;\n\n if (!attachers) {\n host.attachers = attachers = [];\n }\n\n if (attachers.indexOf(boundaryElement) === -1) {\n attachers.push(boundaryElement);\n }\n};\n\n\n/**\n * Add a label to a given element.\n *\n * @param {ModdleElement} semantic\n * @param {ModdleElement} di\n * @param {Element} element\n *\n * @return {Label}\n */\nBpmnImporter.prototype.addLabel = function(semantic, di, element) {\n var bounds,\n text,\n label;\n\n bounds = getExternalLabelBounds(di, element);\n\n text = getLabel(element);\n\n if (text) {\n\n // get corrected bounds from actual layouted text\n bounds = this._textRenderer.getExternalLabelBounds(bounds, text);\n }\n\n label = this._elementFactory.createLabel(elementData(semantic, di, {\n id: semantic.id + '_label',\n labelTarget: element,\n type: 'label',\n hidden: element.hidden || !getLabel(element),\n x: Math.round(bounds.x),\n y: Math.round(bounds.y),\n width: Math.round(bounds.width),\n height: Math.round(bounds.height)\n }));\n\n return this._canvas.addShape(label, element.parent);\n};\n\n/**\n * Get the source or target of the given connection.\n *\n * @param {ModdleElement} semantic\n * @param {'source' | 'target'} side\n *\n * @return {Element}\n */\nBpmnImporter.prototype._getConnectedElement = function(semantic, side) {\n\n var element,\n refSemantic,\n type = semantic.$type,\n translate = this._translate;\n\n refSemantic = semantic[side + 'Ref'];\n\n // handle mysterious isMany DataAssociation#sourceRef\n if (side === 'source' && type === 'bpmn:DataInputAssociation') {\n refSemantic = refSemantic && refSemantic[0];\n }\n\n // fix source / target for DataInputAssociation / DataOutputAssociation\n if (side === 'source' && type === 'bpmn:DataOutputAssociation' ||\n side === 'target' && type === 'bpmn:DataInputAssociation') {\n\n refSemantic = semantic.$parent;\n }\n\n element = refSemantic && this._getElement(refSemantic);\n\n if (element) {\n return element;\n }\n\n if (refSemantic) {\n throw notYetDrawn(translate, semantic, refSemantic, side + 'Ref');\n } else {\n throw new Error(translate('{semantic}#{side} Ref not specified', {\n semantic: elementToString(semantic),\n side: side\n }));\n }\n};\n\nBpmnImporter.prototype._getSource = function(semantic) {\n return this._getConnectedElement(semantic, 'source');\n};\n\nBpmnImporter.prototype._getTarget = function(semantic) {\n return this._getConnectedElement(semantic, 'target');\n};\n\n\nBpmnImporter.prototype._getElement = function(semantic) {\n return this._elementRegistry.get(semantic.id);\n};\n\n\n// helpers ////////////////////\n\nfunction isPointInsideBBox(bbox, point) {\n var x = point.x,\n y = point.y;\n\n return x >= bbox.x &&\n x <= bbox.x + bbox.width &&\n y >= bbox.y &&\n y <= bbox.y + bbox.height;\n}\n\nfunction isFrameElement(semantic) {\n return is(semantic, 'bpmn:Group');\n}\n","/**\n * @typedef {import('../util/Types').Point} Point\n */\n\nfunction __stopPropagation(event) {\n if (!event || typeof event.stopPropagation !== 'function') {\n return;\n }\n\n event.stopPropagation();\n}\n\n/**\n * @param {import('../core/EventBus').Event} event\n *\n * @return {Event}\n */\nexport function getOriginal(event) {\n return event.originalEvent || event.srcEvent;\n}\n\n/**\n * @param {Event|import('../core/EventBus').Event} event\n */\nexport function stopPropagation(event) {\n __stopPropagation(event);\n __stopPropagation(getOriginal(event));\n}\n\n/**\n * @param {Event} event\n *\n * @return {Point|null}\n */\nexport function toPoint(event) {\n\n if (event.pointers && event.pointers.length) {\n event = event.pointers[0];\n }\n\n if (event.touches && event.touches.length) {\n event = event.touches[0];\n }\n\n return event ? {\n x: event.clientX,\n y: event.clientY\n } : null;\n}","import {\n getOriginal as getOriginalEvent\n} from './Event';\n\nimport {\n isMac\n} from './Platform';\n\nexport {\n isMac\n} from './Platform';\n\n/**\n * @param {MouseEvent} event\n * @param {string} button\n *\n * @return {boolean}\n */\nexport function isButton(event, button) {\n return (getOriginalEvent(event) || event).button === button;\n}\n\n/**\n * @param {MouseEvent} event\n *\n * @return {boolean}\n */\nexport function isPrimaryButton(event) {\n\n // button === 0 -> left áka primary mouse button\n return isButton(event, 0);\n}\n\n/**\n * @param {MouseEvent} event\n *\n * @return {boolean}\n */\nexport function isAuxiliaryButton(event) {\n\n // button === 1 -> auxiliary áka wheel button\n return isButton(event, 1);\n}\n\n/**\n * @param {MouseEvent} event\n *\n * @return {boolean}\n */\nexport function isSecondaryButton(event) {\n\n // button === 2 -> right áka secondary button\n return isButton(event, 2);\n}\n\n/**\n * @param {MouseEvent} event\n *\n * @return {boolean}\n */\nexport function hasPrimaryModifier(event) {\n var originalEvent = getOriginalEvent(event) || event;\n\n if (!isPrimaryButton(event)) {\n return false;\n }\n\n // Use cmd as primary modifier key for mac OS\n if (isMac()) {\n return originalEvent.metaKey;\n } else {\n return originalEvent.ctrlKey;\n }\n}\n\n/**\n * @param {MouseEvent} event\n *\n * @return {boolean}\n */\nexport function hasSecondaryModifier(event) {\n var originalEvent = getOriginalEvent(event) || event;\n\n return isPrimaryButton(event) && originalEvent.shiftKey;\n}\n","import {\n forEach,\n assign\n} from 'min-dash';\n\nimport {\n delegate as domDelegate,\n query as domQuery,\n queryAll as domQueryAll\n} from 'min-dom';\n\nimport {\n isPrimaryButton,\n isAuxiliaryButton\n} from '../../util/Mouse';\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate,\n remove as svgRemove\n} from 'tiny-svg';\n\nimport {\n createLine,\n updateLine\n} from '../../util/RenderUtil';\n\n/**\n * @typedef {import('../../model/Types').Element} Element\n *\n * @typedef {import('../../core/ElementRegistry').default} ElementRegistry\n * @typedef {import('../../core/EventBus').default} EventBus\n * @typedef {import('../../draw/Styles').default} Styles\n *\n * @typedef {import('../../util/Types').Point} Point\n */\n\nfunction allowAll(event) { return true; }\n\nfunction allowPrimaryAndAuxiliary(event) {\n return isPrimaryButton(event) || isAuxiliaryButton(event);\n}\n\nvar LOW_PRIORITY = 500;\n\n\n/**\n * A plugin that provides interaction events for diagram elements.\n *\n * It emits the following events:\n *\n * * element.click\n * * element.contextmenu\n * * element.dblclick\n * * element.hover\n * * element.mousedown\n * * element.mousemove\n * * element.mouseup\n * * element.out\n *\n * Each event is a tuple { element, gfx, originalEvent }.\n *\n * Canceling the event via Event#preventDefault()\n * prevents the original DOM operation.\n *\n * @param {EventBus} eventBus\n * @param {ElementRegistry} elementRegistry\n * @param {Styles} styles\n */\nexport default function InteractionEvents(eventBus, elementRegistry, styles) {\n\n var self = this;\n\n /**\n * Fire an interaction event.\n *\n * @param {string} type local event name, e.g. element.click.\n * @param {MouseEvent|TouchEvent} event native event\n * @param {Element} [element] the diagram element to emit the event on;\n * defaults to the event target\n */\n function fire(type, event, element) {\n\n if (isIgnored(type, event)) {\n return;\n }\n\n var target, gfx, returnValue;\n\n if (!element) {\n target = event.delegateTarget || event.target;\n\n if (target) {\n gfx = target;\n element = elementRegistry.get(gfx);\n }\n } else {\n gfx = elementRegistry.getGraphics(element);\n }\n\n if (!gfx || !element) {\n return;\n }\n\n returnValue = eventBus.fire(type, {\n element: element,\n gfx: gfx,\n originalEvent: event\n });\n\n if (returnValue === false) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n // TODO(nikku): document this\n var handlers = {};\n\n function mouseHandler(localEventName) {\n return handlers[localEventName];\n }\n\n function isIgnored(localEventName, event) {\n\n var filter = ignoredFilters[localEventName] || isPrimaryButton;\n\n // only react on left mouse button interactions\n // except for interaction events that are enabled\n // for secundary mouse button\n return !filter(event);\n }\n\n var bindings = {\n click: 'element.click',\n contextmenu: 'element.contextmenu',\n dblclick: 'element.dblclick',\n mousedown: 'element.mousedown',\n mousemove: 'element.mousemove',\n mouseover: 'element.hover',\n mouseout: 'element.out',\n mouseup: 'element.mouseup',\n };\n\n var ignoredFilters = {\n 'element.contextmenu': allowAll,\n 'element.mousedown': allowPrimaryAndAuxiliary,\n 'element.mouseup': allowPrimaryAndAuxiliary,\n 'element.click': allowPrimaryAndAuxiliary,\n 'element.dblclick': allowPrimaryAndAuxiliary\n };\n\n\n // manual event trigger //////////\n\n /**\n * Trigger an interaction event (based on a native dom event)\n * on the target shape or connection.\n *\n * @param {string} eventName the name of the triggered DOM event\n * @param {MouseEvent|TouchEvent} event\n * @param {Element} targetElement\n */\n function triggerMouseEvent(eventName, event, targetElement) {\n\n // i.e. element.mousedown...\n var localEventName = bindings[eventName];\n\n if (!localEventName) {\n throw new Error('unmapped DOM event name <' + eventName + '>');\n }\n\n return fire(localEventName, event, targetElement);\n }\n\n\n var ELEMENT_SELECTOR = 'svg, .djs-element';\n\n // event handling ///////\n\n function registerEvent(node, event, localEvent, ignoredFilter) {\n\n var handler = handlers[localEvent] = function(event) {\n fire(localEvent, event);\n };\n\n if (ignoredFilter) {\n ignoredFilters[localEvent] = ignoredFilter;\n }\n\n handler.$delegate = domDelegate.bind(node, ELEMENT_SELECTOR, event, handler);\n }\n\n function unregisterEvent(node, event, localEvent) {\n\n var handler = mouseHandler(localEvent);\n\n if (!handler) {\n return;\n }\n\n domDelegate.unbind(node, event, handler.$delegate);\n }\n\n function registerEvents(svg) {\n forEach(bindings, function(val, key) {\n registerEvent(svg, key, val);\n });\n }\n\n function unregisterEvents(svg) {\n forEach(bindings, function(val, key) {\n unregisterEvent(svg, key, val);\n });\n }\n\n eventBus.on('canvas.destroy', function(event) {\n unregisterEvents(event.svg);\n });\n\n eventBus.on('canvas.init', function(event) {\n registerEvents(event.svg);\n });\n\n\n // hit box updating ////////////////\n\n eventBus.on([ 'shape.added', 'connection.added' ], function(event) {\n var element = event.element,\n gfx = event.gfx;\n\n eventBus.fire('interactionEvents.createHit', { element: element, gfx: gfx });\n });\n\n // Update djs-hit on change.\n // A low priortity is necessary, because djs-hit of labels has to be updated\n // after the label bounds have been updated in the renderer.\n eventBus.on([\n 'shape.changed',\n 'connection.changed'\n ], LOW_PRIORITY, function(event) {\n\n var element = event.element,\n gfx = event.gfx;\n\n eventBus.fire('interactionEvents.updateHit', { element: element, gfx: gfx });\n });\n\n eventBus.on('interactionEvents.createHit', LOW_PRIORITY, function(event) {\n var element = event.element,\n gfx = event.gfx;\n\n self.createDefaultHit(element, gfx);\n });\n\n eventBus.on('interactionEvents.updateHit', function(event) {\n var element = event.element,\n gfx = event.gfx;\n\n self.updateDefaultHit(element, gfx);\n });\n\n\n // hit styles ////////////\n\n var STROKE_HIT_STYLE = createHitStyle('djs-hit djs-hit-stroke');\n\n var CLICK_STROKE_HIT_STYLE = createHitStyle('djs-hit djs-hit-click-stroke');\n\n var ALL_HIT_STYLE = createHitStyle('djs-hit djs-hit-all');\n\n var NO_MOVE_HIT_STYLE = createHitStyle('djs-hit djs-hit-no-move');\n\n var HIT_TYPES = {\n 'all': ALL_HIT_STYLE,\n 'click-stroke': CLICK_STROKE_HIT_STYLE,\n 'stroke': STROKE_HIT_STYLE,\n 'no-move': NO_MOVE_HIT_STYLE\n };\n\n function createHitStyle(classNames, attrs) {\n\n attrs = assign({\n stroke: 'white',\n strokeWidth: 15\n }, attrs || {});\n\n return styles.cls(classNames, [ 'no-fill', 'no-border' ], attrs);\n }\n\n\n // style helpers ///////////////\n\n function applyStyle(hit, type) {\n\n var attrs = HIT_TYPES[type];\n\n if (!attrs) {\n throw new Error('invalid hit type <' + type + '>');\n }\n\n svgAttr(hit, attrs);\n\n return hit;\n }\n\n function appendHit(gfx, hit) {\n svgAppend(gfx, hit);\n }\n\n\n // API\n\n /**\n * Remove hints on the given graphics.\n *\n * @param {SVGElement} gfx\n */\n this.removeHits = function(gfx) {\n var hits = domQueryAll('.djs-hit', gfx);\n\n forEach(hits, svgRemove);\n };\n\n /**\n * Create default hit for the given element.\n *\n * @param {Element} element\n * @param {SVGElement} gfx\n *\n * @return {SVGElement} created hit\n */\n this.createDefaultHit = function(element, gfx) {\n var waypoints = element.waypoints,\n isFrame = element.isFrame,\n boxType;\n\n if (waypoints) {\n return this.createWaypointsHit(gfx, waypoints);\n } else {\n\n boxType = isFrame ? 'stroke' : 'all';\n\n return this.createBoxHit(gfx, boxType, {\n width: element.width,\n height: element.height\n });\n }\n };\n\n /**\n * Create hits for the given waypoints.\n *\n * @param {SVGElement} gfx\n * @param {Point[]} waypoints\n *\n * @return {SVGElement}\n */\n this.createWaypointsHit = function(gfx, waypoints) {\n\n var hit = createLine(waypoints);\n\n applyStyle(hit, 'stroke');\n\n appendHit(gfx, hit);\n\n return hit;\n };\n\n /**\n * Create hits for a box.\n *\n * @param {SVGElement} gfx\n * @param {string} type\n * @param {Object} attrs\n *\n * @return {SVGElement}\n */\n this.createBoxHit = function(gfx, type, attrs) {\n\n attrs = assign({\n x: 0,\n y: 0\n }, attrs);\n\n var hit = svgCreate('rect');\n\n applyStyle(hit, type);\n\n svgAttr(hit, attrs);\n\n appendHit(gfx, hit);\n\n return hit;\n };\n\n /**\n * Update default hit of the element.\n *\n * @param {Element} element\n * @param {SVGElement} gfx\n *\n * @return {SVGElement} updated hit\n */\n this.updateDefaultHit = function(element, gfx) {\n\n var hit = domQuery('.djs-hit', gfx);\n\n if (!hit) {\n return;\n }\n\n if (element.waypoints) {\n updateLine(hit, element.waypoints);\n } else {\n svgAttr(hit, {\n width: element.width,\n height: element.height\n });\n }\n\n return hit;\n };\n\n this.fire = fire;\n\n this.triggerMouseEvent = triggerMouseEvent;\n\n this.mouseHandler = mouseHandler;\n\n this.registerEvent = registerEvent;\n this.unregisterEvent = unregisterEvent;\n}\n\n\nInteractionEvents.$inject = [\n 'eventBus',\n 'elementRegistry',\n 'styles'\n];\n\n\n/**\n * An event indicating that the mouse hovered over an element\n *\n * @event element.hover\n *\n * @type {Object}\n * @property {Element} element\n * @property {SVGElement} gfx\n * @property {Event} originalEvent\n */\n\n/**\n * An event indicating that the mouse has left an element\n *\n * @event element.out\n *\n * @type {Object}\n * @property {Element} element\n * @property {SVGElement} gfx\n * @property {Event} originalEvent\n */\n\n/**\n * An event indicating that the mouse has clicked an element\n *\n * @event element.click\n *\n * @type {Object}\n * @property {Element} element\n * @property {SVGElement} gfx\n * @property {Event} originalEvent\n */\n\n/**\n * An event indicating that the mouse has double clicked an element\n *\n * @event element.dblclick\n *\n * @type {Object}\n * @property {Element} element\n * @property {SVGElement} gfx\n * @property {Event} originalEvent\n */\n\n/**\n * An event indicating that the mouse has gone down on an element.\n *\n * @event element.mousedown\n *\n * @type {Object}\n * @property {Element} element\n * @property {SVGElement} gfx\n * @property {Event} originalEvent\n */\n\n/**\n * An event indicating that the mouse has gone up on an element.\n *\n * @event element.mouseup\n *\n * @type {Object}\n * @property {Element} element\n * @property {SVGElement} gfx\n * @property {Event} originalEvent\n */\n\n/**\n * An event indicating that the context menu action is triggered\n * via mouse or touch controls.\n *\n * @event element.contextmenu\n *\n * @type {Object}\n * @property {Element} element\n * @property {SVGElement} gfx\n * @property {Event} originalEvent\n */","import {\n assign,\n filter,\n find,\n isArray,\n isNumber,\n isObject,\n isUndefined,\n groupBy,\n forEach\n} from 'min-dash';\n\n/**\n * @typedef {import('../model/Types').Connection} Connection\n * @typedef {import('../model/Types').Element} Element\n * @typedef {import('../model/Types').Shape} Shape\n *\n * @typedef {import('../../type/Types').Rect} Rect\n *\n * @typedef { {\n * allShapes: Record,\n * allConnections: Record,\n * topLevel: Record,\n * enclosedConnections: Record,\n * enclosedElements: Record\n * } } Closure\n */\n\n/**\n * Get parent elements.\n *\n * @param {Element[]} elements\n *\n * @return {Element[]}\n */\nexport function getParents(elements) {\n\n // find elements that are not children of any other elements\n return filter(elements, function(element) {\n return !find(elements, function(e) {\n return e !== element && getParent(element, e);\n });\n });\n}\n\n\nfunction getParent(element, parent) {\n if (!parent) {\n return;\n }\n\n if (element === parent) {\n return parent;\n }\n\n if (!element.parent) {\n return;\n }\n\n return getParent(element.parent, parent);\n}\n\n\n/**\n * Adds an element to a collection and returns true if the\n * element was added.\n *\n * @param {Object[]} elements\n * @param {Object} element\n * @param {boolean} [unique]\n */\nexport function add(elements, element, unique) {\n var canAdd = !unique || elements.indexOf(element) === -1;\n\n if (canAdd) {\n elements.push(element);\n }\n\n return canAdd;\n}\n\n\n/**\n * Iterate over each element in a collection, calling the iterator function `fn`\n * with (element, index, recursionDepth).\n *\n * Recurse into all elements that are returned by `fn`.\n *\n * @param {Element|Element[]} elements\n * @param {(element: Element, index: number, depth: number) => Element[] | boolean | undefined} fn\n * @param {number} [depth] maximum recursion depth\n */\nexport function eachElement(elements, fn, depth) {\n\n depth = depth || 0;\n\n if (!isArray(elements)) {\n elements = [ elements ];\n }\n\n forEach(elements, function(s, i) {\n var filter = fn(s, i, depth);\n\n if (isArray(filter) && filter.length) {\n eachElement(filter, fn, depth + 1);\n }\n });\n}\n\n\n/**\n * Collects self + child elements up to a given depth from a list of elements.\n *\n * @param {Element|Element[]} elements the elements to select the children from\n * @param {boolean} unique whether to return a unique result set (no duplicates)\n * @param {number} maxDepth the depth to search through or -1 for infinite\n *\n * @return {Element[]} found elements\n */\nexport function selfAndChildren(elements, unique, maxDepth) {\n var result = [],\n processedChildren = [];\n\n eachElement(elements, function(element, i, depth) {\n add(result, element, unique);\n\n var children = element.children;\n\n // max traversal depth not reached yet\n if (maxDepth === -1 || depth < maxDepth) {\n\n // children exist && children not yet processed\n if (children && add(processedChildren, children, unique)) {\n return children;\n }\n }\n });\n\n return result;\n}\n\n/**\n * Return self + direct children for a number of elements\n *\n * @param {Element[]} elements to query\n * @param {boolean} [allowDuplicates] to allow duplicates in the result set\n *\n * @return {Element[]} the collected elements\n */\nexport function selfAndDirectChildren(elements, allowDuplicates) {\n return selfAndChildren(elements, !allowDuplicates, 1);\n}\n\n\n/**\n * Return self + ALL children for a number of elements\n *\n * @param {Element[]} elements to query\n * @param {boolean} [allowDuplicates] to allow duplicates in the result set\n *\n * @return {Element[]} the collected elements\n */\nexport function selfAndAllChildren(elements, allowDuplicates) {\n return selfAndChildren(elements, !allowDuplicates, -1);\n}\n\n\n/**\n * Gets the the closure for all selected elements,\n * their enclosed children and connections.\n *\n * @param {Element[]} elements\n * @param {boolean} [isTopLevel=true]\n * @param {Closure} [closure]\n *\n * @return {Closure} newClosure\n */\nexport function getClosure(elements, isTopLevel, closure) {\n\n if (isUndefined(isTopLevel)) {\n isTopLevel = true;\n }\n\n if (isObject(isTopLevel)) {\n closure = isTopLevel;\n isTopLevel = true;\n }\n\n\n closure = closure || {};\n\n var allShapes = copyObject(closure.allShapes),\n allConnections = copyObject(closure.allConnections),\n enclosedElements = copyObject(closure.enclosedElements),\n enclosedConnections = copyObject(closure.enclosedConnections);\n\n var topLevel = copyObject(\n closure.topLevel,\n isTopLevel && groupBy(elements, function(e) { return e.id; })\n );\n\n\n function handleConnection(c) {\n if (topLevel[c.source.id] && topLevel[c.target.id]) {\n topLevel[c.id] = [ c ];\n }\n\n // not enclosed as a child, but maybe logically\n // (connecting two moved elements?)\n if (allShapes[c.source.id] && allShapes[c.target.id]) {\n enclosedConnections[c.id] = enclosedElements[c.id] = c;\n }\n\n allConnections[c.id] = c;\n }\n\n function handleElement(element) {\n\n enclosedElements[element.id] = element;\n\n if (element.waypoints) {\n\n // remember connection\n enclosedConnections[element.id] = allConnections[element.id] = element;\n } else {\n\n // remember shape\n allShapes[element.id] = element;\n\n // remember all connections\n forEach(element.incoming, handleConnection);\n\n forEach(element.outgoing, handleConnection);\n\n // recurse into children\n return element.children;\n }\n }\n\n eachElement(elements, handleElement);\n\n return {\n allShapes: allShapes,\n allConnections: allConnections,\n topLevel: topLevel,\n enclosedConnections: enclosedConnections,\n enclosedElements: enclosedElements\n };\n}\n\n/**\n * Returns the surrounding bbox for all elements in\n * the array or the element primitive.\n *\n * @param {Element|Element[]} elements\n * @param {boolean} [stopRecursion=false]\n *\n * @return {Rect}\n */\nexport function getBBox(elements, stopRecursion) {\n\n stopRecursion = !!stopRecursion;\n if (!isArray(elements)) {\n elements = [ elements ];\n }\n\n var minX,\n minY,\n maxX,\n maxY;\n\n forEach(elements, function(element) {\n\n // If element is a connection the bbox must be computed first\n var bbox = element;\n if (element.waypoints && !stopRecursion) {\n bbox = getBBox(element.waypoints, true);\n }\n\n var x = bbox.x,\n y = bbox.y,\n height = bbox.height || 0,\n width = bbox.width || 0;\n\n if (x < minX || minX === undefined) {\n minX = x;\n }\n if (y < minY || minY === undefined) {\n minY = y;\n }\n\n if ((x + width) > maxX || maxX === undefined) {\n maxX = x + width;\n }\n if ((y + height) > maxY || maxY === undefined) {\n maxY = y + height;\n }\n });\n\n return {\n x: minX,\n y: minY,\n height: maxY - minY,\n width: maxX - minX\n };\n}\n\n\n/**\n * Returns all elements that are enclosed from the bounding box.\n *\n * * If bbox.(width|height) is not specified the method returns\n * all elements with element.x/y > bbox.x/y\n * * If only bbox.x or bbox.y is specified, method return all elements with\n * e.x > bbox.x or e.y > bbox.y\n *\n * @param {Element[]} elements List of Elements to search through\n * @param {Rect} bbox the enclosing bbox.\n *\n * @return {Element[]} enclosed elements\n */\nexport function getEnclosedElements(elements, bbox) {\n\n var filteredElements = {};\n\n forEach(elements, function(element) {\n\n var e = element;\n\n if (e.waypoints) {\n e = getBBox(e);\n }\n\n if (!isNumber(bbox.y) && (e.x > bbox.x)) {\n filteredElements[element.id] = element;\n }\n if (!isNumber(bbox.x) && (e.y > bbox.y)) {\n filteredElements[element.id] = element;\n }\n if (e.x > bbox.x && e.y > bbox.y) {\n if (isNumber(bbox.width) && isNumber(bbox.height) &&\n e.width + e.x < bbox.width + bbox.x &&\n e.height + e.y < bbox.height + bbox.y) {\n\n filteredElements[element.id] = element;\n } else if (!isNumber(bbox.width) || !isNumber(bbox.height)) {\n filteredElements[element.id] = element;\n }\n }\n });\n\n return filteredElements;\n}\n\n/**\n * Get the element's type\n *\n * @param {Element} element\n *\n * @return {'connection' | 'shape' | 'root'}\n */\nexport function getType(element) {\n\n if ('waypoints' in element) {\n return 'connection';\n }\n\n if ('x' in element) {\n return 'shape';\n }\n\n return 'root';\n}\n\n/**\n * @param {Element} element\n *\n * @return {boolean}\n */\nexport function isFrameElement(element) {\n return !!(element && element.isFrame);\n}\n\n// helpers ///////////////////////////////\n\nfunction copyObject(src1, src2) {\n return assign({}, src1 || {}, src2 || {});\n}\n","import { getBBox } from '../../util/Elements';\n\nvar LOW_PRIORITY = 500;\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate\n} from 'tiny-svg';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport {\n assign,\n forEach,\n isFunction\n} from 'min-dash';\n\nvar DEFAULT_PRIORITY = 1000;\n\n/**\n * @typedef {import('../../model/Types').Element} Element\n *\n * @typedef {import('../../core/EventBus').default} EventBus\n * @typedef {import('../../draw/Styles').default} Styles\n */\n\n/**\n * @class\n *\n * A plugin that adds an outline to shapes and connections that may be activated and styled\n * via CSS classes.\n *\n * @param {EventBus} eventBus\n * @param {Styles} styles\n */\nexport default function Outline(eventBus, styles) {\n\n this._eventBus = eventBus;\n\n this.offset = 5;\n\n var OUTLINE_STYLE = styles.cls('djs-outline', [ 'no-fill' ]);\n\n var self = this;\n\n /**\n * @param {SVGElement} gfx\n *\n * @return {SVGElement} outline\n */\n function createOutline(gfx) {\n var outline = svgCreate('rect');\n\n svgAttr(outline, assign({\n x: 0,\n y: 0,\n rx: 4,\n width: 100,\n height: 100\n }, OUTLINE_STYLE));\n\n return outline;\n }\n\n // A low priortity is necessary, because outlines of labels have to be updated\n // after the label bounds have been updated in the renderer.\n eventBus.on([ 'shape.added', 'shape.changed' ], LOW_PRIORITY, function(event) {\n var element = event.element,\n gfx = event.gfx;\n\n var outline = domQuery('.djs-outline', gfx);\n\n if (!outline) {\n outline = self.getOutline(element) || createOutline(gfx);\n svgAppend(gfx, outline);\n }\n\n self.updateShapeOutline(outline, element);\n });\n\n eventBus.on([ 'connection.added', 'connection.changed' ], function(event) {\n var element = event.element,\n gfx = event.gfx;\n\n var outline = domQuery('.djs-outline', gfx);\n\n if (!outline) {\n outline = createOutline(gfx);\n svgAppend(gfx, outline);\n }\n\n self.updateConnectionOutline(outline, element);\n });\n}\n\n\n/**\n * Updates the outline of a shape respecting the dimension of the\n * element and an outline offset.\n *\n * @param {SVGElement} outline\n * @param {Element} element\n */\nOutline.prototype.updateShapeOutline = function(outline, element) {\n\n var updated = false;\n var providers = this._getProviders();\n\n if (providers.length) {\n forEach(providers, function(provider) {\n updated = updated || provider.updateOutline(element, outline);\n });\n }\n\n if (!updated) {\n svgAttr(outline, {\n x: -this.offset,\n y: -this.offset,\n width: element.width + this.offset * 2,\n height: element.height + this.offset * 2\n });\n }\n};\n\n/**\n * Updates the outline of a connection respecting the bounding box of\n * the connection and an outline offset.\n * Register an outline provider with the given priority.\n *\n * @param {SVGElement} outline\n * @param {Element} connection\n */\nOutline.prototype.updateConnectionOutline = function(outline, connection) {\n var bbox = getBBox(connection);\n\n svgAttr(outline, {\n x: bbox.x - this.offset,\n y: bbox.y - this.offset,\n width: bbox.width + this.offset * 2,\n height: bbox.height + this.offset * 2\n });\n};\n\n/**\n * Register an outline provider with the given priority.\n *\n * @param {number} priority\n * @param {OutlineProvider} provider\n */\nOutline.prototype.registerProvider = function(priority, provider) {\n if (!provider) {\n provider = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n this._eventBus.on('outline.getProviders', priority, function(event) {\n event.providers.push(provider);\n });\n};\n\n/**\n * Returns the registered outline providers.\n *\n * @returns {OutlineProvider[]}\n */\nOutline.prototype._getProviders = function() {\n var event = this._eventBus.createEvent({\n type: 'outline.getProviders',\n providers: []\n });\n\n this._eventBus.fire(event);\n\n return event.providers;\n};\n\n/**\n * Returns the outline for an element.\n *\n * @param {Element} element\n **/\nOutline.prototype.getOutline = function(element) {\n var outline;\n var providers = this._getProviders();\n\n forEach(providers, function(provider) {\n\n if (!isFunction(provider.getOutline)) {\n return;\n }\n\n outline = outline || provider.getOutline(element);\n });\n\n return outline;\n};\n\nOutline.$inject = [ 'eventBus', 'styles', 'elementRegistry' ];","import {\n isArray,\n forEach\n} from 'min-dash';\n\n/**\n * @typedef {import('../../core/Canvas').default} Canvas\n * @typedef {import('../../core/EventBus').default} EventBus\n */\n\n/**\n * A service that offers the current selection in a diagram.\n * Offers the api to control the selection, too.\n *\n * @param {EventBus} eventBus\n * @param {Canvas} canvas\n */\nexport default function Selection(eventBus, canvas) {\n\n this._eventBus = eventBus;\n this._canvas = canvas;\n\n /**\n * @type {Object[]}\n */\n this._selectedElements = [];\n\n var self = this;\n\n eventBus.on([ 'shape.remove', 'connection.remove' ], function(e) {\n var element = e.element;\n self.deselect(element);\n });\n\n eventBus.on([ 'diagram.clear', 'root.set' ], function(e) {\n self.select(null);\n });\n}\n\nSelection.$inject = [ 'eventBus', 'canvas' ];\n\n/**\n * Deselect an element.\n *\n * @param {Object} element The element to deselect.\n */\nSelection.prototype.deselect = function(element) {\n var selectedElements = this._selectedElements;\n\n var idx = selectedElements.indexOf(element);\n\n if (idx !== -1) {\n var oldSelection = selectedElements.slice();\n\n selectedElements.splice(idx, 1);\n\n this._eventBus.fire('selection.changed', { oldSelection: oldSelection, newSelection: selectedElements });\n }\n};\n\n/**\n * Get the selected elements.\n *\n * @return {Object[]} The selected elements.\n */\nSelection.prototype.get = function() {\n return this._selectedElements;\n};\n\n/**\n * Check whether an element is selected.\n *\n * @param {Object} element The element.\n *\n * @return {boolean} Whether the element is selected.\n */\nSelection.prototype.isSelected = function(element) {\n return this._selectedElements.indexOf(element) !== -1;\n};\n\n\n/**\n * Select one or many elements.\n *\n * @param {Object|Object[]} elements The element(s) to select.\n * @param {boolean} [add] Whether to add the element(s) to the selected elements.\n * Defaults to `false`.\n */\nSelection.prototype.select = function(elements, add) {\n var selectedElements = this._selectedElements,\n oldSelection = selectedElements.slice();\n\n if (!isArray(elements)) {\n elements = elements ? [ elements ] : [];\n }\n\n var canvas = this._canvas;\n\n var rootElement = canvas.getRootElement();\n\n elements = elements.filter(function(element) {\n var elementRoot = canvas.findRoot(element);\n\n return rootElement === elementRoot;\n });\n\n // selection may be cleared by passing an empty array or null\n // to the method\n if (add) {\n forEach(elements, function(element) {\n if (selectedElements.indexOf(element) !== -1) {\n\n // already selected\n return;\n } else {\n selectedElements.push(element);\n }\n });\n } else {\n this._selectedElements = selectedElements = elements.slice();\n }\n\n this._eventBus.fire('selection.changed', { oldSelection: oldSelection, newSelection: selectedElements });\n};\n","import {\n assign,\n forEach\n} from 'min-dash';\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n classes as svgClasses,\n clear as svgClear,\n create as svgCreate\n} from 'tiny-svg';\n\nimport { getBBox } from '../../util/Elements';\n\n/**\n * @typedef {import('../../core/Canvas').default} Canvas\n * @typedef {import('../../core/EventBus').default} EventBus\n * @typedef {import('./Selection').default} Selection\n */\n\nvar MARKER_HOVER = 'hover',\n MARKER_SELECTED = 'selected';\n\nvar SELECTION_OUTLINE_PADDING = 6;\n\n\n/**\n * A plugin that adds a visible selection UI to shapes and connections\n * by appending the hover and selected classes to them.\n *\n * @class\n *\n * Makes elements selectable, too.\n *\n * @param {Canvas} canvas\n * @param {EventBus} eventBus\n * @param {Selection} selection\n */\nexport default function SelectionVisuals(canvas, eventBus, selection) {\n this._canvas = canvas;\n\n var self = this;\n\n this._multiSelectionBox = null;\n\n function addMarker(e, cls) {\n canvas.addMarker(e, cls);\n }\n\n function removeMarker(e, cls) {\n canvas.removeMarker(e, cls);\n }\n\n eventBus.on('element.hover', function(event) {\n addMarker(event.element, MARKER_HOVER);\n });\n\n eventBus.on('element.out', function(event) {\n removeMarker(event.element, MARKER_HOVER);\n });\n\n eventBus.on('selection.changed', function(event) {\n\n function deselect(s) {\n removeMarker(s, MARKER_SELECTED);\n }\n\n function select(s) {\n addMarker(s, MARKER_SELECTED);\n }\n\n var oldSelection = event.oldSelection,\n newSelection = event.newSelection;\n\n forEach(oldSelection, function(e) {\n if (newSelection.indexOf(e) === -1) {\n deselect(e);\n }\n });\n\n forEach(newSelection, function(e) {\n if (oldSelection.indexOf(e) === -1) {\n select(e);\n }\n });\n\n self._updateSelectionOutline(newSelection);\n });\n\n\n eventBus.on('element.changed', function(event) {\n if (selection.isSelected(event.element)) {\n self._updateSelectionOutline(selection.get());\n }\n });\n}\n\nSelectionVisuals.$inject = [\n 'canvas',\n 'eventBus',\n 'selection'\n];\n\nSelectionVisuals.prototype._updateSelectionOutline = function(selection) {\n var layer = this._canvas.getLayer('selectionOutline');\n\n svgClear(layer);\n\n var enabled = selection.length > 1;\n\n var container = this._canvas.getContainer();\n\n svgClasses(container)[enabled ? 'add' : 'remove']('djs-multi-select');\n\n if (!enabled) {\n return;\n }\n\n var bBox = addSelectionOutlinePadding(getBBox(selection));\n\n var rect = svgCreate('rect');\n\n svgAttr(rect, assign({\n rx: 3\n }, bBox));\n\n svgClasses(rect).add('djs-selection-outline');\n\n svgAppend(layer, rect);\n};\n\n// helpers //////////\n\nfunction addSelectionOutlinePadding(bBox) {\n return {\n x: bBox.x - SELECTION_OUTLINE_PADDING,\n y: bBox.y - SELECTION_OUTLINE_PADDING,\n width: bBox.width + SELECTION_OUTLINE_PADDING * 2,\n height: bBox.height + SELECTION_OUTLINE_PADDING * 2\n };\n}","import {\n hasPrimaryModifier,\n hasSecondaryModifier,\n isPrimaryButton\n} from '../../util/Mouse';\n\nimport {\n find,\n isArray\n} from 'min-dash';\n\n/**\n * @typedef {import('../../core/Canvas').default} Canvas\n * @typedef {import('../../core/ElementRegistry').default} ElementRegistry\n * @typedef {import('../../core/EventBus').default} EventBus\n * @typedef {import('./Selection').default} Selection\n */\n\n/**\n * @param {EventBus} eventBus\n * @param {Selection} selection\n * @param {Canvas} canvas\n * @param {ElementRegistry} elementRegistry\n */\nexport default function SelectionBehavior(eventBus, selection, canvas, elementRegistry) {\n\n // Select elements on create\n eventBus.on('create.end', 500, function(event) {\n var context = event.context,\n canExecute = context.canExecute,\n elements = context.elements,\n hints = context.hints || {},\n autoSelect = hints.autoSelect;\n\n if (canExecute) {\n if (autoSelect === false) {\n\n // Select no elements\n return;\n }\n\n if (isArray(autoSelect)) {\n selection.select(autoSelect);\n } else {\n\n // Select all elements by default\n selection.select(elements.filter(isShown));\n }\n }\n });\n\n // Select connection targets on connect\n eventBus.on('connect.end', 500, function(event) {\n var context = event.context,\n connection = context.connection;\n\n if (connection) {\n selection.select(connection);\n }\n });\n\n // Select shapes on move\n eventBus.on('shape.move.end', 500, function(event) {\n var previousSelection = event.previousSelection || [];\n\n var shape = elementRegistry.get(event.context.shape.id);\n\n // Always select main shape on move\n var isSelected = find(previousSelection, function(selectedShape) {\n return shape.id === selectedShape.id;\n });\n\n if (!isSelected) {\n selection.select(shape);\n }\n });\n\n // Select elements on click\n eventBus.on('element.click', function(event) {\n\n if (!isPrimaryButton(event)) {\n return;\n }\n\n var element = event.element;\n\n if (element === canvas.getRootElement()) {\n element = null;\n }\n\n var isSelected = selection.isSelected(element),\n isMultiSelect = selection.get().length > 1;\n\n // Add to selection if CTRL or SHIFT pressed\n var add = hasPrimaryModifier(event) || hasSecondaryModifier(event);\n\n if (isSelected && isMultiSelect) {\n if (add) {\n\n // Deselect element\n return selection.deselect(element);\n } else {\n\n // Select element only\n return selection.select(element);\n }\n } else if (!isSelected) {\n\n // Select element\n selection.select(element, add);\n } else {\n\n // Deselect element\n selection.deselect(element);\n }\n });\n}\n\nSelectionBehavior.$inject = [\n 'eventBus',\n 'selection',\n 'canvas',\n 'elementRegistry'\n];\n\n\nfunction isShown(element) {\n return !element.hidden;\n}\n","export function isMac() {\n return (/mac/i).test(navigator.platform);\n}","/**\n * Util that provides unique IDs.\n *\n * @class\n * @constructor\n *\n * The ids can be customized via a given prefix and contain a random value to avoid collisions.\n *\n * @param {string} [prefix] a prefix to prepend to generated ids (for better readability)\n */\nexport default function IdGenerator(prefix) {\n\n this._counter = 0;\n this._prefix = (prefix ? prefix + '-' : '') + Math.floor(Math.random() * 1000000000) + '-';\n}\n\n/**\n * Returns a next unique ID.\n *\n * @return {string} the id\n */\nIdGenerator.prototype.next = function() {\n return this._prefix + (++this._counter);\n};\n","import {\n isArray,\n isString,\n isObject,\n assign,\n forEach,\n find,\n filter,\n matchPattern,\n isDefined\n} from 'min-dash';\n\nimport {\n assignStyle,\n domify,\n classes as domClasses,\n attr as domAttr,\n remove as domRemove,\n clear as domClear\n} from 'min-dom';\n\nimport {\n getBBox\n} from '../../util/Elements';\n\nimport Ids from '../../util/IdGenerator';\n\n// document wide unique overlay ids\nvar ids = new Ids('ov');\n\nvar LOW_PRIORITY = 500;\n\n/**\n * @typedef {import('../../core/Canvas').default} Canvas\n * @typedef {import('../../core/ElementRegistry').default} ElementRegistry\n * @typedef {import('../../core/EventBus').default} EventBus\n *\n * @typedef {import('../../model/Types').Element} Element\n *\n * @typedef { {\n * minZoom?: number,\n * maxZoom?: number\n * } } OverlaysConfigShow\n *\n * @typedef { {\n * min?: number,\n * max?: number\n * } } OverlaysConfigScale\n *\n * @typedef { {\n* id: string,\n* type: string | null,\n* element: Element | string\n* } & OverlayAttrs } Overlay\n*\n * @typedef { {\n * html: HTMLElement | string,\n * position: {\n * top?: number,\n * right?: number,\n * bottom?: number,\n * left?: number\n * }\n * } & OverlaysConfigDefault } OverlayAttrs\n *\n * @typedef { {\n * html: HTMLElement,\n * element: Element,\n * overlays: Overlay[]\n * } } OverlayContainer\n *\n * @typedef {{\n * defaults?: OverlaysConfigDefault\n * }} OverlaysConfig\n *\n * @typedef { {\n * show?: OverlaysConfigShow,\n * scale?: OverlaysConfigScale | boolean\n * } } OverlaysConfigDefault\n *\n * @typedef { {\n * id?: string;\n * element?: Element | string;\n * type?: string;\n * } | string } OverlaysFilter\n */\n\n/**\n * A service that allows users to attach overlays to diagram elements.\n *\n * The overlay service will take care of overlay positioning during updates.\n *\n * @example\n *\n * ```javascript\n * // add a pink badge on the top left of the shape\n *\n * overlays.add(someShape, {\n * position: {\n * top: -5,\n * left: -5\n * },\n * html: '
0
'\n * });\n *\n * // or add via shape id\n *\n * overlays.add('some-element-id', {\n * position: {\n * top: -5,\n * left: -5\n * }\n * html: '
0
'\n * });\n *\n * // or add with optional type\n *\n * overlays.add(someShape, 'badge', {\n * position: {\n * top: -5,\n * left: -5\n * }\n * html: '
0
'\n * });\n * ```\n *\n * ```javascript\n * // remove an overlay\n *\n * var id = overlays.add(...);\n * overlays.remove(id);\n *\n *\n * You may configure overlay defaults during tool by providing a `config` module\n * with `overlays.defaults` as an entry:\n *\n * {\n * overlays: {\n * defaults: {\n * show: {\n * minZoom: 0.7,\n * maxZoom: 5.0\n * },\n * scale: {\n * min: 1\n * }\n * }\n * }\n * ```\n *\n * @param {OverlaysConfig} config\n * @param {EventBus} eventBus\n * @param {Canvas} canvas\n * @param {ElementRegistry} elementRegistry\n */\nexport default function Overlays(config, eventBus, canvas, elementRegistry) {\n this._eventBus = eventBus;\n this._canvas = canvas;\n this._elementRegistry = elementRegistry;\n\n this._ids = ids;\n\n /**\n * @type {OverlaysConfigDefault}\n */\n this._overlayDefaults = assign({\n\n // no show constraints\n show: null,\n\n // always scale\n scale: true\n }, config && config.defaults);\n\n /**\n * @type {Map}\n */\n this._overlays = {};\n\n /**\n * @type {OverlayContainer[]}\n */\n this._overlayContainers = [];\n\n /**\n * @type {HTMLElement}\n */\n this._overlayRoot = createRoot(canvas.getContainer());\n\n this._init();\n}\n\n\nOverlays.$inject = [\n 'config.overlays',\n 'eventBus',\n 'canvas',\n 'elementRegistry'\n];\n\n\n/**\n * Returns the overlay with the specified ID or a list of overlays\n * for an element with a given type.\n *\n * @example\n *\n * ```javascript\n * // return the single overlay with the given ID\n * overlays.get('some-id');\n *\n * // return all overlays for the shape\n * overlays.get({ element: someShape });\n *\n * // return all overlays on shape with type 'badge'\n * overlays.get({ element: someShape, type: 'badge' });\n *\n * // shape can also be specified as ID\n * overlays.get({ element: 'element-id', type: 'badge' });\n * ```\n *\n * @param {OverlaysFilter} search The filter to be used to find the overlay(s).\n *\n * @return {Overlay|Overlay[]} The overlay(s).\n */\nOverlays.prototype.get = function(search) {\n\n if (isString(search)) {\n search = { id: search };\n }\n\n if (isString(search.element)) {\n search.element = this._elementRegistry.get(search.element);\n }\n\n if (search.element) {\n var container = this._getOverlayContainer(search.element, true);\n\n // return a list of overlays when searching by element (+type)\n if (container) {\n return search.type ? filter(container.overlays, matchPattern({ type: search.type })) : container.overlays.slice();\n } else {\n return [];\n }\n } else\n if (search.type) {\n return filter(this._overlays, matchPattern({ type: search.type }));\n } else {\n\n // return single element when searching by id\n return search.id ? this._overlays[search.id] : null;\n }\n};\n\n/**\n * Adds an HTML overlay to an element.\n *\n * @param {Element|string} element The element to add the overlay to.\n * @param {string} [type] An optional type that can be used to filter.\n * @param {OverlayAttrs} overlay The overlay.\n *\n * @return {string} The overlay's ID that can be used to get or remove it.\n */\nOverlays.prototype.add = function(element, type, overlay) {\n\n if (isObject(type)) {\n overlay = type;\n type = null;\n }\n\n if (!element.id) {\n element = this._elementRegistry.get(element);\n }\n\n if (!overlay.position) {\n throw new Error('must specifiy overlay position');\n }\n\n if (!overlay.html) {\n throw new Error('must specifiy overlay html');\n }\n\n if (!element) {\n throw new Error('invalid element specified');\n }\n\n var id = this._ids.next();\n\n overlay = assign({}, this._overlayDefaults, overlay, {\n id: id,\n type: type,\n element: element,\n html: overlay.html\n });\n\n this._addOverlay(overlay);\n\n return id;\n};\n\n\n/**\n * Remove an overlay with the given ID or all overlays matching the given filter.\n *\n * @see Overlays#get for filter options.\n *\n * @param {OverlaysFilter} filter The filter to be used to find the overlay.\n */\nOverlays.prototype.remove = function(filter) {\n\n var overlays = this.get(filter) || [];\n\n if (!isArray(overlays)) {\n overlays = [ overlays ];\n }\n\n var self = this;\n\n forEach(overlays, function(overlay) {\n\n var container = self._getOverlayContainer(overlay.element, true);\n\n if (overlay) {\n domRemove(overlay.html);\n domRemove(overlay.htmlContainer);\n\n delete overlay.htmlContainer;\n delete overlay.element;\n\n delete self._overlays[overlay.id];\n }\n\n if (container) {\n var idx = container.overlays.indexOf(overlay);\n if (idx !== -1) {\n container.overlays.splice(idx, 1);\n }\n }\n });\n\n};\n\n/**\n * Checks whether overlays are shown.\n *\n * @return {boolean} Whether overlays are shown.\n */\nOverlays.prototype.isShown = function() {\n return this._overlayRoot.style.display !== 'none';\n};\n\n/**\n * Show all overlays.\n */\nOverlays.prototype.show = function() {\n setVisible(this._overlayRoot);\n};\n\n/**\n * Hide all overlays.\n */\nOverlays.prototype.hide = function() {\n setVisible(this._overlayRoot, false);\n};\n\n/**\n * Remove all overlays and their container.\n */\nOverlays.prototype.clear = function() {\n this._overlays = {};\n\n this._overlayContainers = [];\n\n domClear(this._overlayRoot);\n};\n\nOverlays.prototype._updateOverlayContainer = function(container) {\n var element = container.element,\n html = container.html;\n\n // update container left,top according to the elements x,y coordinates\n // this ensures we can attach child elements relative to this container\n\n var x = element.x,\n y = element.y;\n\n if (element.waypoints) {\n var bbox = getBBox(element);\n x = bbox.x;\n y = bbox.y;\n }\n\n setPosition(html, x, y);\n\n domAttr(container.html, 'data-container-id', element.id);\n};\n\n\nOverlays.prototype._updateOverlay = function(overlay) {\n\n var position = overlay.position,\n htmlContainer = overlay.htmlContainer,\n element = overlay.element;\n\n // update overlay html relative to shape because\n // it is already positioned on the element\n\n // update relative\n var left = position.left,\n top = position.top;\n\n if (position.right !== undefined) {\n\n var width;\n\n if (element.waypoints) {\n width = getBBox(element).width;\n } else {\n width = element.width;\n }\n\n left = position.right * -1 + width;\n }\n\n if (position.bottom !== undefined) {\n\n var height;\n\n if (element.waypoints) {\n height = getBBox(element).height;\n } else {\n height = element.height;\n }\n\n top = position.bottom * -1 + height;\n }\n\n setPosition(htmlContainer, left || 0, top || 0);\n this._updateOverlayVisibilty(overlay, this._canvas.viewbox());\n};\n\n\nOverlays.prototype._createOverlayContainer = function(element) {\n var html = domify('
');\n assignStyle(html, { position: 'absolute' });\n\n this._overlayRoot.appendChild(html);\n\n var container = {\n html: html,\n element: element,\n overlays: []\n };\n\n this._updateOverlayContainer(container);\n\n this._overlayContainers.push(container);\n\n return container;\n};\n\n\nOverlays.prototype._updateRoot = function(viewbox) {\n var scale = viewbox.scale || 1;\n\n var matrix = 'matrix(' +\n [\n scale,\n 0,\n 0,\n scale,\n -1 * viewbox.x * scale,\n -1 * viewbox.y * scale\n ].join(',') +\n ')';\n\n setTransform(this._overlayRoot, matrix);\n};\n\n\nOverlays.prototype._getOverlayContainer = function(element, raw) {\n var container = find(this._overlayContainers, function(c) {\n return c.element === element;\n });\n\n\n if (!container && !raw) {\n return this._createOverlayContainer(element);\n }\n\n return container;\n};\n\n\nOverlays.prototype._addOverlay = function(overlay) {\n\n var id = overlay.id,\n element = overlay.element,\n html = overlay.html,\n htmlContainer,\n overlayContainer;\n\n // unwrap jquery (for those who need it)\n if (html.get && html.constructor.prototype.jquery) {\n html = html.get(0);\n }\n\n // create proper html elements from\n // overlay HTML strings\n if (isString(html)) {\n html = domify(html);\n }\n\n overlayContainer = this._getOverlayContainer(element);\n\n htmlContainer = domify('
');\n assignStyle(htmlContainer, { position: 'absolute' });\n\n htmlContainer.appendChild(html);\n\n if (overlay.type) {\n domClasses(htmlContainer).add('djs-overlay-' + overlay.type);\n }\n\n var elementRoot = this._canvas.findRoot(element);\n var activeRoot = this._canvas.getRootElement();\n\n setVisible(htmlContainer, elementRoot === activeRoot);\n\n overlay.htmlContainer = htmlContainer;\n\n overlayContainer.overlays.push(overlay);\n overlayContainer.html.appendChild(htmlContainer);\n\n this._overlays[id] = overlay;\n\n this._updateOverlay(overlay);\n this._updateOverlayVisibilty(overlay, this._canvas.viewbox());\n};\n\n\nOverlays.prototype._updateOverlayVisibilty = function(overlay, viewbox) {\n var show = overlay.show,\n rootElement = this._canvas.findRoot(overlay.element),\n minZoom = show && show.minZoom,\n maxZoom = show && show.maxZoom,\n htmlContainer = overlay.htmlContainer,\n activeRootElement = this._canvas.getRootElement(),\n visible = true;\n\n if (rootElement !== activeRootElement) {\n visible = false;\n } else if (show) {\n if (\n (isDefined(minZoom) && minZoom > viewbox.scale) ||\n (isDefined(maxZoom) && maxZoom < viewbox.scale)\n ) {\n visible = false;\n }\n }\n\n setVisible(htmlContainer, visible);\n\n this._updateOverlayScale(overlay, viewbox);\n};\n\n\nOverlays.prototype._updateOverlayScale = function(overlay, viewbox) {\n var shouldScale = overlay.scale,\n minScale,\n maxScale,\n htmlContainer = overlay.htmlContainer;\n\n var scale, transform = '';\n\n if (shouldScale !== true) {\n\n if (shouldScale === false) {\n minScale = 1;\n maxScale = 1;\n } else {\n minScale = shouldScale.min;\n maxScale = shouldScale.max;\n }\n\n if (isDefined(minScale) && viewbox.scale < minScale) {\n scale = (1 / viewbox.scale || 1) * minScale;\n }\n\n if (isDefined(maxScale) && viewbox.scale > maxScale) {\n scale = (1 / viewbox.scale || 1) * maxScale;\n }\n }\n\n if (isDefined(scale)) {\n transform = 'scale(' + scale + ',' + scale + ')';\n }\n\n setTransform(htmlContainer, transform);\n};\n\n\nOverlays.prototype._updateOverlaysVisibilty = function(viewbox) {\n\n var self = this;\n\n forEach(this._overlays, function(overlay) {\n self._updateOverlayVisibilty(overlay, viewbox);\n });\n};\n\n\nOverlays.prototype._init = function() {\n\n var eventBus = this._eventBus;\n\n var self = this;\n\n\n // scroll/zoom integration\n\n function updateViewbox(viewbox) {\n self._updateRoot(viewbox);\n self._updateOverlaysVisibilty(viewbox);\n\n self.show();\n }\n\n eventBus.on('canvas.viewbox.changing', function(event) {\n self.hide();\n });\n\n eventBus.on('canvas.viewbox.changed', function(event) {\n updateViewbox(event.viewbox);\n });\n\n\n // remove integration\n\n eventBus.on([ 'shape.remove', 'connection.remove' ], function(e) {\n var element = e.element;\n var overlays = self.get({ element: element });\n\n forEach(overlays, function(o) {\n self.remove(o.id);\n });\n\n var container = self._getOverlayContainer(element);\n\n if (container) {\n domRemove(container.html);\n var i = self._overlayContainers.indexOf(container);\n if (i !== -1) {\n self._overlayContainers.splice(i, 1);\n }\n }\n });\n\n\n // move integration\n\n eventBus.on('element.changed', LOW_PRIORITY, function(e) {\n var element = e.element;\n\n var container = self._getOverlayContainer(element, true);\n\n if (container) {\n forEach(container.overlays, function(overlay) {\n self._updateOverlay(overlay);\n });\n\n self._updateOverlayContainer(container);\n }\n });\n\n\n // marker integration, simply add them on the overlays as classes, too.\n\n eventBus.on('element.marker.update', function(e) {\n var container = self._getOverlayContainer(e.element, true);\n if (container) {\n domClasses(container.html)[e.add ? 'add' : 'remove'](e.marker);\n }\n });\n\n\n eventBus.on('root.set', function() {\n self._updateOverlaysVisibilty(self._canvas.viewbox());\n });\n\n // clear overlays with diagram\n\n eventBus.on('diagram.clear', this.clear, this);\n};\n\n\n\n// helpers /////////////////////////////\n\nfunction createRoot(parentNode) {\n var root = domify(\n '
'\n );\n\n assignStyle(root, {\n position: 'absolute',\n width: 0,\n height: 0\n });\n\n parentNode.insertBefore(root, parentNode.firstChild);\n\n return root;\n}\n\nfunction setPosition(el, x, y) {\n assignStyle(el, { left: x + 'px', top: y + 'px' });\n}\n\n/**\n * Set element visible\n *\n * @param {DOMElement} el\n * @param {boolean} [visible=true]\n */\nfunction setVisible(el, visible) {\n el.style.display = visible === false ? 'none' : '';\n}\n\nfunction setTransform(el, transform) {\n\n el.style['transform-origin'] = 'top left';\n\n [ '', '-ms-', '-webkit-' ].forEach(function(prefix) {\n el.style[prefix + 'transform'] = transform;\n });\n}","import Overlays from './Overlays';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n __init__: [ 'overlays' ],\n overlays: [ 'type', Overlays ]\n};","import {\n getType as getElementType\n} from '../../util/Elements';\n\n/**\n * @typedef {import('../../core/Canvas').default} Canvas\n * @typedef {import('../../core/ElementRegistry').default} ElementRegistry\n * @typedef {import('../../core/EventBus').default} EventBus\n * @typedef {import('../../core/GraphicsFactory').default} GraphicsFactory\n */\n\n/**\n * Adds change support to the diagram, including\n *\n *
    \n *
  • redrawing shapes and connections on change
  • \n *
\n *\n * @param {EventBus} eventBus\n * @param {Canvas} canvas\n * @param {ElementRegistry} elementRegistry\n * @param {GraphicsFactory} graphicsFactory\n */\nexport default function ChangeSupport(\n eventBus, canvas, elementRegistry,\n graphicsFactory) {\n\n\n // redraw shapes / connections on change\n\n eventBus.on('element.changed', function(event) {\n\n var element = event.element;\n\n // element might have been deleted and replaced by new element with same ID\n // thus check for parent of element except for root element\n if (element.parent || element === canvas.getRootElement()) {\n event.gfx = elementRegistry.getGraphics(element);\n }\n\n // shape + gfx may have been deleted\n if (!event.gfx) {\n return;\n }\n\n eventBus.fire(getElementType(element) + '.changed', event);\n });\n\n eventBus.on('elements.changed', function(event) {\n\n var elements = event.elements;\n\n elements.forEach(function(e) {\n eventBus.fire('element.changed', { element: e });\n });\n\n graphicsFactory.updateContainments(elements);\n });\n\n eventBus.on('shape.changed', function(event) {\n graphicsFactory.update('shape', event.element, event.gfx);\n });\n\n eventBus.on('connection.changed', function(event) {\n graphicsFactory.update('connection', event.element, event.gfx);\n });\n}\n\nChangeSupport.$inject = [\n 'eventBus',\n 'canvas',\n 'elementRegistry',\n 'graphicsFactory'\n];","import {\n forEach,\n isFunction,\n isArray,\n isNumber,\n isObject\n} from 'min-dash';\n\n/**\n * @typedef {import('../core/Types').ElementLike} ElementLike\n * @typedef {import('../core/EventBus').default} EventBus\n * @typedef {import('./CommandStack').CommandContext} CommandContext\n *\n * @typedef {string|string[]} Events\n * @typedef { (context: CommandContext) => ElementLike[] | void } HandlerFunction\n * @typedef { (context: CommandContext) => void } ComposeHandlerFunction\n */\n\nvar DEFAULT_PRIORITY = 1000;\n\n/**\n * A utility that can be used to plug into the command execution for\n * extension and/or validation.\n *\n * @class\n * @constructor\n *\n * @example\n *\n * ```javascript\n * import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n *\n * class CommandLogger extends CommandInterceptor {\n * constructor(eventBus) {\n * super(eventBus);\n *\n * this.preExecute('shape.create', (event) => {\n * console.log('commandStack.shape-create.preExecute', event);\n * });\n * }\n * ```\n *\n * @param {EventBus} eventBus\n */\nexport default function CommandInterceptor(eventBus) {\n\n /**\n * @type {EventBus}\n */\n this._eventBus = eventBus;\n}\n\nCommandInterceptor.$inject = [ 'eventBus' ];\n\nfunction unwrapEvent(fn, that) {\n return function(event) {\n return fn.call(that || null, event.context, event.command, event);\n };\n}\n\n\n/**\n * Intercept a command during one of the phases.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {string} [hook] phase to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.on = function(events, hook, priority, handlerFn, unwrap, that) {\n\n if (isFunction(hook) || isNumber(hook)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = hook;\n hook = null;\n }\n\n if (isFunction(priority)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (isObject(unwrap)) {\n that = unwrap;\n unwrap = false;\n }\n\n if (!isFunction(handlerFn)) {\n throw new Error('handlerFn must be a function');\n }\n\n if (!isArray(events)) {\n events = [ events ];\n }\n\n var eventBus = this._eventBus;\n\n forEach(events, function(event) {\n\n // concat commandStack(.event)?(.hook)?\n var fullEvent = [ 'commandStack', event, hook ].filter(function(e) { return e; }).join('.');\n\n eventBus.on(fullEvent, priority, unwrap ? unwrapEvent(handlerFn, that) : handlerFn, that);\n });\n};\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.canExecute = createHook('canExecute');\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.preExecute = createHook('preExecute');\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.preExecuted = createHook('preExecuted');\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.execute = createHook('execute');\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.executed = createHook('executed');\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.postExecute = createHook('postExecute');\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.postExecuted = createHook('postExecuted');\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.revert = createHook('revert');\n\n/**\n * Add a phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.reverted = createHook('reverted');\n\n/*\n * Add prototype methods for each phase of command execution (e.g. execute,\n * revert).\n *\n * @param {string} hook\n *\n * @return { (\n * events?: Events,\n * priority?: number,\n * handlerFn: ComposeHandlerFunction|HandlerFunction,\n * unwrap?: boolean\n * ) => any }\n */\nfunction createHook(hook) {\n\n /**\n * @this {CommandInterceptor}\n *\n * @param {Events} [events]\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap]\n * @param {any} [that]\n */\n const hookFn = function(events, priority, handlerFn, unwrap, that) {\n\n if (isFunction(events) || isNumber(events)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = events;\n events = null;\n }\n\n this.on(events, hook, priority, handlerFn, unwrap, that);\n };\n\n return hookFn;\n}\n","import inherits from 'inherits-browser';\n\nimport CommandInterceptor from '../../command/CommandInterceptor';\n\n/**\n * @typedef {import('didi').Injector} Injector\n *\n * @typedef {import('../../core/Canvas').default} Canvas\n */\n\n/**\n * A modeling behavior that ensures we set the correct root element\n * as we undo and redo commands.\n *\n * @param {Canvas} canvas\n * @param {Injector} injector\n */\nexport default function RootElementsBehavior(canvas, injector) {\n\n injector.invoke(CommandInterceptor, this);\n\n this.executed(function(event) {\n var context = event.context;\n\n if (context.rootElement) {\n canvas.setRootElement(context.rootElement);\n } else {\n context.rootElement = canvas.getRootElement();\n }\n });\n\n this.revert(function(event) {\n var context = event.context;\n\n if (context.rootElement) {\n canvas.setRootElement(context.rootElement);\n }\n });\n}\n\ninherits(RootElementsBehavior, CommandInterceptor);\n\nRootElementsBehavior.$inject = [ 'canvas', 'injector' ];","/**\n * @param {string} str\n *\n * @return {string}\n */\nexport function escapeCSS(str) {\n return CSS.escape(str);\n}\n\nvar HTML_ESCAPE_MAP = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n\n/**\n * @param {string} str\n *\n * @return {string}\n */\nexport function escapeHTML(str) {\n str = '' + str;\n\n return str && str.replace(/[&<>\"']/g, function(match) {\n return HTML_ESCAPE_MAP[match];\n });\n}\n","import { getDi, is } from './ModelUtil';\n\n/**\n * @typedef {import('../model/Types').Element} Element\n * @typedef {import('../model/Types').ModdleElement} ModdleElement\n */\n\nexport var planeSuffix = '_plane';\n\n/**\n * Get primary shape ID for a plane.\n *\n * @param {Element|ModdleElement} element\n *\n * @return {string}\n */\nexport function getShapeIdFromPlane(element) {\n var id = element.id;\n\n return removePlaneSuffix(id);\n}\n\n/**\n * Get plane ID for a primary shape.\n *\n * @param {Element|ModdleElement} element\n *\n * @return {string}\n */\nexport function getPlaneIdFromShape(element) {\n var id = element.id;\n\n if (is(element, 'bpmn:SubProcess')) {\n return addPlaneSuffix(id);\n }\n\n return id;\n}\n\n/**\n * Get plane ID for primary shape ID.\n *\n * @param {string} id\n *\n * @return {string}\n */\nexport function toPlaneId(id) {\n return addPlaneSuffix(id);\n}\n\n/**\n * Check wether element is plane.\n *\n * @param {Element|ModdleElement} element\n *\n * @return {boolean}\n */\nexport function isPlane(element) {\n var di = getDi(element);\n\n return is(di, 'bpmndi:BPMNPlane');\n}\n\nfunction addPlaneSuffix(id) {\n return id + planeSuffix;\n}\n\nfunction removePlaneSuffix(id) {\n return id.replace(new RegExp(planeSuffix + '$'), '');\n}","import { domify, classes } from 'min-dom';\nimport { find } from 'min-dash';\n\nimport { escapeHTML } from 'diagram-js/lib/util/EscapeUtil';\nimport { getBusinessObject, is } from '../../util/ModelUtil';\nimport {\n getPlaneIdFromShape\n} from '../../util/DrilldownUtil';\n\n/**\n * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas\n * @typedef {import('diagram-js/lib/core/ElementRegistry').default} ElementRegistry\n * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus\n *\n * @typedef {import('../../model/Types').Element} Element\n * @typedef {import('../../model/Types').Shape} Shape\n */\n\nvar OPEN_CLASS = 'bjs-breadcrumbs-shown';\n\n\n/**\n * Adds overlays that allow switching planes on collapsed subprocesses.\n *\n * @param {EventBus} eventBus\n * @param {ElementRegistry} elementRegistry\n * @param {Canvas} canvas\n */\nexport default function DrilldownBreadcrumbs(eventBus, elementRegistry, canvas) {\n var breadcrumbs = domify('
    ');\n var container = canvas.getContainer();\n var containerClasses = classes(container);\n container.appendChild(breadcrumbs);\n\n var businessObjectParents = [];\n\n // update breadcrumbs if name or ID of the primary shape changes\n eventBus.on('element.changed', function(event) {\n var shape = event.element,\n businessObject = getBusinessObject(shape);\n\n var isPresent = find(businessObjectParents, function(element) {\n return element === businessObject;\n });\n\n if (!isPresent) {\n return;\n }\n\n updateBreadcrumbs();\n });\n\n /**\n * Updates the displayed breadcrumbs. If no element is provided, only the\n * labels are updated.\n *\n * @param {Element} [element]\n */\n function updateBreadcrumbs(element) {\n if (element) {\n businessObjectParents = getBusinessObjectParentChain(element);\n }\n\n var path = businessObjectParents.map(function(parent) {\n var title = escapeHTML(parent.name || parent.id);\n var link = domify('
  • ' + title + '
  • ');\n\n var parentPlane = canvas.findRoot(getPlaneIdFromShape(parent)) || canvas.findRoot(parent.id);\n\n // when the root is a collaboration, the process does not have a corresponding\n // element in the elementRegisty. Instead, we search for the corresponding participant\n if (!parentPlane && is(parent, 'bpmn:Process')) {\n var participant = elementRegistry.find(function(element) {\n var businessObject = getBusinessObject(element);\n\n return businessObject && businessObject.get('processRef') && businessObject.get('processRef') === parent;\n });\n\n parentPlane = canvas.findRoot(participant.id);\n }\n\n link.addEventListener('click', function() {\n canvas.setRootElement(parentPlane);\n });\n\n return link;\n });\n\n breadcrumbs.innerHTML = '';\n\n // show breadcrumbs and expose state to .djs-container\n var visible = path.length > 1;\n\n containerClasses.toggle(OPEN_CLASS, visible);\n\n path.forEach(function(element) {\n breadcrumbs.appendChild(element);\n });\n }\n\n eventBus.on('root.set', function(event) {\n updateBreadcrumbs(event.element);\n });\n\n}\n\nDrilldownBreadcrumbs.$inject = [ 'eventBus', 'elementRegistry', 'canvas' ];\n\n\n// helpers //////////\n\n/**\n * Returns the parents for the element using the business object chain,\n * starting with the root element.\n *\n * @param {Shape} child\n *\n * @return {Shape}\n */\nfunction getBusinessObjectParentChain(child) {\n var businessObject = getBusinessObject(child);\n\n var parents = [];\n\n for (var element = businessObject; element; element = element.$parent) {\n if (is(element, 'bpmn:SubProcess') || is(element, 'bpmn:Process')) {\n parents.push(element);\n }\n }\n\n return parents.reverse();\n}","import { is } from '../../util/ModelUtil';\n\n/**\n * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas\n * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus\n */\n\n/**\n * Move collapsed subprocesses into view when drilling down.\n *\n * Zoom and scroll are saved in a session.\n *\n * @param {EventBus} eventBus\n * @param {Canvas} canvas\n */\nexport default function DrilldownCentering(eventBus, canvas) {\n\n var currentRoot = null;\n var positionMap = new Map();\n\n eventBus.on('root.set', function(event) {\n var newRoot = event.element;\n var currentViewbox = canvas.viewbox();\n var storedViewbox = positionMap.get(newRoot);\n\n positionMap.set(currentRoot, {\n x: currentViewbox.x,\n y: currentViewbox.y,\n zoom: currentViewbox.scale\n });\n\n currentRoot = newRoot;\n\n // current root was replaced with a collaboration, we don't update the viewbox\n if (is(newRoot, 'bpmn:Collaboration') && !storedViewbox) {\n return;\n }\n\n storedViewbox = storedViewbox || { x: 0, y: 0, zoom: 1 };\n\n var dx = (currentViewbox.x - storedViewbox.x) * currentViewbox.scale,\n dy = (currentViewbox.y - storedViewbox.y) * currentViewbox.scale;\n\n if (dx !== 0 || dy !== 0) {\n canvas.scroll({\n dx: dx,\n dy: dy\n });\n }\n\n if (storedViewbox.zoom !== currentViewbox.scale) {\n canvas.zoom(storedViewbox.zoom, { x: 0, y: 0 });\n }\n });\n\n eventBus.on('diagram.clear', function() {\n positionMap.clear();\n currentRoot = null;\n });\n\n}\n\nDrilldownCentering.$inject = [ 'eventBus', 'canvas' ];\n\n\n/**\n * ES5 Map implementation. Works.\n */\nfunction Map() {\n\n this._entries = [];\n\n this.set = function(key, value) {\n\n var found = false;\n\n for (var k in this._entries) {\n if (this._entries[k][0] === key) {\n this._entries[k][1] = value;\n\n found = true;\n\n break;\n }\n }\n\n if (!found) {\n this._entries.push([ key, value ]);\n }\n };\n\n this.get = function(key) {\n\n for (var k in this._entries) {\n if (this._entries[k][0] === key) {\n return this._entries[k][1];\n }\n }\n\n return null;\n };\n\n this.clear = function() {\n this._entries.length = 0;\n };\n\n this.remove = function(key) {\n\n var idx = -1;\n\n for (var k in this._entries) {\n if (this._entries[k][0] === key) {\n idx = k;\n\n break;\n }\n }\n\n if (idx !== -1) {\n this._entries.splice(idx, 1);\n }\n };\n}","\nimport { asBounds, asTRBL } from 'diagram-js/lib/layout/LayoutUtil';\nimport { is, isAny } from '../../util/ModelUtil';\n\n/**\n * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus\n * @typedef {import('../../model/Types').Moddle} Moddle\n *\n * @typedef {import('../../model/Types').Element} Element\n * @typedef {import('../../model/Types').Shape} Shape\n *\n * @typedef {import('diagram-js/lib/core/Canvas').CanvasPlane} CanvasPlane\n *\n * @typedef {import('diagram-js/lib/util/Types').Rect} Rect\n */\n\nvar DEFAULT_POSITION = {\n x: 180,\n y: 160\n};\n\n/**\n * Hook into `import.render.start` and create new planes for diagrams with\n * collapsed subprocesses and all DI elements on the same plane.\n *\n * @param {EventBus} eventBus\n * @param {Moddle} moddle\n */\nexport default function SubprocessCompatibility(eventBus, moddle) {\n this._eventBus = eventBus;\n this._moddle = moddle;\n\n var self = this;\n\n eventBus.on('import.render.start', 1500, function(e, context) {\n self._handleImport(context.definitions);\n });\n}\n\n/**\n * @param {ModdleElement} definitions\n */\nSubprocessCompatibility.prototype._handleImport = function(definitions) {\n if (!definitions.diagrams) {\n return;\n }\n\n var self = this;\n this._definitions = definitions;\n this._processToDiagramMap = {};\n\n definitions.diagrams.forEach(function(diagram) {\n if (!diagram.plane || !diagram.plane.bpmnElement) {\n return;\n }\n\n self._processToDiagramMap[diagram.plane.bpmnElement.id] = diagram;\n });\n\n var newDiagrams = [];\n definitions.diagrams.forEach(function(diagram) {\n var createdDiagrams = self._createNewDiagrams(diagram.plane);\n Array.prototype.push.apply(newDiagrams, createdDiagrams);\n });\n\n newDiagrams.forEach(function(diagram) {\n self._movePlaneElementsToOrigin(diagram.plane);\n });\n};\n\n\n/**\n * Moves all DI elements from collapsed subprocesses to a new plane.\n *\n * @param {CanvasPlane} plane\n *\n * @return {ModdleElement[]} new diagrams created for the collapsed subprocesses\n */\nSubprocessCompatibility.prototype._createNewDiagrams = function(plane) {\n var self = this;\n\n var collapsedElements = [];\n var elementsToMove = [];\n\n plane.get('planeElement').forEach(function(diElement) {\n var businessObject = diElement.bpmnElement;\n\n if (!businessObject) {\n return;\n }\n\n var parent = businessObject.$parent;\n\n if (is(businessObject, 'bpmn:SubProcess') && !diElement.isExpanded) {\n collapsedElements.push(businessObject);\n }\n\n if (shouldMoveToPlane(businessObject, plane)) {\n\n // don't change the array while we iterate over it\n elementsToMove.push({ diElement: diElement, parent: parent });\n }\n });\n\n var newDiagrams = [];\n\n // create new planes for all collapsed subprocesses, even when they are empty\n collapsedElements.forEach(function(element) {\n if (!self._processToDiagramMap[ element.id ]) {\n var diagram = self._createDiagram(element);\n\n self._processToDiagramMap[element.id] = diagram;\n\n newDiagrams.push(diagram);\n }\n });\n\n elementsToMove.forEach(function(element) {\n var diElement = element.diElement;\n var parent = element.parent;\n\n // parent is expanded, get nearest collapsed parent\n while (parent && collapsedElements.indexOf(parent) === -1) {\n parent = parent.$parent;\n }\n\n // false positive, all parents are expanded\n if (!parent) {\n return;\n }\n\n var diagram = self._processToDiagramMap[ parent.id ];\n\n self._moveToDiPlane(diElement, diagram.plane);\n });\n\n return newDiagrams;\n};\n\n/**\n * @param {CanvasPlane} plane\n */\nSubprocessCompatibility.prototype._movePlaneElementsToOrigin = function(plane) {\n var elements = plane.get('planeElement');\n\n // get bounding box of all elements\n var planeBounds = getPlaneBounds(plane);\n\n var offset = {\n x: planeBounds.x - DEFAULT_POSITION.x,\n y: planeBounds.y - DEFAULT_POSITION.y\n };\n\n elements.forEach(function(diElement) {\n if (diElement.waypoint) {\n diElement.waypoint.forEach(function(waypoint) {\n waypoint.x = waypoint.x - offset.x;\n waypoint.y = waypoint.y - offset.y;\n });\n } else if (diElement.bounds) {\n diElement.bounds.x = diElement.bounds.x - offset.x;\n diElement.bounds.y = diElement.bounds.y - offset.y;\n }\n });\n};\n\n/**\n * @param {ModdleElement} diElement\n * @param {CanvasPlane} newPlane\n */\nSubprocessCompatibility.prototype._moveToDiPlane = function(diElement, newPlane) {\n var containingDiagram = findRootDiagram(diElement);\n\n // remove DI from old Plane and add it to the new one\n var parentPlaneElement = containingDiagram.plane.get('planeElement');\n\n parentPlaneElement.splice(parentPlaneElement.indexOf(diElement), 1);\n\n newPlane.get('planeElement').push(diElement);\n};\n\n/**\n * @param {ModdleElement} businessObject\n *\n * @return {ModdleElement}\n */\nSubprocessCompatibility.prototype._createDiagram = function(businessObject) {\n var plane = this._moddle.create('bpmndi:BPMNPlane', {\n bpmnElement: businessObject\n });\n\n var diagram = this._moddle.create('bpmndi:BPMNDiagram', {\n plane: plane\n });\n\n plane.$parent = diagram;\n\n plane.bpmnElement = businessObject;\n\n diagram.$parent = this._definitions;\n\n this._definitions.diagrams.push(diagram);\n\n return diagram;\n};\n\nSubprocessCompatibility.$inject = [ 'eventBus', 'moddle' ];\n\n\n// helpers //////////\n\nfunction findRootDiagram(element) {\n if (is(element, 'bpmndi:BPMNDiagram')) {\n return element;\n } else {\n return findRootDiagram(element.$parent);\n }\n}\n\n/**\n * @param {CanvasPlane} plane\n *\n * @return {Rect}\n */\nfunction getPlaneBounds(plane) {\n var planeTrbl = {\n top: Infinity,\n right: -Infinity,\n bottom: -Infinity,\n left: Infinity\n };\n\n plane.planeElement.forEach(function(element) {\n if (!element.bounds) {\n return;\n }\n\n var trbl = asTRBL(element.bounds);\n\n planeTrbl.top = Math.min(trbl.top, planeTrbl.top);\n planeTrbl.left = Math.min(trbl.left, planeTrbl.left);\n });\n\n return asBounds(planeTrbl);\n}\n\n/**\n * @param {ModdleElement} businessObject\n * @param {CanvasPlane} plane\n *\n * @return {boolean}\n */\nfunction shouldMoveToPlane(businessObject, plane) {\n var parent = businessObject.$parent;\n\n // don't move elements that are already on the plane\n if (!is(parent, 'bpmn:SubProcess') || parent === plane.bpmnElement) {\n return false;\n }\n\n // dataAssociations are children of the subprocess but rendered on process level\n // cf. https://github.com/bpmn-io/bpmn-js/issues/1619\n if (isAny(businessObject, [ 'bpmn:DataInputAssociation', 'bpmn:DataOutputAssociation' ])) {\n return false;\n }\n\n return true;\n}\n","import inherits from 'inherits-browser';\n\nimport CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\nimport { getBusinessObject, is } from '../../util/ModelUtil';\nimport { classes, domify } from 'min-dom';\nimport { getPlaneIdFromShape } from '../../util/DrilldownUtil';\n\n/**\n * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas\n * @typedef {import('diagram-js/lib/core/ElementRegistry').default} ElementRegistry\n * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus\n * @typedef {import('diagram-js/lib/features/overlays/Overlays').default} Overlays\n *\n * @typedef {import('../../model/Types').Element} Element\n * @typedef {import('../../model/Types').Parent} Parent\n * @typedef {import('../../model/Types').Shape} Shape\n */\n\nvar LOW_PRIORITY = 250;\nvar ARROW_DOWN_SVG = '';\n\nvar EMPTY_MARKER = 'bjs-drilldown-empty';\n\n/**\n * @param {Canvas} canvas\n * @param {EventBus} eventBus\n * @param {ElementRegistry} elementRegistry\n * @param {Overlays} overlays\n */\nexport default function DrilldownOverlayBehavior(\n canvas, eventBus, elementRegistry, overlays\n) {\n CommandInterceptor.call(this, eventBus);\n\n this._canvas = canvas;\n this._eventBus = eventBus;\n this._elementRegistry = elementRegistry;\n this._overlays = overlays;\n\n var self = this;\n\n this.executed('shape.toggleCollapse', LOW_PRIORITY, function(context) {\n var shape = context.shape;\n\n // Add overlay to the collapsed shape\n if (self._canDrillDown(shape)) {\n self._addOverlay(shape);\n } else {\n self._removeOverlay(shape);\n }\n }, true);\n\n\n this.reverted('shape.toggleCollapse', LOW_PRIORITY, function(context) {\n var shape = context.shape;\n\n // Add overlay to the collapsed shape\n if (self._canDrillDown(shape)) {\n self._addOverlay(shape);\n } else {\n self._removeOverlay(shape);\n }\n }, true);\n\n\n this.executed([ 'shape.create', 'shape.move', 'shape.delete' ], LOW_PRIORITY,\n function(context) {\n var oldParent = context.oldParent,\n newParent = context.newParent || context.parent,\n shape = context.shape;\n\n // Add overlay to the collapsed shape\n if (self._canDrillDown(shape)) {\n self._addOverlay(shape);\n }\n\n self._updateDrilldownOverlay(oldParent);\n self._updateDrilldownOverlay(newParent);\n self._updateDrilldownOverlay(shape);\n }, true);\n\n\n this.reverted([ 'shape.create', 'shape.move', 'shape.delete' ], LOW_PRIORITY,\n function(context) {\n var oldParent = context.oldParent,\n newParent = context.newParent || context.parent,\n shape = context.shape;\n\n // Add overlay to the collapsed shape\n if (self._canDrillDown(shape)) {\n self._addOverlay(shape);\n }\n\n self._updateDrilldownOverlay(oldParent);\n self._updateDrilldownOverlay(newParent);\n self._updateDrilldownOverlay(shape);\n }, true);\n\n\n eventBus.on('import.render.complete', function() {\n elementRegistry.filter(function(e) {\n return self._canDrillDown(e);\n }).map(function(el) {\n self._addOverlay(el);\n });\n });\n\n}\n\ninherits(DrilldownOverlayBehavior, CommandInterceptor);\n\n/**\n * @param {Shape} shape\n */\nDrilldownOverlayBehavior.prototype._updateDrilldownOverlay = function(shape) {\n var canvas = this._canvas;\n\n if (!shape) {\n return;\n }\n\n var root = canvas.findRoot(shape);\n\n if (root) {\n this._updateOverlayVisibility(root);\n }\n};\n\n/**\n * @param {Element} element\n *\n * @return {boolean}\n */\nDrilldownOverlayBehavior.prototype._canDrillDown = function(element) {\n var canvas = this._canvas;\n\n return is(element, 'bpmn:SubProcess') && canvas.findRoot(getPlaneIdFromShape(element));\n};\n\n/**\n * Update the visibility of the drilldown overlay. If the plane has no elements,\n * the drilldown will only be shown when the element is selected.\n *\n * @param {Parent} element The collapsed root or shape.\n */\nDrilldownOverlayBehavior.prototype._updateOverlayVisibility = function(element) {\n var overlays = this._overlays;\n\n var businessObject = getBusinessObject(element);\n\n var overlay = overlays.get({ element: businessObject.id, type: 'drilldown' })[0];\n\n if (!overlay) {\n return;\n }\n\n var hasFlowElements = businessObject\n && businessObject.get('flowElements')\n && businessObject.get('flowElements').length;\n\n classes(overlay.html).toggle(EMPTY_MARKER, !hasFlowElements);\n};\n\n/**\n * Add a drilldown button to the given element assuming the plane has the same\n * ID as the element.\n *\n * @param {Shape} element The collapsed shape.\n */\nDrilldownOverlayBehavior.prototype._addOverlay = function(element) {\n var canvas = this._canvas,\n overlays = this._overlays;\n\n var existingOverlays = overlays.get({ element: element, type: 'drilldown' });\n\n if (existingOverlays.length) {\n this._removeOverlay(element);\n }\n\n var button = domify('');\n\n button.addEventListener('click', function() {\n canvas.setRootElement(canvas.findRoot(getPlaneIdFromShape(element)));\n });\n\n overlays.add(element, 'drilldown', {\n position: {\n bottom: -7,\n right: -8\n },\n html: button\n });\n\n this._updateOverlayVisibility(element);\n};\n\nDrilldownOverlayBehavior.prototype._removeOverlay = function(element) {\n var overlays = this._overlays;\n\n overlays.remove({\n element: element,\n type: 'drilldown'\n });\n};\n\nDrilldownOverlayBehavior.$inject = [\n 'canvas',\n 'eventBus',\n 'elementRegistry',\n 'overlays'\n];","import inherits from 'inherits-browser';\n\nimport BaseRenderer from './BaseRenderer';\n\nimport {\n componentsToPath,\n createLine\n} from '../util/RenderUtil';\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate\n} from 'tiny-svg';\n\nimport { assign } from 'min-dash';\n\nimport {\n isFrameElement\n} from '../util/Elements';\n\n/**\n * @typedef {import('../core/EventBus').default} EventBus\n * @typedef {import('./Styles').default} Styles\n */\n\n// apply default renderer with lowest possible priority\n// so that it only kicks in if noone else could render\nvar DEFAULT_RENDER_PRIORITY = 1;\n\n/**\n * The default renderer used for shapes and connections.\n *\n * @param {EventBus} eventBus\n * @param {Styles} styles\n */\nexport default function DefaultRenderer(eventBus, styles) {\n\n BaseRenderer.call(this, eventBus, DEFAULT_RENDER_PRIORITY);\n\n this.CONNECTION_STYLE = styles.style([ 'no-fill' ], { strokeWidth: 5, stroke: 'fuchsia' });\n this.SHAPE_STYLE = styles.style({ fill: 'white', stroke: 'fuchsia', strokeWidth: 2 });\n this.FRAME_STYLE = styles.style([ 'no-fill' ], { stroke: 'fuchsia', strokeDasharray: 4, strokeWidth: 2 });\n}\n\ninherits(DefaultRenderer, BaseRenderer);\n\n\n/**\n * @private\n */\nDefaultRenderer.prototype.canRender = function() {\n return true;\n};\n\n/**\n * @private\n */\nDefaultRenderer.prototype.drawShape = function drawShape(visuals, element, attrs) {\n var rect = svgCreate('rect');\n\n svgAttr(rect, {\n x: 0,\n y: 0,\n width: element.width || 0,\n height: element.height || 0\n });\n\n if (isFrameElement(element)) {\n svgAttr(rect, assign({}, this.FRAME_STYLE, attrs || {}));\n } else {\n svgAttr(rect, assign({}, this.SHAPE_STYLE, attrs || {}));\n }\n\n svgAppend(visuals, rect);\n\n return rect;\n};\n\n/**\n * @private\n */\nDefaultRenderer.prototype.drawConnection = function drawConnection(visuals, connection, attrs) {\n\n var line = createLine(connection.waypoints, assign({}, this.CONNECTION_STYLE, attrs || {}));\n svgAppend(visuals, line);\n\n return line;\n};\n\n/**\n * @private\n */\nDefaultRenderer.prototype.getShapePath = function getShapePath(shape) {\n\n var x = shape.x,\n y = shape.y,\n width = shape.width,\n height = shape.height;\n\n var shapePath = [\n [ 'M', x, y ],\n [ 'l', width, 0 ],\n [ 'l', 0, height ],\n [ 'l', -width, 0 ],\n [ 'z' ]\n ];\n\n return componentsToPath(shapePath);\n};\n\n/**\n * @private\n */\nDefaultRenderer.prototype.getConnectionPath = function getConnectionPath(connection) {\n var waypoints = connection.waypoints;\n\n var idx, point, connectionPath = [];\n\n for (idx = 0; (point = waypoints[idx]); idx++) {\n\n // take invisible docking into account\n // when creating the path\n point = point.original || point;\n\n connectionPath.push([ idx === 0 ? 'M' : 'L', point.x, point.y ]);\n }\n\n return componentsToPath(connectionPath);\n};\n\nDefaultRenderer.$inject = [ 'eventBus', 'styles' ];\n","import {\n isNumber,\n assign,\n forEach,\n every,\n debounce,\n bind,\n reduce,\n find\n} from 'min-dash';\n\nimport {\n assignStyle\n} from 'min-dom';\n\nimport {\n add as collectionAdd,\n remove as collectionRemove\n} from '../util/Collections';\n\nimport {\n getType,\n getBBox as getBoundingBox\n} from '../util/Elements';\n\nimport { asTRBL } from '../layout/LayoutUtil';\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n classes as svgClasses,\n create as svgCreate,\n transform as svgTransform,\n remove as svgRemove\n} from 'tiny-svg';\n\nimport { createMatrix as createMatrix } from 'tiny-svg';\n\n\n/**\n * @typedef {import('./Types').ConnectionLike} ConnectionLike\n * @typedef {import('./Types').RootLike} RootLike\n * @typedef {import('./Types').ParentLike } ParentLike\n * @typedef {import('./Types').ShapeLike} ShapeLike\n *\n * @typedef { {\n * container?: HTMLElement;\n * deferUpdate?: boolean;\n * width?: number;\n * height?: number;\n * } } CanvasConfig\n * @typedef { {\n * group: SVGElement;\n * index: number;\n * visible: boolean;\n * } } CanvasLayer\n * @typedef { {\n * [key: string]: CanvasLayer;\n * } } CanvasLayers\n * @typedef { {\n * rootElement: ShapeLike;\n * layer: CanvasLayer;\n * } } CanvasPlane\n * @typedef { {\n * scale: number;\n * inner: Rect;\n * outer: Dimensions;\n * } & Rect } CanvasViewbox\n *\n * @typedef {import('./ElementRegistry').default} ElementRegistry\n * @typedef {import('./EventBus').default} EventBus\n * @typedef {import('./GraphicsFactory').default} GraphicsFactory\n *\n * @typedef {import('../util/Types').Dimensions} Dimensions\n * @typedef {import('../util/Types').Point} Point\n * @typedef {import('../util/Types').Rect} Rect\n * @typedef {import('../util/Types').RectTRBL} RectTRBL\n */\n\nfunction round(number, resolution) {\n return Math.round(number * resolution) / resolution;\n}\n\nfunction ensurePx(number) {\n return isNumber(number) ? number + 'px' : number;\n}\n\nfunction findRoot(element) {\n while (element.parent) {\n element = element.parent;\n }\n\n return element;\n}\n\n/**\n * Creates a HTML container element for a SVG element with\n * the given configuration\n *\n * @param {CanvasConfig} options\n *\n * @return {HTMLElement} the container element\n */\nfunction createContainer(options) {\n\n options = assign({}, { width: '100%', height: '100%' }, options);\n\n const container = options.container || document.body;\n\n // create a
    around the svg element with the respective size\n // this way we can always get the correct container size\n // (this is impossible for elements at the moment)\n const parent = document.createElement('div');\n parent.setAttribute('class', 'djs-container djs-parent');\n\n assignStyle(parent, {\n position: 'relative',\n overflow: 'hidden',\n width: ensurePx(options.width),\n height: ensurePx(options.height)\n });\n\n container.appendChild(parent);\n\n return parent;\n}\n\nfunction createGroup(parent, cls, childIndex) {\n const group = svgCreate('g');\n svgClasses(group).add(cls);\n\n const index = childIndex !== undefined ? childIndex : parent.childNodes.length - 1;\n\n // must ensure second argument is node or _null_\n // cf. https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore\n parent.insertBefore(group, parent.childNodes[index] || null);\n\n return group;\n}\n\nconst BASE_LAYER = 'base';\n\n// render plane contents behind utility layers\nconst PLANE_LAYER_INDEX = 0;\nconst UTILITY_LAYER_INDEX = 1;\n\n\nconst REQUIRED_MODEL_ATTRS = {\n shape: [ 'x', 'y', 'width', 'height' ],\n connection: [ 'waypoints' ]\n};\n\n/**\n * The main drawing canvas.\n *\n * @class\n * @constructor\n *\n * @emits Canvas#canvas.init\n *\n * @param {CanvasConfig|null} config\n * @param {EventBus} eventBus\n * @param {GraphicsFactory} graphicsFactory\n * @param {ElementRegistry} elementRegistry\n */\nexport default function Canvas(config, eventBus, graphicsFactory, elementRegistry) {\n this._eventBus = eventBus;\n this._elementRegistry = elementRegistry;\n this._graphicsFactory = graphicsFactory;\n\n /**\n * @type {number}\n */\n this._rootsIdx = 0;\n\n /**\n * @type {CanvasLayers}\n */\n this._layers = {};\n\n /**\n * @type {CanvasPlane[]}\n */\n this._planes = [];\n\n /**\n * @type {RootLike|null}\n */\n this._rootElement = null;\n\n this._init(config || {});\n}\n\nCanvas.$inject = [\n 'config.canvas',\n 'eventBus',\n 'graphicsFactory',\n 'elementRegistry'\n];\n\n/**\n * Creates a element that is wrapped into a
    .\n * This way we are always able to correctly figure out the size of the svg element\n * by querying the parent node.\n\n * (It is not possible to get the size of a svg element cross browser @ 2014-04-01)\n\n *
    \n * \n * ...\n * \n *
    \n *\n * @param {CanvasConfig} config\n */\nCanvas.prototype._init = function(config) {\n\n const eventBus = this._eventBus;\n\n // html container\n const container = this._container = createContainer(config);\n\n const svg = this._svg = svgCreate('svg');\n svgAttr(svg, { width: '100%', height: '100%' });\n\n svgAppend(container, svg);\n\n const viewport = this._viewport = createGroup(svg, 'viewport');\n\n // debounce canvas.viewbox.changed events when deferUpdate is set\n // to help with potential performance issues\n if (config.deferUpdate) {\n this._viewboxChanged = debounce(bind(this._viewboxChanged, this), 300);\n }\n\n eventBus.on('diagram.init', () => {\n\n /**\n * An event indicating that the canvas is ready to be drawn on.\n *\n * @memberOf Canvas\n *\n * @event canvas.init\n *\n * @type {Object}\n * @property {SVGElement} svg the created svg element\n * @property {SVGElement} viewport the direct parent of diagram elements and shapes\n */\n eventBus.fire('canvas.init', {\n svg: svg,\n viewport: viewport\n });\n\n });\n\n // reset viewbox on shape changes to\n // recompute the viewbox\n eventBus.on([\n 'shape.added',\n 'connection.added',\n 'shape.removed',\n 'connection.removed',\n 'elements.changed',\n 'root.set'\n ], () => {\n delete this._cachedViewbox;\n });\n\n eventBus.on('diagram.destroy', 500, this._destroy, this);\n eventBus.on('diagram.clear', 500, this._clear, this);\n};\n\nCanvas.prototype._destroy = function() {\n this._eventBus.fire('canvas.destroy', {\n svg: this._svg,\n viewport: this._viewport\n });\n\n const parent = this._container.parentNode;\n\n if (parent) {\n parent.removeChild(this._container);\n }\n\n delete this._svg;\n delete this._container;\n delete this._layers;\n delete this._planes;\n delete this._rootElement;\n delete this._viewport;\n};\n\nCanvas.prototype._clear = function() {\n\n const allElements = this._elementRegistry.getAll();\n\n // remove all elements\n allElements.forEach(element => {\n const type = getType(element);\n\n if (type === 'root') {\n this.removeRootElement(element);\n } else {\n this._removeElement(element, type);\n }\n });\n\n // remove all planes\n this._planes = [];\n this._rootElement = null;\n\n // force recomputation of view box\n delete this._cachedViewbox;\n};\n\n/**\n * Returns the default layer on which\n * all elements are drawn.\n *\n * @return {SVGElement} The SVG element of the layer.\n */\nCanvas.prototype.getDefaultLayer = function() {\n return this.getLayer(BASE_LAYER, PLANE_LAYER_INDEX);\n};\n\n/**\n * Returns a layer that is used to draw elements\n * or annotations on it.\n *\n * Non-existing layers retrieved through this method\n * will be created. During creation, the optional index\n * may be used to create layers below or above existing layers.\n * A layer with a certain index is always created above all\n * existing layers with the same index.\n *\n * @param {string} name The name of the layer.\n * @param {number} [index] The index of the layer.\n *\n * @return {SVGElement} The SVG element of the layer.\n */\nCanvas.prototype.getLayer = function(name, index) {\n\n if (!name) {\n throw new Error('must specify a name');\n }\n\n let layer = this._layers[name];\n\n if (!layer) {\n layer = this._layers[name] = this._createLayer(name, index);\n }\n\n // throw an error if layer creation / retrival is\n // requested on different index\n if (typeof index !== 'undefined' && layer.index !== index) {\n throw new Error('layer <' + name + '> already created at index <' + index + '>');\n }\n\n return layer.group;\n};\n\n/**\n * For a given index, return the number of layers that have a higher index and\n * are visible.\n *\n * This is used to determine the node a layer should be inserted at.\n *\n * @param {number} index\n *\n * @return {number}\n */\nCanvas.prototype._getChildIndex = function(index) {\n return reduce(this._layers, function(childIndex, layer) {\n if (layer.visible && index >= layer.index) {\n childIndex++;\n }\n\n return childIndex;\n }, 0);\n};\n\n/**\n * Creates a given layer and returns it.\n *\n * @param {string} name\n * @param {number} [index=0]\n *\n * @return {CanvasLayer}\n */\nCanvas.prototype._createLayer = function(name, index) {\n\n if (typeof index === 'undefined') {\n index = UTILITY_LAYER_INDEX;\n }\n\n const childIndex = this._getChildIndex(index);\n\n return {\n group: createGroup(this._viewport, 'layer-' + name, childIndex),\n index: index,\n visible: true\n };\n};\n\n\n/**\n * Shows a given layer.\n *\n * @param {string} name The name of the layer.\n *\n * @return {SVGElement} The SVG element of the layer.\n */\nCanvas.prototype.showLayer = function(name) {\n\n if (!name) {\n throw new Error('must specify a name');\n }\n\n const layer = this._layers[name];\n\n if (!layer) {\n throw new Error('layer <' + name + '> does not exist');\n }\n\n const viewport = this._viewport;\n const group = layer.group;\n const index = layer.index;\n\n if (layer.visible) {\n return group;\n }\n\n const childIndex = this._getChildIndex(index);\n\n viewport.insertBefore(group, viewport.childNodes[childIndex] || null);\n\n layer.visible = true;\n\n return group;\n};\n\n/**\n * Hides a given layer.\n *\n * @param {string} name The name of the layer.\n *\n * @return {SVGElement} The SVG element of the layer.\n */\nCanvas.prototype.hideLayer = function(name) {\n\n if (!name) {\n throw new Error('must specify a name');\n }\n\n const layer = this._layers[name];\n\n if (!layer) {\n throw new Error('layer <' + name + '> does not exist');\n }\n\n const group = layer.group;\n\n if (!layer.visible) {\n return group;\n }\n\n svgRemove(group);\n\n layer.visible = false;\n\n return group;\n};\n\n\nCanvas.prototype._removeLayer = function(name) {\n\n const layer = this._layers[name];\n\n if (layer) {\n delete this._layers[name];\n\n svgRemove(layer.group);\n }\n};\n\n/**\n * Returns the currently active layer. Can be null.\n *\n * @return {CanvasLayer|null} The active layer of `null`.\n */\nCanvas.prototype.getActiveLayer = function() {\n const plane = this._findPlaneForRoot(this.getRootElement());\n\n if (!plane) {\n return null;\n }\n\n return plane.layer;\n};\n\n\n/**\n * Returns the plane which contains the given element.\n *\n * @param {ShapeLike|ConnectionLike|string} element The element or its ID.\n *\n * @return {RootLike|undefined} The root of the element.\n */\nCanvas.prototype.findRoot = function(element) {\n if (typeof element === 'string') {\n element = this._elementRegistry.get(element);\n }\n\n if (!element) {\n return;\n }\n\n const plane = this._findPlaneForRoot(\n findRoot(element)\n ) || {};\n\n return plane.rootElement;\n};\n\n/**\n * Return a list of all root elements on the diagram.\n *\n * @return {(RootLike)[]} The list of root elements.\n */\nCanvas.prototype.getRootElements = function() {\n return this._planes.map(function(plane) {\n return plane.rootElement;\n });\n};\n\nCanvas.prototype._findPlaneForRoot = function(rootElement) {\n return find(this._planes, function(plane) {\n return plane.rootElement === rootElement;\n });\n};\n\n\n/**\n * Returns the html element that encloses the\n * drawing canvas.\n *\n * @return {HTMLElement} The HTML element of the container.\n */\nCanvas.prototype.getContainer = function() {\n return this._container;\n};\n\n\n// markers //////////////////////\n\nCanvas.prototype._updateMarker = function(element, marker, add) {\n let container;\n\n if (!element.id) {\n element = this._elementRegistry.get(element);\n }\n\n // we need to access all\n container = this._elementRegistry._elements[element.id];\n\n if (!container) {\n return;\n }\n\n forEach([ container.gfx, container.secondaryGfx ], function(gfx) {\n if (gfx) {\n\n // invoke either addClass or removeClass based on mode\n if (add) {\n svgClasses(gfx).add(marker);\n } else {\n svgClasses(gfx).remove(marker);\n }\n }\n });\n\n /**\n * An event indicating that a marker has been updated for an element\n *\n * @event element.marker.update\n * @type {Object}\n * @property {Element} element the shape\n * @property {SVGElement} gfx the graphical representation of the shape\n * @property {string} marker\n * @property {boolean} add true if the marker was added, false if it got removed\n */\n this._eventBus.fire('element.marker.update', { element: element, gfx: container.gfx, marker: marker, add: !!add });\n};\n\n\n/**\n * Adds a marker to an element (basically a css class).\n *\n * Fires the element.marker.update event, making it possible to\n * integrate extension into the marker life-cycle, too.\n *\n * @example\n *\n * ```javascript\n * canvas.addMarker('foo', 'some-marker');\n *\n * const fooGfx = canvas.getGraphics('foo');\n *\n * fooGfx; // ... \n * ```\n *\n * @param {ShapeLike|ConnectionLike|string} element The element or its ID.\n * @param {string} marker The marker.\n */\nCanvas.prototype.addMarker = function(element, marker) {\n this._updateMarker(element, marker, true);\n};\n\n\n/**\n * Remove a marker from an element.\n *\n * Fires the element.marker.update event, making it possible to\n * integrate extension into the marker life-cycle, too.\n *\n * @param {ShapeLike|ConnectionLike|string} element The element or its ID.\n * @param {string} marker The marker.\n */\nCanvas.prototype.removeMarker = function(element, marker) {\n this._updateMarker(element, marker, false);\n};\n\n/**\n * Check whether an element has a given marker.\n *\n * @param {ShapeLike|ConnectionLike|string} element The element or its ID.\n * @param {string} marker The marker.\n */\nCanvas.prototype.hasMarker = function(element, marker) {\n if (!element.id) {\n element = this._elementRegistry.get(element);\n }\n\n const gfx = this.getGraphics(element);\n\n return svgClasses(gfx).has(marker);\n};\n\n/**\n * Toggles a marker on an element.\n *\n * Fires the element.marker.update event, making it possible to\n * integrate extension into the marker life-cycle, too.\n *\n * @param {ShapeLike|ConnectionLike|string} element The element or its ID.\n * @param {string} marker The marker.\n */\nCanvas.prototype.toggleMarker = function(element, marker) {\n if (this.hasMarker(element, marker)) {\n this.removeMarker(element, marker);\n } else {\n this.addMarker(element, marker);\n }\n};\n\n/**\n * Returns the current root element.\n *\n * Supports two different modes for handling root elements:\n *\n * 1. if no root element has been added before, an implicit root will be added\n * and returned. This is used in applications that don't require explicit\n * root elements.\n *\n * 2. when root elements have been added before calling `getRootElement`,\n * root elements can be null. This is used for applications that want to manage\n * root elements themselves.\n *\n * @return {RootLike} The current root element.\n */\nCanvas.prototype.getRootElement = function() {\n const rootElement = this._rootElement;\n\n // can return null if root elements are present but none was set yet\n if (rootElement || this._planes.length) {\n return rootElement;\n }\n\n return this.setRootElement(this.addRootElement(null));\n};\n\n/**\n * Adds a given root element and returns it.\n *\n * @param {RootLike} [rootElement] The root element to be added.\n *\n * @return {RootLike} The added root element or an implicit root element.\n */\nCanvas.prototype.addRootElement = function(rootElement) {\n const idx = this._rootsIdx++;\n\n if (!rootElement) {\n rootElement = {\n id: '__implicitroot_' + idx,\n children: [],\n isImplicit: true\n };\n }\n\n const layerName = rootElement.layer = 'root-' + idx;\n\n this._ensureValid('root', rootElement);\n\n const layer = this.getLayer(layerName, PLANE_LAYER_INDEX);\n\n this.hideLayer(layerName);\n\n this._addRoot(rootElement, layer);\n\n this._planes.push({\n rootElement: rootElement,\n layer: layer\n });\n\n return rootElement;\n};\n\n/**\n * Removes a given root element and returns it.\n *\n * @param {RootLike|string} rootElement element or element ID\n *\n * @return {RootLike|undefined} removed element\n */\nCanvas.prototype.removeRootElement = function(rootElement) {\n\n if (typeof rootElement === 'string') {\n rootElement = this._elementRegistry.get(rootElement);\n }\n\n const plane = this._findPlaneForRoot(rootElement);\n\n if (!plane) {\n return;\n }\n\n // hook up life-cycle events\n this._removeRoot(rootElement);\n\n // clean up layer\n this._removeLayer(rootElement.layer);\n\n // clean up plane\n this._planes = this._planes.filter(function(plane) {\n return plane.rootElement !== rootElement;\n });\n\n // clean up active root\n if (this._rootElement === rootElement) {\n this._rootElement = null;\n }\n\n return rootElement;\n};\n\n\n/**\n * Sets a given element as the new root element for the canvas\n * and returns the new root element.\n *\n * @param {RootLike} rootElement The root element to be set.\n *\n * @return {RootLike} The set root element.\n */\nCanvas.prototype.setRootElement = function(rootElement) {\n\n if (rootElement === this._rootElement) {\n return;\n }\n\n let plane;\n\n if (!rootElement) {\n throw new Error('rootElement required');\n }\n\n plane = this._findPlaneForRoot(rootElement);\n\n // give set add semantics for backwards compatibility\n if (!plane) {\n rootElement = this.addRootElement(rootElement);\n }\n\n this._setRoot(rootElement);\n\n return rootElement;\n};\n\n\nCanvas.prototype._removeRoot = function(element) {\n const elementRegistry = this._elementRegistry,\n eventBus = this._eventBus;\n\n // simulate element remove event sequence\n eventBus.fire('root.remove', { element: element });\n eventBus.fire('root.removed', { element: element });\n\n elementRegistry.remove(element);\n};\n\n\nCanvas.prototype._addRoot = function(element, gfx) {\n const elementRegistry = this._elementRegistry,\n eventBus = this._eventBus;\n\n // resemble element add event sequence\n eventBus.fire('root.add', { element: element });\n\n elementRegistry.add(element, gfx);\n\n eventBus.fire('root.added', { element: element, gfx: gfx });\n};\n\n\nCanvas.prototype._setRoot = function(rootElement, layer) {\n\n const currentRoot = this._rootElement;\n\n if (currentRoot) {\n\n // un-associate previous root element \n this._elementRegistry.updateGraphics(currentRoot, null, true);\n\n // hide previous layer\n this.hideLayer(currentRoot.layer);\n }\n\n if (rootElement) {\n\n if (!layer) {\n layer = this._findPlaneForRoot(rootElement).layer;\n }\n\n // associate element with \n this._elementRegistry.updateGraphics(rootElement, this._svg, true);\n\n // show root layer\n this.showLayer(rootElement.layer);\n }\n\n this._rootElement = rootElement;\n\n this._eventBus.fire('root.set', { element: rootElement });\n};\n\nCanvas.prototype._ensureValid = function(type, element) {\n if (!element.id) {\n throw new Error('element must have an id');\n }\n\n if (this._elementRegistry.get(element.id)) {\n throw new Error('element <' + element.id + '> already exists');\n }\n\n const requiredAttrs = REQUIRED_MODEL_ATTRS[type];\n\n const valid = every(requiredAttrs, function(attr) {\n return typeof element[attr] !== 'undefined';\n });\n\n if (!valid) {\n throw new Error(\n 'must supply { ' + requiredAttrs.join(', ') + ' } with ' + type);\n }\n};\n\nCanvas.prototype._setParent = function(element, parent, parentIndex) {\n collectionAdd(parent.children, element, parentIndex);\n element.parent = parent;\n};\n\n/**\n * Adds an element to the canvas.\n *\n * This wires the parent <-> child relationship between the element and\n * a explicitly specified parent or an implicit root element.\n *\n * During add it emits the events\n *\n * * <{type}.add> (element, parent)\n * * <{type}.added> (element, gfx)\n *\n * Extensions may hook into these events to perform their magic.\n *\n * @param {string} type\n * @param {ConnectionLike|ShapeLike} element\n * @param {ShapeLike} [parent]\n * @param {number} [parentIndex]\n *\n * @return {ConnectionLike|ShapeLike} The added element.\n */\nCanvas.prototype._addElement = function(type, element, parent, parentIndex) {\n\n parent = parent || this.getRootElement();\n\n const eventBus = this._eventBus,\n graphicsFactory = this._graphicsFactory;\n\n this._ensureValid(type, element);\n\n eventBus.fire(type + '.add', { element: element, parent: parent });\n\n this._setParent(element, parent, parentIndex);\n\n // create graphics\n const gfx = graphicsFactory.create(type, element, parentIndex);\n\n this._elementRegistry.add(element, gfx);\n\n // update its visual\n graphicsFactory.update(type, element, gfx);\n\n eventBus.fire(type + '.added', { element: element, gfx: gfx });\n\n return element;\n};\n\n/**\n * Adds a shape to the canvas.\n *\n * @param {ShapeLike} shape The shape to be added\n * @param {ParentLike} [parent] The shape's parent.\n * @param {number} [parentIndex] The index at which to add the shape to the parent's children.\n *\n * @return {ShapeLike} The added shape.\n */\nCanvas.prototype.addShape = function(shape, parent, parentIndex) {\n return this._addElement('shape', shape, parent, parentIndex);\n};\n\n/**\n * Adds a connection to the canvas.\n *\n * @param {ConnectionLike} connection The connection to be added.\n * @param {ParentLike} [parent] The connection's parent.\n * @param {number} [parentIndex] The index at which to add the connection to the parent's children.\n *\n * @return {ConnectionLike} The added connection.\n */\nCanvas.prototype.addConnection = function(connection, parent, parentIndex) {\n return this._addElement('connection', connection, parent, parentIndex);\n};\n\n\n/**\n * Internal remove element\n */\nCanvas.prototype._removeElement = function(element, type) {\n\n const elementRegistry = this._elementRegistry,\n graphicsFactory = this._graphicsFactory,\n eventBus = this._eventBus;\n\n element = elementRegistry.get(element.id || element);\n\n if (!element) {\n\n // element was removed already\n return;\n }\n\n eventBus.fire(type + '.remove', { element: element });\n\n graphicsFactory.remove(element);\n\n // unset parent <-> child relationship\n collectionRemove(element.parent && element.parent.children, element);\n element.parent = null;\n\n eventBus.fire(type + '.removed', { element: element });\n\n elementRegistry.remove(element);\n\n return element;\n};\n\n\n/**\n * Removes a shape from the canvas.\n *\n * @fires ShapeRemoveEvent\n * @fires ShapeRemovedEvent\n *\n * @param {ShapeLike|string} shape The shape or its ID.\n *\n * @return {ShapeLike} The removed shape.\n */\nCanvas.prototype.removeShape = function(shape) {\n\n /**\n * An event indicating that a shape is about to be removed from the canvas.\n *\n * @memberOf Canvas\n *\n * @event ShapeRemoveEvent\n * @type {Object}\n * @property {ShapeLike} element The shape.\n * @property {SVGElement} gfx The graphical element.\n */\n\n /**\n * An event indicating that a shape has been removed from the canvas.\n *\n * @memberOf Canvas\n *\n * @event ShapeRemovedEvent\n * @type {Object}\n * @property {ShapeLike} element The shape.\n * @property {SVGElement} gfx The graphical element.\n */\n return this._removeElement(shape, 'shape');\n};\n\n\n/**\n * Removes a connection from the canvas.\n *\n * @fires ConnectionRemoveEvent\n * @fires ConnectionRemovedEvent\n *\n * @param {ConnectionLike|string} connection The connection or its ID.\n *\n * @return {ConnectionLike} The removed connection.\n */\nCanvas.prototype.removeConnection = function(connection) {\n\n /**\n * An event indicating that a connection is about to be removed from the canvas.\n *\n * @memberOf Canvas\n *\n * @event ConnectionRemoveEvent\n * @type {Object}\n * @property {ConnectionLike} element The connection.\n * @property {SVGElement} gfx The graphical element.\n */\n\n /**\n * An event indicating that a connection has been removed from the canvas.\n *\n * @memberOf Canvas\n *\n * @event ConnectionRemovedEvent\n * @type {Object}\n * @property {ConnectionLike} element The connection.\n * @property {SVGElement} gfx The graphical element.\n */\n return this._removeElement(connection, 'connection');\n};\n\n\n/**\n * Returns the graphical element of an element.\n *\n * @param {ShapeLike|ConnectionLike|string} element The element or its ID.\n * @param {boolean} [secondary=false] Whether to return the secondary graphical element.\n *\n * @return {SVGElement} The graphical element.\n */\nCanvas.prototype.getGraphics = function(element, secondary) {\n return this._elementRegistry.getGraphics(element, secondary);\n};\n\n\n/**\n * Perform a viewbox update via a given change function.\n *\n * @param {Function} changeFn\n */\nCanvas.prototype._changeViewbox = function(changeFn) {\n\n // notify others of the upcoming viewbox change\n this._eventBus.fire('canvas.viewbox.changing');\n\n // perform actual change\n changeFn.apply(this);\n\n // reset the cached viewbox so that\n // a new get operation on viewbox or zoom\n // triggers a viewbox re-computation\n this._cachedViewbox = null;\n\n // notify others of the change; this step\n // may or may not be debounced\n this._viewboxChanged();\n};\n\nCanvas.prototype._viewboxChanged = function() {\n this._eventBus.fire('canvas.viewbox.changed', { viewbox: this.viewbox() });\n};\n\n\n/**\n * Gets or sets the view box of the canvas, i.e. the\n * area that is currently displayed.\n *\n * The getter may return a cached viewbox (if it is currently\n * changing). To force a recomputation, pass `false` as the first argument.\n *\n * @example\n *\n * ```javascript\n * canvas.viewbox({ x: 100, y: 100, width: 500, height: 500 })\n *\n * // sets the visible area of the diagram to (100|100) -> (600|100)\n * // and and scales it according to the diagram width\n *\n * const viewbox = canvas.viewbox(); // pass `false` to force recomputing the box.\n *\n * console.log(viewbox);\n * // {\n * // inner: Dimensions,\n * // outer: Dimensions,\n * // scale,\n * // x, y,\n * // width, height\n * // }\n *\n * // if the current diagram is zoomed and scrolled, you may reset it to the\n * // default zoom via this method, too:\n *\n * const zoomedAndScrolledViewbox = canvas.viewbox();\n *\n * canvas.viewbox({\n * x: 0,\n * y: 0,\n * width: zoomedAndScrolledViewbox.outer.width,\n * height: zoomedAndScrolledViewbox.outer.height\n * });\n * ```\n *\n * @param {Rect} [box] The viewbox to be set.\n *\n * @return {CanvasViewbox} The set viewbox.\n */\nCanvas.prototype.viewbox = function(box) {\n\n if (box === undefined && this._cachedViewbox) {\n return this._cachedViewbox;\n }\n\n const viewport = this._viewport,\n outerBox = this.getSize();\n let innerBox,\n matrix,\n activeLayer,\n transform,\n scale,\n x, y;\n\n if (!box) {\n\n // compute the inner box based on the\n // diagrams active layer. This allows us to exclude\n // external components, such as overlays\n\n activeLayer = this._rootElement ? this.getActiveLayer() : null;\n innerBox = activeLayer && activeLayer.getBBox() || {};\n\n transform = svgTransform(viewport);\n matrix = transform ? transform.matrix : createMatrix();\n scale = round(matrix.a, 1000);\n\n x = round(-matrix.e || 0, 1000);\n y = round(-matrix.f || 0, 1000);\n\n box = this._cachedViewbox = {\n x: x ? x / scale : 0,\n y: y ? y / scale : 0,\n width: outerBox.width / scale,\n height: outerBox.height / scale,\n scale: scale,\n inner: {\n width: innerBox.width || 0,\n height: innerBox.height || 0,\n x: innerBox.x || 0,\n y: innerBox.y || 0\n },\n outer: outerBox\n };\n\n return box;\n } else {\n\n this._changeViewbox(function() {\n scale = Math.min(outerBox.width / box.width, outerBox.height / box.height);\n\n const matrix = this._svg.createSVGMatrix()\n .scale(scale)\n .translate(-box.x, -box.y);\n\n svgTransform(viewport, matrix);\n });\n }\n\n return box;\n};\n\n\n/**\n * Gets or sets the scroll of the canvas.\n *\n * @param {Point} [delta] The scroll to be set.\n *\n * @return {Point}\n */\nCanvas.prototype.scroll = function(delta) {\n\n const node = this._viewport;\n let matrix = node.getCTM();\n\n if (delta) {\n this._changeViewbox(function() {\n delta = assign({ dx: 0, dy: 0 }, delta || {});\n\n matrix = this._svg.createSVGMatrix().translate(delta.dx, delta.dy).multiply(matrix);\n\n setCTM(node, matrix);\n });\n }\n\n return { x: matrix.e, y: matrix.f };\n};\n\n/**\n * Scrolls the viewbox to contain the given element.\n * Optionally specify a padding to be applied to the edges.\n *\n * @param {ShapeLike|ConnectionLike|string} element The element to scroll to or its ID.\n * @param {RectTRBL|number} [padding=100] The padding to be applied. Can also specify top, bottom, left and right.\n */\nCanvas.prototype.scrollToElement = function(element, padding) {\n let defaultPadding = 100;\n\n if (typeof element === 'string') {\n element = this._elementRegistry.get(element);\n }\n\n // set to correct rootElement\n const rootElement = this.findRoot(element);\n\n if (rootElement !== this.getRootElement()) {\n this.setRootElement(rootElement);\n }\n\n // element is rootElement, do not change viewport\n if (rootElement === element) {\n return;\n }\n\n if (!padding) {\n padding = {};\n }\n if (typeof padding === 'number') {\n defaultPadding = padding;\n }\n\n padding = {\n top: padding.top || defaultPadding,\n right: padding.right || defaultPadding,\n bottom: padding.bottom || defaultPadding,\n left: padding.left || defaultPadding\n };\n\n const elementBounds = getBoundingBox(element),\n elementTrbl = asTRBL(elementBounds),\n viewboxBounds = this.viewbox(),\n zoom = this.zoom();\n let dx, dy;\n\n // shrink viewboxBounds with padding\n viewboxBounds.y += padding.top / zoom;\n viewboxBounds.x += padding.left / zoom;\n viewboxBounds.width -= (padding.right + padding.left) / zoom;\n viewboxBounds.height -= (padding.bottom + padding.top) / zoom;\n\n const viewboxTrbl = asTRBL(viewboxBounds);\n\n const canFit = elementBounds.width < viewboxBounds.width && elementBounds.height < viewboxBounds.height;\n\n if (!canFit) {\n\n // top-left when element can't fit\n dx = elementBounds.x - viewboxBounds.x;\n dy = elementBounds.y - viewboxBounds.y;\n\n } else {\n\n const dRight = Math.max(0, elementTrbl.right - viewboxTrbl.right),\n dLeft = Math.min(0, elementTrbl.left - viewboxTrbl.left),\n dBottom = Math.max(0, elementTrbl.bottom - viewboxTrbl.bottom),\n dTop = Math.min(0, elementTrbl.top - viewboxTrbl.top);\n\n dx = dRight || dLeft;\n dy = dBottom || dTop;\n\n }\n\n this.scroll({ dx: -dx * zoom, dy: -dy * zoom });\n};\n\n/**\n * Gets or sets the current zoom of the canvas, optionally zooming to the\n * specified position.\n *\n * The getter may return a cached zoom level. Call it with `false` as the first\n * argument to force recomputation of the current level.\n *\n * @param {number|'fit-viewport'} [newScale] The new zoom level, either a number,\n * i.e. 0.9, or `fit-viewport` to adjust the size to fit the current viewport.\n * @param {Point} [center] The reference point { x: ..., y: ...} to zoom to.\n *\n * @return {number} The set zoom level.\n */\nCanvas.prototype.zoom = function(newScale, center) {\n\n if (!newScale) {\n return this.viewbox(newScale).scale;\n }\n\n if (newScale === 'fit-viewport') {\n return this._fitViewport(center);\n }\n\n let outer,\n matrix;\n\n this._changeViewbox(function() {\n\n if (typeof center !== 'object') {\n outer = this.viewbox().outer;\n\n center = {\n x: outer.width / 2,\n y: outer.height / 2\n };\n }\n\n matrix = this._setZoom(newScale, center);\n });\n\n return round(matrix.a, 1000);\n};\n\nfunction setCTM(node, m) {\n const mstr = 'matrix(' + m.a + ',' + m.b + ',' + m.c + ',' + m.d + ',' + m.e + ',' + m.f + ')';\n node.setAttribute('transform', mstr);\n}\n\nCanvas.prototype._fitViewport = function(center) {\n\n const vbox = this.viewbox(),\n outer = vbox.outer,\n inner = vbox.inner;\n let newScale,\n newViewbox;\n\n // display the complete diagram without zooming in.\n // instead of relying on internal zoom, we perform a\n // hard reset on the canvas viewbox to realize this\n //\n // if diagram does not need to be zoomed in, we focus it around\n // the diagram origin instead\n\n if (inner.x >= 0 &&\n inner.y >= 0 &&\n inner.x + inner.width <= outer.width &&\n inner.y + inner.height <= outer.height &&\n !center) {\n\n newViewbox = {\n x: 0,\n y: 0,\n width: Math.max(inner.width + inner.x, outer.width),\n height: Math.max(inner.height + inner.y, outer.height)\n };\n } else {\n\n newScale = Math.min(1, outer.width / inner.width, outer.height / inner.height);\n newViewbox = {\n x: inner.x + (center ? inner.width / 2 - outer.width / newScale / 2 : 0),\n y: inner.y + (center ? inner.height / 2 - outer.height / newScale / 2 : 0),\n width: outer.width / newScale,\n height: outer.height / newScale\n };\n }\n\n this.viewbox(newViewbox);\n\n return this.viewbox(false).scale;\n};\n\n\nCanvas.prototype._setZoom = function(scale, center) {\n\n const svg = this._svg,\n viewport = this._viewport;\n\n const matrix = svg.createSVGMatrix();\n const point = svg.createSVGPoint();\n\n let centerPoint,\n originalPoint,\n currentMatrix,\n scaleMatrix,\n newMatrix;\n\n currentMatrix = viewport.getCTM();\n\n const currentScale = currentMatrix.a;\n\n if (center) {\n centerPoint = assign(point, center);\n\n // revert applied viewport transformations\n originalPoint = centerPoint.matrixTransform(currentMatrix.inverse());\n\n // create scale matrix\n scaleMatrix = matrix\n .translate(originalPoint.x, originalPoint.y)\n .scale(1 / currentScale * scale)\n .translate(-originalPoint.x, -originalPoint.y);\n\n newMatrix = currentMatrix.multiply(scaleMatrix);\n } else {\n newMatrix = matrix.scale(scale);\n }\n\n setCTM(this._viewport, newMatrix);\n\n return newMatrix;\n};\n\n\n/**\n * Returns the size of the canvas.\n *\n * @return {Dimensions} The size of the canvas.\n */\nCanvas.prototype.getSize = function() {\n return {\n width: this._container.clientWidth,\n height: this._container.clientHeight\n };\n};\n\n\n/**\n * Returns the absolute bounding box of an element.\n *\n * The absolute bounding box may be used to display overlays in the callers\n * (browser) coordinate system rather than the zoomed in/out canvas coordinates.\n *\n * @param {ShapeLike|ConnectionLike} element The element.\n *\n * @return {Rect} The element's absolute bounding box.\n */\nCanvas.prototype.getAbsoluteBBox = function(element) {\n const vbox = this.viewbox();\n let bbox;\n\n // connection\n // use svg bbox\n if (element.waypoints) {\n const gfx = this.getGraphics(element);\n\n bbox = gfx.getBBox();\n }\n\n // shapes\n // use data\n else {\n bbox = element;\n }\n\n const x = bbox.x * vbox.scale - vbox.x * vbox.scale;\n const y = bbox.y * vbox.scale - vbox.y * vbox.scale;\n\n const width = bbox.width * vbox.scale;\n const height = bbox.height * vbox.scale;\n\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n};\n\n/**\n * Fires an event so other modules can react to the canvas resizing.\n */\nCanvas.prototype.resized = function() {\n\n // force recomputation of view box\n delete this._cachedViewbox;\n\n this._eventBus.fire('canvas.resized');\n};\n","/**\n * Failsafe remove an element from a collection\n *\n * @param {Array} [collection]\n * @param {Object} [element]\n *\n * @return {number} the previous index of the element\n */\nexport function remove(collection, element) {\n\n if (!collection || !element) {\n return -1;\n }\n\n var idx = collection.indexOf(element);\n\n if (idx !== -1) {\n collection.splice(idx, 1);\n }\n\n return idx;\n}\n\n/**\n * Fail save add an element to the given connection, ensuring\n * it does not yet exist.\n *\n * @param {Array} collection\n * @param {Object} element\n * @param {number} [idx]\n */\nexport function add(collection, element, idx) {\n\n if (!collection || !element) {\n return;\n }\n\n if (typeof idx !== 'number') {\n idx = -1;\n }\n\n var currentIdx = collection.indexOf(element);\n\n if (currentIdx !== -1) {\n\n if (currentIdx === idx) {\n\n // nothing to do, position has not changed\n return;\n } else {\n\n if (idx !== -1) {\n\n // remove from current position\n collection.splice(currentIdx, 1);\n } else {\n\n // already exists in collection\n return;\n }\n }\n }\n\n if (idx !== -1) {\n\n // insert at specified position\n collection.splice(idx, 0, element);\n } else {\n\n // push to end\n collection.push(element);\n }\n}\n\n\n/**\n * Fail save get the index of an element in a collection.\n *\n * @param {Array} collection\n * @param {Object} element\n *\n * @return {number} the index or -1 if collection or element do\n * not exist or the element is not contained.\n */\nexport function indexOf(collection, element) {\n\n if (!collection || !element) {\n return -1;\n }\n\n return collection.indexOf(element);\n}\n","var ELEMENT_ID = 'data-element-id';\n\nimport { attr as svgAttr } from 'tiny-svg';\n\n/**\n * @typedef {import('./Types').ElementLike} ElementLike\n *\n * @typedef {import('./EventBus').default} EventBus\n *\n * @typedef { (element: ElementLike, gfx: SVGElement) => boolean|any } ElementRegistryFilterCallback\n * @typedef { (element: ElementLike, gfx: SVGElement) => any } ElementRegistryForEachCallback\n */\n\n/**\n * A registry that keeps track of all shapes in the diagram.\n *\n * @class\n * @constructor\n *\n * @param {EventBus} eventBus\n */\nexport default function ElementRegistry(eventBus) {\n\n /**\n * @type { {\n * [id: string]: {\n * element: ElementLike;\n * gfx?: SVGElement;\n * secondaryGfx?: SVGElement;\n * }\n * } }\n */\n this._elements = {};\n\n this._eventBus = eventBus;\n}\n\nElementRegistry.$inject = [ 'eventBus' ];\n\n/**\n * Add an element and its graphical representation(s) to the registry.\n *\n * @param {ElementLike} element The element to be added.\n * @param {SVGElement} gfx The primary graphical representation.\n * @param {SVGElement} [secondaryGfx] The secondary graphical representation.\n */\nElementRegistry.prototype.add = function(element, gfx, secondaryGfx) {\n\n var id = element.id;\n\n this._validateId(id);\n\n // associate dom node with element\n svgAttr(gfx, ELEMENT_ID, id);\n\n if (secondaryGfx) {\n svgAttr(secondaryGfx, ELEMENT_ID, id);\n }\n\n this._elements[id] = { element: element, gfx: gfx, secondaryGfx: secondaryGfx };\n};\n\n/**\n * Remove an element from the registry.\n *\n * @param {ElementLike|string} element\n */\nElementRegistry.prototype.remove = function(element) {\n var elements = this._elements,\n id = element.id || element,\n container = id && elements[id];\n\n if (container) {\n\n // unset element id on gfx\n svgAttr(container.gfx, ELEMENT_ID, '');\n\n if (container.secondaryGfx) {\n svgAttr(container.secondaryGfx, ELEMENT_ID, '');\n }\n\n delete elements[id];\n }\n};\n\n/**\n * Update an elements ID.\n *\n * @param {ElementLike|string} element The element or its ID.\n * @param {string} newId The new ID.\n */\nElementRegistry.prototype.updateId = function(element, newId) {\n\n this._validateId(newId);\n\n if (typeof element === 'string') {\n element = this.get(element);\n }\n\n this._eventBus.fire('element.updateId', {\n element: element,\n newId: newId\n });\n\n var gfx = this.getGraphics(element),\n secondaryGfx = this.getGraphics(element, true);\n\n this.remove(element);\n\n element.id = newId;\n\n this.add(element, gfx, secondaryGfx);\n};\n\n/**\n * Update the graphical representation of an element.\n *\n * @param {ElementLike|string} filter The element or its ID.\n * @param {SVGElement} gfx The new graphical representation.\n * @param {boolean} [secondary=false] Whether to update the secondary graphical representation.\n */\nElementRegistry.prototype.updateGraphics = function(filter, gfx, secondary) {\n var id = filter.id || filter;\n\n var container = this._elements[id];\n\n if (secondary) {\n container.secondaryGfx = gfx;\n } else {\n container.gfx = gfx;\n }\n\n if (gfx) {\n svgAttr(gfx, ELEMENT_ID, id);\n }\n\n return gfx;\n};\n\n/**\n * Get the element with the given ID or graphical representation.\n *\n * @example\n *\n * ```javascript\n * elementRegistry.get('SomeElementId_1');\n *\n * elementRegistry.get(gfx);\n * ```\n *\n * @param {string|SVGElement} filter The elements ID or graphical representation.\n *\n * @return {ElementLike|undefined} The element.\n */\nElementRegistry.prototype.get = function(filter) {\n var id;\n\n if (typeof filter === 'string') {\n id = filter;\n } else {\n id = filter && svgAttr(filter, ELEMENT_ID);\n }\n\n var container = this._elements[id];\n return container && container.element;\n};\n\n/**\n * Return all elements that match a given filter function.\n *\n * @param {ElementRegistryFilterCallback} fn The filter function.\n *\n * @return {ElementLike[]} The matching elements.\n */\nElementRegistry.prototype.filter = function(fn) {\n\n var filtered = [];\n\n this.forEach(function(element, gfx) {\n if (fn(element, gfx)) {\n filtered.push(element);\n }\n });\n\n return filtered;\n};\n\n/**\n * Return the first element that matches the given filter function.\n *\n * @param {ElementRegistryFilterCallback} fn The filter function.\n *\n * @return {ElementLike|undefined} The matching element.\n */\nElementRegistry.prototype.find = function(fn) {\n var map = this._elements,\n keys = Object.keys(map);\n\n for (var i = 0; i < keys.length; i++) {\n var id = keys[i],\n container = map[id],\n element = container.element,\n gfx = container.gfx;\n\n if (fn(element, gfx)) {\n return element;\n }\n }\n};\n\n/**\n * Get all elements.\n *\n * @return {ElementLike[]} All elements.\n */\nElementRegistry.prototype.getAll = function() {\n return this.filter(function(e) { return e; });\n};\n\n/**\n * Execute a given function for each element.\n *\n * @param {ElementRegistryForEachCallback} fn The function to execute.\n */\nElementRegistry.prototype.forEach = function(fn) {\n\n var map = this._elements;\n\n Object.keys(map).forEach(function(id) {\n var container = map[id],\n element = container.element,\n gfx = container.gfx;\n\n return fn(element, gfx);\n });\n};\n\n/**\n * Return the graphical representation of an element.\n *\n * @example\n *\n * ```javascript\n * elementRegistry.getGraphics('SomeElementId_1');\n *\n * elementRegistry.getGraphics(rootElement); // \n *\n * elementRegistry.getGraphics(rootElement, true); // \n * ```\n *\n * @param {ElementLike|string} filter The element or its ID.\n * @param {boolean} [secondary=false] Whether to return the secondary graphical representation.\n *\n * @return {SVGElement} The graphical representation.\n */\nElementRegistry.prototype.getGraphics = function(filter, secondary) {\n var id = filter.id || filter;\n\n var container = this._elements[id];\n return container && (secondary ? container.secondaryGfx : container.gfx);\n};\n\n/**\n * Validate an ID and throw an error if invalid.\n *\n * @param {string} id\n *\n * @throws {Error} Error indicating that the ID is invalid or already assigned.\n */\nElementRegistry.prototype._validateId = function(id) {\n if (!id) {\n throw new Error('element must have an id');\n }\n\n if (this._elements[id]) {\n throw new Error('element with id ' + id + ' already added');\n }\n};\n","import { assign } from 'min-dash';\nimport inherits from 'inherits-browser';\n\nimport Refs from 'object-refs';\n\nvar parentRefs = new Refs({ name: 'children', enumerable: true, collection: true }, { name: 'parent' }),\n labelRefs = new Refs({ name: 'labels', enumerable: true, collection: true }, { name: 'labelTarget' }),\n attacherRefs = new Refs({ name: 'attachers', collection: true }, { name: 'host' }),\n outgoingRefs = new Refs({ name: 'outgoing', collection: true }, { name: 'source' }),\n incomingRefs = new Refs({ name: 'incoming', collection: true }, { name: 'target' });\n\n/**\n * @typedef {import('./Types').Element} Element\n * @typedef {import('./Types').Shape} Shape\n * @typedef {import('./Types').Root} Root\n * @typedef {import('./Types').Label} Label\n * @typedef {import('./Types').Connection} Connection\n */\n\n/**\n * The basic graphical representation\n *\n * @class\n * @constructor\n */\nfunction ElementImpl() {\n\n /**\n * The object that backs up the shape\n *\n * @name Element#businessObject\n * @type Object\n */\n Object.defineProperty(this, 'businessObject', {\n writable: true\n });\n\n\n /**\n * Single label support, will mapped to multi label array\n *\n * @name Element#label\n * @type Object\n */\n Object.defineProperty(this, 'label', {\n get: function() {\n return this.labels[0];\n },\n set: function(newLabel) {\n\n var label = this.label,\n labels = this.labels;\n\n if (!newLabel && label) {\n labels.remove(label);\n } else {\n labels.add(newLabel, 0);\n }\n }\n });\n\n /**\n * The parent shape\n *\n * @name Element#parent\n * @type Shape\n */\n parentRefs.bind(this, 'parent');\n\n /**\n * The list of labels\n *\n * @name Element#labels\n * @type Label\n */\n labelRefs.bind(this, 'labels');\n\n /**\n * The list of outgoing connections\n *\n * @name Element#outgoing\n * @type Array\n */\n outgoingRefs.bind(this, 'outgoing');\n\n /**\n * The list of incoming connections\n *\n * @name Element#incoming\n * @type Array\n */\n incomingRefs.bind(this, 'incoming');\n}\n\n\n/**\n * A graphical object\n *\n * @class\n * @constructor\n *\n * @extends ElementImpl\n */\nfunction ShapeImpl() {\n ElementImpl.call(this);\n\n /**\n * Indicates frame shapes\n *\n * @name ShapeImpl#isFrame\n * @type boolean\n */\n\n /**\n * The list of children\n *\n * @name ShapeImpl#children\n * @type Element[]\n */\n parentRefs.bind(this, 'children');\n\n /**\n * @name ShapeImpl#host\n * @type Shape\n */\n attacherRefs.bind(this, 'host');\n\n /**\n * @name ShapeImpl#attachers\n * @type Shape\n */\n attacherRefs.bind(this, 'attachers');\n}\n\ninherits(ShapeImpl, ElementImpl);\n\n\n/**\n * A root graphical object\n *\n * @class\n * @constructor\n *\n * @extends ElementImpl\n */\nfunction RootImpl() {\n ElementImpl.call(this);\n\n /**\n * The list of children\n *\n * @name RootImpl#children\n * @type Element[]\n */\n parentRefs.bind(this, 'children');\n}\n\ninherits(RootImpl, ShapeImpl);\n\n\n/**\n * A label for an element\n *\n * @class\n * @constructor\n *\n * @extends ShapeImpl\n */\nfunction LabelImpl() {\n ShapeImpl.call(this);\n\n /**\n * The labeled element\n *\n * @name LabelImpl#labelTarget\n * @type Element\n */\n labelRefs.bind(this, 'labelTarget');\n}\n\ninherits(LabelImpl, ShapeImpl);\n\n\n/**\n * A connection between two elements\n *\n * @class\n * @constructor\n *\n * @extends ElementImpl\n */\nfunction ConnectionImpl() {\n ElementImpl.call(this);\n\n /**\n * The element this connection originates from\n *\n * @name ConnectionImpl#source\n * @type Element\n */\n outgoingRefs.bind(this, 'source');\n\n /**\n * The element this connection points to\n *\n * @name ConnectionImpl#target\n * @type Element\n */\n incomingRefs.bind(this, 'target');\n}\n\ninherits(ConnectionImpl, ElementImpl);\n\n\nvar types = {\n connection: ConnectionImpl,\n shape: ShapeImpl,\n label: LabelImpl,\n root: RootImpl\n};\n\n/**\n * Creates a root element.\n *\n * @overlord\n *\n * @example\n *\n * ```javascript\n * import * as Model from 'diagram-js/lib/model';\n *\n * const root = Model.create('root', {\n * x: 100,\n * y: 100,\n * width: 100,\n * height: 100\n * });\n * ```\n *\n * @param {'root'} type\n * @param {any} [attrs]\n *\n * @return {Root}\n */\n\n/**\n * Creates a connection.\n *\n * @overlord\n *\n * @example\n *\n * ```javascript\n * import * as Model from 'diagram-js/lib/model';\n *\n * const connection = Model.create('connection', {\n * waypoints: [\n * { x: 100, y: 100 },\n * { x: 200, y: 100 }\n * ]\n * });\n * ```\n *\n * @param {'connection'} type\n * @param {any} [attrs]\n *\n * @return {Connection}\n */\n\n/**\n * Creates a shape.\n *\n * @overlord\n *\n * @example\n *\n * ```javascript\n * import * as Model from 'diagram-js/lib/model';\n *\n * const shape = Model.create('shape', {\n * x: 100,\n * y: 100,\n * width: 100,\n * height: 100\n * });\n * ```\n *\n * @param {'shape'} type\n * @param {any} [attrs]\n *\n * @return {Shape}\n */\n\n/**\n * Creates a label.\n *\n * @example\n *\n * ```javascript\n * import * as Model from 'diagram-js/lib/model';\n *\n * const label = Model.create('label', {\n * x: 100,\n * y: 100,\n * width: 100,\n * height: 100,\n * labelTarget: shape\n * });\n * ```\n *\n * @param {'label'} type\n * @param {Object} [attrs]\n *\n * @return {Label}\n */\nexport function create(type, attrs) {\n var Type = types[type];\n if (!Type) {\n throw new Error('unknown type: <' + type + '>');\n }\n return assign(new Type(), attrs);\n}\n\n/**\n * Checks whether an object is a model instance.\n *\n * @param {any} obj\n *\n * @return {boolean}\n */\nexport function isModelElement(obj) {\n return obj instanceof ElementImpl;\n}","import {\n create\n} from '../model';\n\nimport { assign } from 'min-dash';\n\n/**\n * @typedef {import('../model/Types').Element} Element\n * @typedef {import('../model/Types').Connection} Connection\n * @typedef {import('../model/Types').Label} Label\n * @typedef {import('../model/Types').Root} Root\n * @typedef {import('../model/Types').Shape} Shape\n */\n\n/**\n * A factory for model elements.\n *\n * @template {Connection} [T=Connection]\n * @template {Label} [U=Label]\n * @template {Root} [V=Root]\n * @template {Shape} [W=Shape]\n */\nexport default function ElementFactory() {\n this._uid = 12;\n}\n\n/**\n * Create a root element.\n *\n * @param {Partial} [attrs]\n *\n * @return {V} The created root element.\n */\nElementFactory.prototype.createRoot = function(attrs) {\n return this.create('root', attrs);\n};\n\n/**\n * Create a label.\n *\n * @param {Partial
    ');\n\n assignStyle(container, {\n width: ensureUnit(options.width),\n height: ensureUnit(options.height),\n position: options.position\n });\n\n return container;\n};\n\n/**\n * @param {BaseViewerOptions} options\n *\n * @return {Moddle}\n */\nBaseViewer.prototype._createModdle = function(options) {\n const moddleOptions = assign({}, this._moddleExtensions, options.moddleExtensions);\n\n return new BpmnModdle(moddleOptions);\n};\n\nBaseViewer.prototype._modules = [];\n\n// helpers ///////////////\n\nfunction addWarningsToError(err, warningsAry) {\n err.warnings = warningsAry;\n return err;\n}\n\nfunction checkValidationError(err) {\n\n // check if we can help the user by indicating wrong BPMN 2.0 xml\n // (in case he or the exporting tool did not get that right)\n\n const pattern = /unparsable content <([^>]+)> detected([\\s\\S]*)$/;\n const match = pattern.exec(err.message);\n\n if (match) {\n err.message =\n 'unparsable content <' + match[1] + '> detected; ' +\n 'this may indicate an invalid BPMN 2.0 diagram file' + match[2];\n }\n\n return err;\n}\n\nconst DEFAULT_OPTIONS = {\n width: '100%',\n height: '100%',\n position: 'relative'\n};\n\n\n/**\n * Ensure the passed argument is a proper unit (defaulting to px)\n */\nfunction ensureUnit(val) {\n return val + (isNumber(val) ? 'px' : '');\n}\n\n\n/**\n * Find BPMNDiagram in definitions by ID\n *\n * @param {ModdleElement} definitions\n * @param {string} diagramId\n *\n * @return {ModdleElement|null}\n */\nfunction findBPMNDiagram(definitions, diagramId) {\n if (!diagramId) {\n return null;\n }\n\n return find(definitions.diagrams, function(element) {\n return element.id === diagramId;\n }) || null;\n}\n\n\n/* */\n\nimport {\n open as openPoweredBy,\n BPMNIO_IMG,\n LOGO_STYLES,\n LINK_STYLES\n} from './util/PoweredByUtil';\n\nimport {\n event as domEvent\n} from 'min-dom';\n\n/**\n * Adds the project logo to the diagram container as\n * required by the bpmn.io license.\n *\n * @see http://bpmn.io/license\n *\n * @param {Element} container\n */\nfunction addProjectLogo(container) {\n const img = BPMNIO_IMG;\n\n const linkMarkup =\n '' +\n img +\n '';\n\n const linkElement = domify(linkMarkup);\n\n assignStyle(domQuery('svg', linkElement), LOGO_STYLES);\n assignStyle(linkElement, LINK_STYLES, {\n position: 'absolute',\n bottom: '15px',\n right: '15px',\n zIndex: '100'\n });\n\n container.appendChild(linkElement);\n\n domEvent.bind(linkElement, 'click', function(event) {\n openPoweredBy();\n\n event.preventDefault();\n });\n}\n\n/* */\n","import {\n find,\n forEach,\n map\n} from 'min-dash';\n\nimport BpmnTreeWalker from './BpmnTreeWalker';\n\nimport { is } from '../util/ModelUtil';\n\n\n/**\n * @typedef {import('../model/Types').ModdleElement} ModdleElement\n *\n * @typedef { {\n * warnings: string[];\n * } } ImportBPMNDiagramResult\n *\n * @typedef {ImportBPMNDiagramResult & Error} ImportBPMNDiagramError\n */\n\n/**\n * Import the definitions into a diagram.\n *\n * Errors and warnings are reported through the specified callback.\n *\n * @param {ModdleElement} diagram\n * @param {ModdleElement} definitions\n * @param {ModdleElement} [bpmnDiagram] The diagram to be rendered (if not\n * provided, the first one will be rendered).\n *\n * @return {Promise}\n */\nexport function importBpmnDiagram(diagram, definitions, bpmnDiagram) {\n\n var importer,\n eventBus,\n translate,\n canvas;\n\n var error,\n warnings = [];\n\n /**\n * Walk the diagram semantically, importing (=drawing)\n * all elements you encounter.\n *\n * @param {ModdleElement} definitions\n * @param {ModdleElement} bpmnDiagram\n */\n function render(definitions, bpmnDiagram) {\n\n var visitor = {\n\n root: function(element, di) {\n return importer.add(element, di);\n },\n\n element: function(element, di, parentShape) {\n return importer.add(element, di, parentShape);\n },\n\n error: function(message, context) {\n warnings.push({ message: message, context: context });\n }\n };\n\n var walker = new BpmnTreeWalker(visitor, translate);\n\n\n bpmnDiagram = bpmnDiagram || (definitions.diagrams && definitions.diagrams[0]);\n\n var diagramsToImport = getDiagramsToImport(definitions, bpmnDiagram);\n\n if (!diagramsToImport) {\n throw new Error(translate('no diagram to display'));\n }\n\n // traverse BPMN 2.0 document model,\n // starting at definitions\n forEach(diagramsToImport, function(diagram) {\n walker.handleDefinitions(definitions, diagram);\n });\n\n var rootId = bpmnDiagram.plane.bpmnElement.id;\n\n // we do need to account for different ways we create root elements\n // each nested imported do have the `_plane` suffix, while\n // the root is found under the business object ID\n canvas.setRootElement(\n canvas.findRoot(rootId + '_plane') || canvas.findRoot(rootId)\n );\n }\n\n return new Promise(function(resolve, reject) {\n try {\n importer = diagram.get('bpmnImporter');\n eventBus = diagram.get('eventBus');\n translate = diagram.get('translate');\n canvas = diagram.get('canvas');\n\n eventBus.fire('import.render.start', { definitions: definitions });\n\n render(definitions, bpmnDiagram);\n\n eventBus.fire('import.render.complete', {\n error: error,\n warnings: warnings\n });\n\n return resolve({ warnings: warnings });\n } catch (e) {\n\n e.warnings = warnings;\n return reject(e);\n }\n });\n}\n\n/**\n * Returns all diagrams in the same hierarchy as the requested diagram.\n * Includes all parent and sub process diagrams.\n *\n * @param {ModdleElement} definitions\n * @param {ModdleElement} bpmnDiagram\n *\n * @return {ModdleElement[]}\n */\nfunction getDiagramsToImport(definitions, bpmnDiagram) {\n if (!bpmnDiagram) {\n return;\n }\n\n var bpmnElement = bpmnDiagram.plane.bpmnElement,\n rootElement = bpmnElement;\n\n if (!is(bpmnElement, 'bpmn:Process') && !is(bpmnElement, 'bpmn:Collaboration')) {\n rootElement = findRootProcess(bpmnElement);\n }\n\n // in case the process is part of a collaboration, the plane references the\n // collaboration, not the process\n var collaboration;\n\n if (is(rootElement, 'bpmn:Collaboration')) {\n collaboration = rootElement;\n } else {\n collaboration = find(definitions.rootElements, function(element) {\n if (!is(element, 'bpmn:Collaboration')) {\n return;\n }\n\n return find(element.participants, function(participant) {\n return participant.processRef === rootElement;\n });\n });\n }\n\n var rootElements = [ rootElement ];\n\n // all collaboration processes can contain sub-diagrams\n if (collaboration) {\n rootElements = map(collaboration.participants, function(participant) {\n return participant.processRef;\n });\n\n rootElements.push(collaboration);\n }\n\n var allChildren = selfAndAllFlowElements(rootElements);\n\n // if we have multiple diagrams referencing the same element, we\n // use the first in the file\n var diagramsToImport = [ bpmnDiagram ];\n var handledElements = [ bpmnElement ];\n\n forEach(definitions.diagrams, function(diagram) {\n var businessObject = diagram.plane.bpmnElement;\n\n if (\n allChildren.indexOf(businessObject) !== -1 &&\n handledElements.indexOf(businessObject) === -1\n ) {\n diagramsToImport.push(diagram);\n handledElements.push(businessObject);\n }\n });\n\n\n return diagramsToImport;\n}\n\nfunction selfAndAllFlowElements(elements) {\n var result = [];\n\n forEach(elements, function(element) {\n if (!element) {\n return;\n }\n\n result.push(element);\n\n result = result.concat(selfAndAllFlowElements(element.flowElements));\n });\n\n return result;\n}\n\nfunction findRootProcess(element) {\n var parent = element;\n\n while (parent) {\n if (is(parent, 'bpmn:Process')) {\n return parent;\n }\n\n parent = parent.$parent;\n }\n}\n","import inherits from 'inherits-browser';\n\nimport CoreModule from './core';\nimport TranslateModule from 'diagram-js/lib/i18n/translate';\nimport SelectionModule from 'diagram-js/lib/features/selection';\nimport OverlaysModule from 'diagram-js/lib/features/overlays';\nimport DrilldownModdule from './features/drilldown';\n\nimport BaseViewer from './BaseViewer';\n\n\n/**\n * @typedef { import('./BaseViewer').BaseViewerOptions } BaseViewerOptions\n */\n\n/**\n * A viewer for BPMN 2.0 diagrams.\n *\n * Have a look at {@link NavigatedViewer} or {@link Modeler} for bundles that include\n * additional features.\n *\n *\n * ## Extending the Viewer\n *\n * In order to extend the viewer pass extension modules to bootstrap via the\n * `additionalModules` option. An extension module is an object that exposes\n * named services.\n *\n * The following example depicts the integration of a simple\n * logging component that integrates with interaction events:\n *\n *\n * ```javascript\n *\n * // logging component\n * function InteractionLogger(eventBus) {\n * eventBus.on('element.hover', function(event) {\n * console.log()\n * })\n * }\n *\n * InteractionLogger.$inject = [ 'eventBus' ]; // minification save\n *\n * // extension module\n * var extensionModule = {\n * __init__: [ 'interactionLogger' ],\n * interactionLogger: [ 'type', InteractionLogger ]\n * };\n *\n * // extend the viewer\n * var bpmnViewer = new Viewer({ additionalModules: [ extensionModule ] });\n * bpmnViewer.importXML(...);\n * ```\n *\n * @param {BaseViewerOptions} [options] The options to configure the viewer.\n */\nexport default function Viewer(options) {\n BaseViewer.call(this, options);\n}\n\ninherits(Viewer, BaseViewer);\n\n// modules the viewer is composed of\nViewer.prototype._modules = [\n CoreModule,\n TranslateModule,\n SelectionModule,\n OverlaysModule,\n DrilldownModdule\n];\n\n// default moddle extensions the viewer is composed of\nViewer.prototype._moddleExtensions = {};","import DrawModule from '../draw';\nimport ImportModule from '../import';\n\nexport default {\n __depends__: [\n DrawModule,\n ImportModule\n ]\n};","import BpmnRenderer from './BpmnRenderer';\nimport TextRenderer from './TextRenderer';\n\nimport PathMap from './PathMap';\n\nexport default {\n __init__: [ 'bpmnRenderer' ],\n bpmnRenderer: [ 'type', BpmnRenderer ],\n textRenderer: [ 'type', TextRenderer ],\n pathMap: [ 'type', PathMap ]\n};\n","import translate from 'diagram-js/lib/i18n/translate';\n\nimport BpmnImporter from './BpmnImporter';\n\nexport default {\n __depends__: [\n translate\n ],\n bpmnImporter: [ 'type', BpmnImporter ]\n};","import InteractionEventsModule from '../interaction-events';\nimport OutlineModule from '../outline';\n\nimport Selection from './Selection';\nimport SelectionVisuals from './SelectionVisuals';\nimport SelectionBehavior from './SelectionBehavior';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n __init__: [ 'selectionVisuals', 'selectionBehavior' ],\n __depends__: [\n InteractionEventsModule,\n OutlineModule\n ],\n selection: [ 'type', Selection ],\n selectionVisuals: [ 'type', SelectionVisuals ],\n selectionBehavior: [ 'type', SelectionBehavior ]\n};\n","import InteractionEvents from './InteractionEvents';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n __init__: [ 'interactionEvents' ],\n interactionEvents: [ 'type', InteractionEvents ]\n};","import Outline from './Outline';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n __init__: [ 'outline' ],\n outline: [ 'type', Outline ]\n};","import OverlaysModule from 'diagram-js/lib/features/overlays';\nimport ChangeSupportModule from 'diagram-js/lib/features/change-support';\nimport RootElementsModule from 'diagram-js/lib/features/root-elements';\n\nimport DrilldownBreadcrumbs from './DrilldownBreadcrumbs';\nimport DrilldownCentering from './DrilldownCentering';\nimport SubprocessCompatibility from './SubprocessCompatibility';\nimport DrilldownOverlayBehavior from './DrilldownOverlayBehavior';\n\nexport default {\n __depends__: [ OverlaysModule, ChangeSupportModule, RootElementsModule ],\n __init__: [ 'drilldownBreadcrumbs', 'drilldownOverlayBehavior', 'drilldownCentering', 'subprocessCompatibility' ],\n drilldownBreadcrumbs: [ 'type', DrilldownBreadcrumbs ],\n drilldownCentering: [ 'type', DrilldownCentering ],\n drilldownOverlayBehavior: [ 'type', DrilldownOverlayBehavior ],\n subprocessCompatibility: [ 'type', SubprocessCompatibility ]\n};","import ChangeSupport from './ChangeSupport';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n __init__: [ 'changeSupport' ],\n changeSupport: [ 'type', ChangeSupport ]\n};","import RootElementsBehavior from './RootElementsBehavior';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n __init__: [ 'rootElementsBehavior' ],\n rootElementsBehavior: [ 'type', RootElementsBehavior ]\n};\n","/*!\n * chartjs-plugin-datalabels v2.0.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2021 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nimport { isNullOrUndef, merge, toFont, resolve, toPadding, valueOrDefault, callback, isObject, each } from 'chart.js/helpers';\nimport { defaults as defaults$1, ArcElement, PointElement, BarElement } from 'chart.js';\n\nvar devicePixelRatio = (function() {\n if (typeof window !== 'undefined') {\n if (window.devicePixelRatio) {\n return window.devicePixelRatio;\n }\n\n // devicePixelRatio is undefined on IE10\n // https://stackoverflow.com/a/20204180/8837887\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n var screen = window.screen;\n if (screen) {\n return (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n }\n }\n\n return 1;\n}());\n\nvar utils = {\n // @todo move this in Chart.helpers.toTextLines\n toTextLines: function(inputs) {\n var lines = [];\n var input;\n\n inputs = [].concat(inputs);\n while (inputs.length) {\n input = inputs.pop();\n if (typeof input === 'string') {\n lines.unshift.apply(lines, input.split('\\n'));\n } else if (Array.isArray(input)) {\n inputs.push.apply(inputs, input);\n } else if (!isNullOrUndef(inputs)) {\n lines.unshift('' + input);\n }\n }\n\n return lines;\n },\n\n // @todo move this in Chart.helpers.canvas.textSize\n // @todo cache calls of measureText if font doesn't change?!\n textSize: function(ctx, lines, font) {\n var items = [].concat(lines);\n var ilen = items.length;\n var prev = ctx.font;\n var width = 0;\n var i;\n\n ctx.font = font.string;\n\n for (i = 0; i < ilen; ++i) {\n width = Math.max(ctx.measureText(items[i]).width, width);\n }\n\n ctx.font = prev;\n\n return {\n height: ilen * font.lineHeight,\n width: width\n };\n },\n\n /**\n * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n * @todo move this method in Chart.helpers.bound\n * https://doc.qt.io/qt-5/qtglobal.html#qBound\n */\n bound: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Returns an array of pair [value, state] where state is:\n * * -1: value is only in a0 (removed)\n * * 1: value is only in a1 (added)\n */\n arrayDiff: function(a0, a1) {\n var prev = a0.slice();\n var updates = [];\n var i, j, ilen, v;\n\n for (i = 0, ilen = a1.length; i < ilen; ++i) {\n v = a1[i];\n j = prev.indexOf(v);\n\n if (j === -1) {\n updates.push([v, 1]);\n } else {\n prev.splice(j, 1);\n }\n }\n\n for (i = 0, ilen = prev.length; i < ilen; ++i) {\n updates.push([prev[i], -1]);\n }\n\n return updates;\n },\n\n /**\n * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n */\n rasterize: function(v) {\n return Math.round(v * devicePixelRatio) / devicePixelRatio;\n }\n};\n\nfunction orient(point, origin) {\n var x0 = origin.x;\n var y0 = origin.y;\n\n if (x0 === null) {\n return {x: 0, y: -1};\n }\n if (y0 === null) {\n return {x: 1, y: 0};\n }\n\n var dx = point.x - x0;\n var dy = point.y - y0;\n var ln = Math.sqrt(dx * dx + dy * dy);\n\n return {\n x: ln ? dx / ln : 0,\n y: ln ? dy / ln : -1\n };\n}\n\nfunction aligned(x, y, vx, vy, align) {\n switch (align) {\n case 'center':\n vx = vy = 0;\n break;\n case 'bottom':\n vx = 0;\n vy = 1;\n break;\n case 'right':\n vx = 1;\n vy = 0;\n break;\n case 'left':\n vx = -1;\n vy = 0;\n break;\n case 'top':\n vx = 0;\n vy = -1;\n break;\n case 'start':\n vx = -vx;\n vy = -vy;\n break;\n case 'end':\n // keep natural orientation\n break;\n default:\n // clockwise rotation (in degree)\n align *= (Math.PI / 180);\n vx = Math.cos(align);\n vy = Math.sin(align);\n break;\n }\n\n return {\n x: x,\n y: y,\n vx: vx,\n vy: vy\n };\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n var res = R_INSIDE;\n\n if (x < rect.left) {\n res |= R_LEFT;\n } else if (x > rect.right) {\n res |= R_RIGHT;\n }\n if (y < rect.top) {\n res |= R_TOP;\n } else if (y > rect.bottom) {\n res |= R_BOTTOM;\n }\n\n return res;\n}\n\nfunction clipped(segment, area) {\n var x0 = segment.x0;\n var y0 = segment.y0;\n var x1 = segment.x1;\n var y1 = segment.y1;\n var r0 = region(x0, y0, area);\n var r1 = region(x1, y1, area);\n var r, x, y;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!(r0 | r1) || (r0 & r1)) {\n // both points inside or on the same side: no clipping\n break;\n }\n\n // at least one point is outside\n r = r0 || r1;\n\n if (r & R_TOP) {\n x = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n y = area.top;\n } else if (r & R_BOTTOM) {\n x = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n y = area.bottom;\n } else if (r & R_RIGHT) {\n y = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n x = area.right;\n } else if (r & R_LEFT) {\n y = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n x = area.left;\n }\n\n if (r === r0) {\n x0 = x;\n y0 = y;\n r0 = region(x0, y0, area);\n } else {\n x1 = x;\n y1 = y;\n r1 = region(x1, y1, area);\n }\n }\n\n return {\n x0: x0,\n x1: x1,\n y0: y0,\n y1: y1\n };\n}\n\nfunction compute$1(range, config) {\n var anchor = config.anchor;\n var segment = range;\n var x, y;\n\n if (config.clamp) {\n segment = clipped(segment, config.area);\n }\n\n if (anchor === 'start') {\n x = segment.x0;\n y = segment.y0;\n } else if (anchor === 'end') {\n x = segment.x1;\n y = segment.y1;\n } else {\n x = (segment.x0 + segment.x1) / 2;\n y = (segment.y0 + segment.y1) / 2;\n }\n\n return aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n arc: function(el, config) {\n var angle = (el.startAngle + el.endAngle) / 2;\n var vx = Math.cos(angle);\n var vy = Math.sin(angle);\n var r0 = el.innerRadius;\n var r1 = el.outerRadius;\n\n return compute$1({\n x0: el.x + vx * r0,\n y0: el.y + vy * r0,\n x1: el.x + vx * r1,\n y1: el.y + vy * r1,\n vx: vx,\n vy: vy\n }, config);\n },\n\n point: function(el, config) {\n var v = orient(el, config.origin);\n var rx = v.x * el.options.radius;\n var ry = v.y * el.options.radius;\n\n return compute$1({\n x0: el.x - rx,\n y0: el.y - ry,\n x1: el.x + rx,\n y1: el.y + ry,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n bar: function(el, config) {\n var v = orient(el, config.origin);\n var x = el.x;\n var y = el.y;\n var sx = 0;\n var sy = 0;\n\n if (el.horizontal) {\n x = Math.min(el.x, el.base);\n sx = Math.abs(el.base - el.x);\n } else {\n y = Math.min(el.y, el.base);\n sy = Math.abs(el.base - el.y);\n }\n\n return compute$1({\n x0: x,\n y0: y + sy,\n x1: x + sx,\n y1: y,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n fallback: function(el, config) {\n var v = orient(el, config.origin);\n\n return compute$1({\n x0: el.x,\n y0: el.y,\n x1: el.x,\n y1: el.y,\n vx: v.x,\n vy: v.y\n }, config);\n }\n};\n\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n var borderWidth = model.borderWidth || 0;\n var padding = model.padding;\n var th = model.size.height;\n var tw = model.size.width;\n var tx = -tw / 2;\n var ty = -th / 2;\n\n return {\n frame: {\n x: tx - padding.left - borderWidth,\n y: ty - padding.top - borderWidth,\n w: tw + padding.width + borderWidth * 2,\n h: th + padding.height + borderWidth * 2\n },\n text: {\n x: tx,\n y: ty,\n w: tw,\n h: th\n }\n };\n}\n\nfunction getScaleOrigin(el, context) {\n var scale = context.chart.getDatasetMeta(context.datasetIndex).vScale;\n\n if (!scale) {\n return null;\n }\n\n if (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n return {x: scale.xCenter, y: scale.yCenter};\n }\n\n var pixel = scale.getBasePixel();\n return el.horizontal ?\n {x: pixel, y: null} :\n {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n if (el instanceof ArcElement) {\n return positioners.arc;\n }\n if (el instanceof PointElement) {\n return positioners.point;\n }\n if (el instanceof BarElement) {\n return positioners.bar;\n }\n return positioners.fallback;\n}\n\nfunction drawRoundedRect(ctx, x, y, w, h, radius) {\n var HALF_PI = Math.PI / 2;\n\n if (radius) {\n var r = Math.min(radius, h / 2, w / 2);\n var left = x + r;\n var top = y + r;\n var right = x + w - r;\n var bottom = y + h - r;\n\n ctx.moveTo(x, top);\n if (left < right && top < bottom) {\n ctx.arc(left, top, r, -Math.PI, -HALF_PI);\n ctx.arc(right, top, r, -HALF_PI, 0);\n ctx.arc(right, bottom, r, 0, HALF_PI);\n ctx.arc(left, bottom, r, HALF_PI, Math.PI);\n } else if (left < right) {\n ctx.moveTo(left, y);\n ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n ctx.arc(left, top, r, HALF_PI, Math.PI + HALF_PI);\n } else if (top < bottom) {\n ctx.arc(left, top, r, -Math.PI, 0);\n ctx.arc(left, bottom, r, 0, Math.PI);\n } else {\n ctx.arc(left, top, r, -Math.PI, Math.PI);\n }\n ctx.closePath();\n ctx.moveTo(x, y);\n } else {\n ctx.rect(x, y, w, h);\n }\n}\n\nfunction drawFrame(ctx, rect, model) {\n var bgColor = model.backgroundColor;\n var borderColor = model.borderColor;\n var borderWidth = model.borderWidth;\n\n if (!bgColor && (!borderColor || !borderWidth)) {\n return;\n }\n\n ctx.beginPath();\n\n drawRoundedRect(\n ctx,\n rasterize(rect.x) + borderWidth / 2,\n rasterize(rect.y) + borderWidth / 2,\n rasterize(rect.w) - borderWidth,\n rasterize(rect.h) - borderWidth,\n model.borderRadius);\n\n ctx.closePath();\n\n if (bgColor) {\n ctx.fillStyle = bgColor;\n ctx.fill();\n }\n\n if (borderColor && borderWidth) {\n ctx.strokeStyle = borderColor;\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = 'miter';\n ctx.stroke();\n }\n}\n\nfunction textGeometry(rect, align, font) {\n var h = font.lineHeight;\n var w = rect.w;\n var x = rect.x;\n var y = rect.y + h / 2;\n\n if (align === 'center') {\n x += w / 2;\n } else if (align === 'end' || align === 'right') {\n x += w;\n }\n\n return {\n h: h,\n w: w,\n x: x,\n y: y\n };\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n var shadow = ctx.shadowBlur;\n var stroked = cfg.stroked;\n var x = rasterize(cfg.x);\n var y = rasterize(cfg.y);\n var w = rasterize(cfg.w);\n\n if (stroked) {\n ctx.strokeText(text, x, y, w);\n }\n\n if (cfg.filled) {\n if (shadow && stroked) {\n // Prevent drawing shadow on both the text stroke and fill, so\n // if the text is stroked, remove the shadow for the text fill.\n ctx.shadowBlur = 0;\n }\n\n ctx.fillText(text, x, y, w);\n\n if (shadow && stroked) {\n ctx.shadowBlur = shadow;\n }\n }\n}\n\nfunction drawText(ctx, lines, rect, model) {\n var align = model.textAlign;\n var color = model.color;\n var filled = !!color;\n var font = model.font;\n var ilen = lines.length;\n var strokeColor = model.textStrokeColor;\n var strokeWidth = model.textStrokeWidth;\n var stroked = strokeColor && strokeWidth;\n var i;\n\n if (!ilen || (!filled && !stroked)) {\n return;\n }\n\n // Adjust coordinates based on text alignment and line height\n rect = textGeometry(rect, align, font);\n\n ctx.font = font.string;\n ctx.textAlign = align;\n ctx.textBaseline = 'middle';\n ctx.shadowBlur = model.textShadowBlur;\n ctx.shadowColor = model.textShadowColor;\n\n if (filled) {\n ctx.fillStyle = color;\n }\n if (stroked) {\n ctx.lineJoin = 'round';\n ctx.lineWidth = strokeWidth;\n ctx.strokeStyle = strokeColor;\n }\n\n for (i = 0, ilen = lines.length; i < ilen; ++i) {\n drawTextLine(ctx, lines[i], {\n stroked: stroked,\n filled: filled,\n w: rect.w,\n x: rect.x,\n y: rect.y + rect.h * i\n });\n }\n}\n\nvar Label = function(config, ctx, el, index) {\n var me = this;\n\n me._config = config;\n me._index = index;\n me._model = null;\n me._rects = null;\n me._ctx = ctx;\n me._el = el;\n};\n\nmerge(Label.prototype, {\n /**\n * @private\n */\n _modelize: function(display, lines, config, context) {\n var me = this;\n var index = me._index;\n var font = toFont(resolve([config.font, {}], context, index));\n var color = resolve([config.color, defaults$1.color], context, index);\n\n return {\n align: resolve([config.align, 'center'], context, index),\n anchor: resolve([config.anchor, 'center'], context, index),\n area: context.chart.chartArea,\n backgroundColor: resolve([config.backgroundColor, null], context, index),\n borderColor: resolve([config.borderColor, null], context, index),\n borderRadius: resolve([config.borderRadius, 0], context, index),\n borderWidth: resolve([config.borderWidth, 0], context, index),\n clamp: resolve([config.clamp, false], context, index),\n clip: resolve([config.clip, false], context, index),\n color: color,\n display: display,\n font: font,\n lines: lines,\n offset: resolve([config.offset, 0], context, index),\n opacity: resolve([config.opacity, 1], context, index),\n origin: getScaleOrigin(me._el, context),\n padding: toPadding(resolve([config.padding, 0], context, index)),\n positioner: getPositioner(me._el),\n rotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n size: utils.textSize(me._ctx, lines, font),\n textAlign: resolve([config.textAlign, 'start'], context, index),\n textShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n textShadowColor: resolve([config.textShadowColor, color], context, index),\n textStrokeColor: resolve([config.textStrokeColor, color], context, index),\n textStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n };\n },\n\n update: function(context) {\n var me = this;\n var model = null;\n var rects = null;\n var index = me._index;\n var config = me._config;\n var value, label, lines;\n\n // We first resolve the display option (separately) to avoid computing\n // other options in case the label is hidden (i.e. display: false).\n var display = resolve([config.display, true], context, index);\n\n if (display) {\n value = context.dataset.data[index];\n label = valueOrDefault(callback(config.formatter, [value, context]), value);\n lines = isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n if (lines.length) {\n model = me._modelize(display, lines, config, context);\n rects = boundingRects(model);\n }\n }\n\n me._model = model;\n me._rects = rects;\n },\n\n geometry: function() {\n return this._rects ? this._rects.frame : {};\n },\n\n rotation: function() {\n return this._model ? this._model.rotation : 0;\n },\n\n visible: function() {\n return this._model && this._model.opacity;\n },\n\n model: function() {\n return this._model;\n },\n\n draw: function(chart, center) {\n var me = this;\n var ctx = chart.ctx;\n var model = me._model;\n var rects = me._rects;\n var area;\n\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n if (model.clip) {\n area = model.area;\n ctx.beginPath();\n ctx.rect(\n area.left,\n area.top,\n area.right - area.left,\n area.bottom - area.top);\n ctx.clip();\n }\n\n ctx.globalAlpha = utils.bound(0, model.opacity, 1);\n ctx.translate(rasterize(center.x), rasterize(center.y));\n ctx.rotate(model.rotation);\n\n drawFrame(ctx, rects.frame, model);\n drawText(ctx, model.lines, rects.text, model);\n\n ctx.restore();\n }\n});\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var cx = center.x;\n var cy = center.y;\n\n return {\n x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n };\n}\n\nfunction projected(points, axis) {\n var min = MAX_INTEGER;\n var max = MIN_INTEGER;\n var origin = axis.origin;\n var i, pt, vx, vy, dp;\n\n for (i = 0; i < points.length; ++i) {\n pt = points[i];\n vx = pt.x - origin.x;\n vy = pt.y - origin.y;\n dp = axis.vx * vx + axis.vy * vy;\n min = Math.min(min, dp);\n max = Math.max(max, dp);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction toAxis(p0, p1) {\n var vx = p1.x - p0.x;\n var vy = p1.y - p0.y;\n var ln = Math.sqrt(vx * vx + vy * vy);\n\n return {\n vx: (p1.x - p0.x) / ln,\n vy: (p1.y - p0.y) / ln,\n origin: p0,\n ln: ln\n };\n}\n\nvar HitBox = function() {\n this._rotation = 0;\n this._rect = {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n };\n};\n\nmerge(HitBox.prototype, {\n center: function() {\n var r = this._rect;\n return {\n x: r.x + r.w / 2,\n y: r.y + r.h / 2\n };\n },\n\n update: function(center, rect, rotation) {\n this._rotation = rotation;\n this._rect = {\n x: rect.x + center.x,\n y: rect.y + center.y,\n w: rect.w,\n h: rect.h\n };\n },\n\n contains: function(point) {\n var me = this;\n var margin = 1;\n var rect = me._rect;\n\n point = rotated(point, me.center(), -me._rotation);\n\n return !(point.x < rect.x - margin\n || point.y < rect.y - margin\n || point.x > rect.x + rect.w + margin * 2\n || point.y > rect.y + rect.h + margin * 2);\n },\n\n // Separating Axis Theorem\n // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n intersects: function(other) {\n var r0 = this._points();\n var r1 = other._points();\n var axes = [\n toAxis(r0[0], r0[1]),\n toAxis(r0[0], r0[3])\n ];\n var i, pr0, pr1;\n\n if (this._rotation !== other._rotation) {\n // Only separate with r1 axis if the rotation is different,\n // else it's enough to separate r0 and r1 with r0 axis only!\n axes.push(\n toAxis(r1[0], r1[1]),\n toAxis(r1[0], r1[3])\n );\n }\n\n for (i = 0; i < axes.length; ++i) {\n pr0 = projected(r0, axes[i]);\n pr1 = projected(r1, axes[i]);\n\n if (pr0.max < pr1.min || pr1.max < pr0.min) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * @private\n */\n _points: function() {\n var me = this;\n var rect = me._rect;\n var angle = me._rotation;\n var center = me.center();\n\n return [\n rotated({x: rect.x, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n rotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n ];\n }\n});\n\nfunction coordinates(el, model, geometry) {\n var point = model.positioner(el, model);\n var vx = point.vx;\n var vy = point.vy;\n\n if (!vx && !vy) {\n // if aligned center, we don't want to offset the center point\n return {x: point.x, y: point.y};\n }\n\n var w = geometry.w;\n var h = geometry.h;\n\n // take in account the label rotation\n var rotation = model.rotation;\n var dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n var dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n // scale the unit vector (vx, vy) to get at least dx or dy equal to\n // w or h respectively (else we would calculate the distance to the\n // ellipse inscribed in the bounding rect)\n var vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n dx *= vx * vs;\n dy *= vy * vs;\n\n // finally, include the explicit offset\n dx += model.offset * vx;\n dy += model.offset * vy;\n\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n}\n\nfunction collide(labels, collider) {\n var i, j, s0, s1;\n\n // IMPORTANT Iterate in the reverse order since items at the end of the\n // list have an higher weight/priority and thus should be less impacted\n // by the overlapping strategy.\n\n for (i = labels.length - 1; i >= 0; --i) {\n s0 = labels[i].$layout;\n\n for (j = i - 1; j >= 0 && s0._visible; --j) {\n s1 = labels[j].$layout;\n\n if (s1._visible && s0._box.intersects(s1._box)) {\n collider(s0, s1);\n }\n }\n }\n\n return labels;\n}\n\nfunction compute(labels) {\n var i, ilen, label, state, geometry, center, proxy;\n\n // Initialize labels for overlap detection\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n // Chart.js 3 removed el._model in favor of getProps(), making harder to\n // abstract reading values in positioners. Also, using string arrays to\n // read values (i.e. var {a,b,c} = el.getProps([\"a\",\"b\",\"c\"])) would make\n // positioners inefficient in the normal case (i.e. not the final values)\n // and the code a bit ugly, so let's use a Proxy instead.\n proxy = new Proxy(label._el, {get: (el, p) => el.getProps([p], true)[p]});\n\n geometry = label.geometry();\n center = coordinates(proxy, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n }\n }\n\n // Auto hide overlapping labels\n return collide(labels, function(s0, s1) {\n var h0 = s0._hidable;\n var h1 = s1._hidable;\n\n if ((h0 && h1) || h1) {\n s1._visible = false;\n } else if (h0) {\n s0._visible = false;\n }\n });\n}\n\nvar layout = {\n prepare: function(datasets) {\n var labels = [];\n var i, j, ilen, jlen, label;\n\n for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n for (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n label = datasets[i][j];\n labels.push(label);\n label.$layout = {\n _box: new HitBox(),\n _hidable: false,\n _visible: true,\n _set: i,\n _idx: j\n };\n }\n }\n\n // TODO New `z` option: labels with a higher z-index are drawn\n // of top of the ones with a lower index. Lowest z-index labels\n // are also discarded first when hiding overlapping labels.\n labels.sort(function(a, b) {\n var sa = a.$layout;\n var sb = b.$layout;\n\n return sa._idx === sb._idx\n ? sb._set - sa._set\n : sb._idx - sa._idx;\n });\n\n this.update(labels);\n\n return labels;\n },\n\n update: function(labels) {\n var dirty = false;\n var i, ilen, label, model, state;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n model = label.model();\n state = label.$layout;\n state._hidable = model && model.display === 'auto';\n state._visible = label.visible();\n dirty |= state._hidable;\n }\n\n if (dirty) {\n compute(labels);\n }\n },\n\n lookup: function(labels, point) {\n var i, state;\n\n // IMPORTANT Iterate in the reverse order since items at the end of\n // the list have an higher z-index, thus should be picked first.\n\n for (i = labels.length - 1; i >= 0; --i) {\n state = labels[i].$layout;\n\n if (state && state._visible && state._box.contains(point)) {\n return labels[i];\n }\n }\n\n return null;\n },\n\n draw: function(chart, labels) {\n var i, ilen, label, state, geometry, center;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n geometry = label.geometry();\n center = coordinates(label._el, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n label.draw(chart, center);\n }\n }\n }\n};\n\nvar formatter = function(value) {\n if (isNullOrUndef(value)) {\n return null;\n }\n\n var label = value;\n var keys, klen, k;\n if (isObject(value)) {\n if (!isNullOrUndef(value.label)) {\n label = value.label;\n } else if (!isNullOrUndef(value.r)) {\n label = value.r;\n } else {\n label = '';\n keys = Object.keys(value);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n label += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n }\n }\n }\n\n return '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n align: 'center',\n anchor: 'center',\n backgroundColor: null,\n borderColor: null,\n borderRadius: 0,\n borderWidth: 0,\n clamp: false,\n clip: false,\n color: undefined,\n display: true,\n font: {\n family: undefined,\n lineHeight: 1.2,\n size: undefined,\n style: undefined,\n weight: null\n },\n formatter: formatter,\n labels: undefined,\n listeners: {},\n offset: 4,\n opacity: 1,\n padding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n rotation: 0,\n textAlign: 'start',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n textShadowBlur: 0,\n textShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n var override = dataset.datalabels;\n var listeners = {};\n var configs = [];\n var labels, keys;\n\n if (override === false) {\n return null;\n }\n if (override === true) {\n override = {};\n }\n\n options = merge({}, [options, override]);\n labels = options.labels || {};\n keys = Object.keys(labels);\n delete options.labels;\n\n if (keys.length) {\n keys.forEach(function(key) {\n if (labels[key]) {\n configs.push(merge({}, [\n options,\n labels[key],\n {_key: key}\n ]));\n }\n });\n } else {\n // Default label if no \"named\" label defined.\n configs.push(options);\n }\n\n // listeners: {: {: }}\n listeners = configs.reduce(function(target, config) {\n each(config.listeners || {}, function(fn, event) {\n target[event] = target[event] || {};\n target[event][config._key || DEFAULT_KEY] = fn;\n });\n\n delete config.listeners;\n return target;\n }, {});\n\n return {\n labels: configs,\n listeners: listeners\n };\n}\n\nfunction dispatchEvent(chart, listeners, label) {\n if (!listeners) {\n return;\n }\n\n var context = label.$context;\n var groups = label.$groups;\n var callback$1;\n\n if (!listeners[groups._set]) {\n return;\n }\n\n callback$1 = listeners[groups._set][groups._key];\n if (!callback$1) {\n return;\n }\n\n if (callback(callback$1, [context]) === true) {\n // Users are allowed to tweak the given context by injecting values that can be\n // used in scriptable options to display labels differently based on the current\n // event (e.g. highlight an hovered label). That's why we update the label with\n // the output context and schedule a new chart render by setting it dirty.\n chart[EXPANDO_KEY]._dirty = true;\n label.update(context);\n }\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\n var enter, leave;\n\n if (!previous && !label) {\n return;\n }\n\n if (!previous) {\n enter = true;\n } else if (!label) {\n leave = true;\n } else if (previous !== label) {\n leave = enter = true;\n }\n\n if (leave) {\n dispatchEvent(chart, listeners.leave, previous);\n }\n if (enter) {\n dispatchEvent(chart, listeners.enter, label);\n }\n}\n\nfunction handleMoveEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var listeners = expando._listeners;\n var previous, label;\n\n if (!listeners.enter && !listeners.leave) {\n return;\n }\n\n if (event.type === 'mousemove') {\n label = layout.lookup(expando._labels, event);\n } else if (event.type !== 'mouseout') {\n return;\n }\n\n previous = expando._hovered;\n expando._hovered = label;\n dispatchMoveEvents(chart, listeners, previous, label);\n}\n\nfunction handleClickEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var handlers = expando._listeners.click;\n var label = handlers && layout.lookup(expando._labels, event);\n if (label) {\n dispatchEvent(chart, handlers, label);\n }\n}\n\nvar plugin = {\n id: 'datalabels',\n\n defaults: defaults,\n\n beforeInit: function(chart) {\n chart[EXPANDO_KEY] = {\n _actives: []\n };\n },\n\n beforeUpdate: function(chart) {\n var expando = chart[EXPANDO_KEY];\n expando._listened = false;\n expando._listeners = {}; // {: {: {: }}}\n expando._datasets = []; // per dataset labels: [Label[]]\n expando._labels = []; // layouted labels: Label[]\n },\n\n afterDatasetUpdate: function(chart, args, options) {\n var datasetIndex = args.index;\n var expando = chart[EXPANDO_KEY];\n var labels = expando._datasets[datasetIndex] = [];\n var visible = chart.isDatasetVisible(datasetIndex);\n var dataset = chart.data.datasets[datasetIndex];\n var config = configure(dataset, options);\n var elements = args.meta.data || [];\n var ctx = chart.ctx;\n var i, j, ilen, jlen, cfg, key, el, label;\n\n ctx.save();\n\n for (i = 0, ilen = elements.length; i < ilen; ++i) {\n el = elements[i];\n el[EXPANDO_KEY] = [];\n\n if (visible && el && chart.getDataVisibility(i) && !el.skip) {\n for (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n cfg = config.labels[j];\n key = cfg._key;\n\n label = new Label(cfg, ctx, el, i);\n label.$groups = {\n _set: datasetIndex,\n _key: key || DEFAULT_KEY\n };\n label.$context = {\n active: false,\n chart: chart,\n dataIndex: i,\n dataset: dataset,\n datasetIndex: datasetIndex\n };\n\n label.update(label.$context);\n el[EXPANDO_KEY].push(label);\n labels.push(label);\n }\n }\n }\n\n ctx.restore();\n\n // Store listeners at the chart level and per event type to optimize\n // cases where no listeners are registered for a specific event.\n merge(expando._listeners, config.listeners, {\n merger: function(event, target, source) {\n target[event] = target[event] || {};\n target[event][args.index] = source[event];\n expando._listened = true;\n }\n });\n },\n\n afterUpdate: function(chart, options) {\n chart[EXPANDO_KEY]._labels = layout.prepare(\n chart[EXPANDO_KEY]._datasets,\n options);\n },\n\n // Draw labels on top of all dataset elements\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n afterDatasetsDraw: function(chart) {\n layout.draw(chart, chart[EXPANDO_KEY]._labels);\n },\n\n beforeEvent: function(chart, args) {\n // If there is no listener registered for this chart, `listened` will be false,\n // meaning we can immediately ignore the incoming event and avoid useless extra\n // computation for users who don't implement label interactions.\n if (chart[EXPANDO_KEY]._listened) {\n var event = args.event;\n switch (event.type) {\n case 'mousemove':\n case 'mouseout':\n handleMoveEvents(chart, event);\n break;\n case 'click':\n handleClickEvents(chart, event);\n break;\n }\n }\n },\n\n afterEvent: function(chart) {\n var expando = chart[EXPANDO_KEY];\n var previous = expando._actives;\n var actives = expando._actives = chart.getActiveElements();\n var updates = utils.arrayDiff(previous, actives);\n var i, ilen, j, jlen, update, label, labels;\n\n for (i = 0, ilen = updates.length; i < ilen; ++i) {\n update = updates[i];\n if (update[1]) {\n labels = update[0].element[EXPANDO_KEY] || [];\n for (j = 0, jlen = labels.length; j < jlen; ++j) {\n label = labels[j];\n label.$context.active = (update[1] === 1);\n label.update(label.$context);\n }\n }\n }\n\n if (expando._dirty || updates.length) {\n layout.update(expando._labels);\n chart.render();\n }\n\n delete expando._dirty;\n }\n};\n\nexport default plugin;\n","\n /**\n * npm package: chartjs-plugin-doughnutlabel-v3 v1.2.0\n * \n * Chart.js (Version 3) Doughnut Chart plugin to display\n * custom lines of text in the center of the circle.\n * \n * author: Jeff Brower \n * \n * supplies: chartjs-plugin-doughnutlabel.js v1.2.0\n * Released under the MIT license.\n */\n\nimport { Chart, DoughnutController } from 'chart.js';\nimport { valueOrDefault, toLineHeight, isNullOrUndef, resolve } from 'chart.js/helpers';\n\nconst parseText = (text, chart) => typeof text === 'function' ? text(chart) : text;\r\nconst parseFont = (value) => {\r\n const defaults = Chart.defaults;\r\n const size = valueOrDefault(value.size, defaults.font.size);\r\n const font = {\r\n family: valueOrDefault(value.family, defaults.font.family),\r\n // FontSpec types this as a number|string and the toLineHeight function\r\n // returns a number. The first argument 'value.lineHeight' can be a\r\n // number|string and 'size' is a number.\r\n lineHeight: toLineHeight(value.lineHeight, size),\r\n size: size,\r\n style: valueOrDefault(value.style, defaults.font.style),\r\n weight: valueOrDefault(value.weight, null),\r\n string: ''\r\n };\r\n // Add a 'string' property to our font object.\r\n font.string = utils.toFontString(font);\r\n return font;\r\n};\r\nconst toFontString = (font) => {\r\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\r\n return '';\r\n }\r\n return (font.style ? font.style + ' ' : '')\r\n + (font.weight ? font.weight + ' ' : '')\r\n + font.size + 'px '\r\n + font.family;\r\n};\r\nconst textSize = (chart, labels) => {\r\n const { ctx } = chart;\r\n const prev = ctx.font;\r\n let width = 0;\r\n let height = 0;\r\n labels.forEach(label => {\r\n // We allow 'text' to be a string or the return value of a function as a string.\r\n const text = typeof label.text === 'function' ? label.text(chart) : label.text;\r\n ctx.font = label.font ? label.font.string : '';\r\n width = Math.max(ctx.measureText(text).width, width);\r\n height += label.font.lineHeight;\r\n });\r\n ctx.font = prev;\r\n const result = {\r\n height: height,\r\n width: width\r\n };\r\n return result;\r\n};\r\nconst utils = {\r\n parseText,\r\n parseFont,\r\n toFontString,\r\n textSize,\r\n};\n\nconst drawDoughnutLabel = (chart, options) => {\r\n if (chart.chartArea && options) {\r\n const { labels } = options;\r\n if (!labels?.length) {\r\n return;\r\n }\r\n const { ctx, chartArea: { top, right, bottom, left } } = chart;\r\n const innerLabels = [];\r\n labels.forEach(label => {\r\n const text = utils.parseText(label.text, chart);\r\n const font = utils.parseFont(resolve([label.font, options.font, Chart.defaults.font], ctx, 0) || Chart.defaults.font);\r\n const color = resolve([label.color, options.color, Chart.defaults.color], ctx, 0);\r\n const innerLabel = {\r\n text,\r\n font,\r\n color: color ?? '#000',\r\n };\r\n innerLabels.push(innerLabel);\r\n });\r\n let textAreaSize = utils.textSize(chart, innerLabels);\r\n // Calculate the adjustment ratio to fit the text area into the doughnut\r\n // inner circle\r\n const hypotenuse = Math.sqrt(Math.pow(textAreaSize.width, 2) + Math.pow(textAreaSize.height, 2));\r\n const innerDiameter = DoughnutController.prototype.innerRadius * 2;\r\n const fitRatio = innerDiameter / hypotenuse;\r\n // Adjust the font if necessary and recalculate the text area after\r\n // applying the fit ratio\r\n if (fitRatio < 1) {\r\n innerLabels.forEach(innerLabel => {\r\n innerLabel.font.size = Math.floor(innerLabel.font.size * fitRatio);\r\n innerLabel.font.lineHeight = 1.2; // was undefined\r\n innerLabel.font = utils.parseFont(resolve([innerLabel.font, null], ctx, 0) || Chart.defaults.font);\r\n });\r\n textAreaSize = utils.textSize(chart, innerLabels);\r\n }\r\n ctx.textAlign = \"center\";\r\n ctx.textBaseline = \"middle\";\r\n // The center of the inner circle\r\n const centerX = (left + right) / 2;\r\n const centerY = (top + bottom) / 2;\r\n // The top Y coordinate of the text area\r\n const topY = centerY - textAreaSize.height / 2;\r\n let i;\r\n const ilen = innerLabels.length;\r\n let currentHeight = 0;\r\n for (i = 0; i < ilen; ++i) {\r\n ctx.fillStyle = innerLabels[i].color;\r\n ctx.font = innerLabels[i].font.string;\r\n // The Y center of each line\r\n const lineCenterY = topY + innerLabels[i].font.lineHeight / 2 + currentHeight;\r\n currentHeight += innerLabels[i].font.lineHeight;\r\n // We allow 'text' to be a string or the return value of a function as\r\n // a string.\r\n // const text = typeof innerLabels[i].text === 'function' ? innerLabels[i].text(chart) : innerLabels[i].text;\r\n const text = utils.parseText(innerLabels[i].text, chart);\r\n // Draw each line of text\r\n ctx.fillText(text, centerX, lineCenterY);\r\n }\r\n }\r\n};\r\nconst coreFunctions = {\r\n drawDoughnutLabel,\r\n};\n\nvar DoughnutLabel = {\r\n id: 'doughnutLabel',\r\n defaults: {\r\n font: {\r\n family: 'sans-serif',\r\n size: 16,\r\n style: 'normal',\r\n weight: 'normal',\r\n lineHeight: 1.2,\r\n string: '16px sans-serif'\r\n },\r\n },\r\n beforeDraw: (chart, args, options) => drawDoughnutLabel(chart, options),\r\n};\n\nexport { coreFunctions, DoughnutLabel as default };\n","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","// https://github.com/HarryStevens/d3-regression#readme Version 1.3.10. Copyright 2022 Harry Stevens.\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.d3 = {}));\n}(this, (function (exports) { 'use strict';\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n // Adapted from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/points.js\n function points(data, x, y, sort) {\n data = data.filter(function (d, i) {\n var u = x(d, i),\n v = y(d, i);\n return u != null && isFinite(u) && v != null && isFinite(v);\n });\n\n if (sort) {\n data.sort(function (a, b) {\n return x(a) - x(b);\n });\n }\n\n var n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n); // extract values, calculate means\n\n var ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n\n for (var i = 0; i < n;) {\n d = data[i];\n X[i] = xv = +x(d, i, data);\n Y[i] = yv = +y(d, i, data);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n } // mean center the data\n\n\n for (var _i = 0; _i < n; ++_i) {\n X[_i] -= ux;\n Y[_i] -= uy;\n }\n\n return [X, Y, ux, uy];\n }\n function visitPoints(data, x, y, cb) {\n var iterations = 0;\n\n for (var i = 0, n = data.length; i < n; i++) {\n var d = data[i],\n dx = +x(d, i, data),\n dy = +y(d, i, data);\n\n if (dx != null && isFinite(dx) && dy != null && isFinite(dy)) {\n cb(dx, dy, iterations++);\n }\n }\n }\n\n // return the coefficient of determination, or R squared.\n\n function determination(data, x, y, uY, predict) {\n var SSE = 0,\n SST = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n }\n\n // Returns the angle of a line in degrees.\n function angle(line) {\n return Math.atan2(line[1][1] - line[0][1], line[1][0] - line[0][0]) * 180 / Math.PI;\n } // Returns the midpoint of a line.\n\n function midpoint(line) {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n }\n\n // returns a smooth line.\n\n function interpose(xmin, xmax, predict) {\n var l = Math.log(xmax - xmin) * Math.LOG10E + 1 | 0;\n var precision = 1 * Math.pow(10, -l / 2 - 1),\n maxIter = 1e4;\n var points = [px(xmin), px(xmax)],\n iter = 0;\n\n while (find(points) && iter < maxIter) {\n }\n\n return points;\n\n function px(x) {\n return [x, predict(x)];\n }\n\n function find(points) {\n iter++;\n var n = points.length;\n var found = false;\n\n for (var i = 0; i < n - 1; i++) {\n var p0 = points[i],\n p1 = points[i + 1],\n m = midpoint([p0, p1]),\n mp = px(m[0]),\n a0 = angle([p0, m]),\n a1 = angle([p0, mp]),\n a = Math.abs(a0 - a1);\n\n if (a > precision) {\n points.splice(i + 1, 0, mp);\n found = true;\n }\n }\n\n return found;\n }\n }\n\n // Ordinary Least Squares from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/ols.js\n function ols(uX, uY, uXY, uX2) {\n var delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n }\n\n function exponential () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function exponential(data) {\n var n = 0,\n Y = 0,\n YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var ly = Math.log(dy),\n xy = dx * dy;\n ++n;\n Y += (dy - Y) / n;\n XY += (xy - XY) / n;\n X2Y += (dx * xy - X2Y) / n;\n YL += (dy * ly - YL) / n;\n XYL += (xy * ly - XYL) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(XY / Y, YL / Y, XYL / Y, X2Y / Y),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n a = Math.exp(a);\n\n var fn = function fn(x) {\n return a * Math.exp(b * x);\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n exponential.domain = function (arr) {\n return arguments.length ? (domain = arr, exponential) : domain;\n };\n\n exponential.x = function (fn) {\n return arguments.length ? (x = fn, exponential) : x;\n };\n\n exponential.y = function (fn) {\n return arguments.length ? (y = fn, exponential) : y;\n };\n\n return exponential;\n }\n\n function linear () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function linear(data) {\n var n = 0,\n X = 0,\n // sum of x\n Y = 0,\n // sum of y\n XY = 0,\n // sum of x * y\n X2 = 0,\n // sum of x * x\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * x + intercept;\n },\n out = [[xmin, fn(xmin)], [xmax, fn(xmax)]];\n\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n linear.domain = function (arr) {\n return arguments.length ? (domain = arr, linear) : domain;\n };\n\n linear.x = function (fn) {\n return arguments.length ? (x = fn, linear) : x;\n };\n\n linear.y = function (fn) {\n return arguments.length ? (y = fn, linear) : y;\n };\n\n return linear;\n }\n\n // Returns the medium value of an array of numbers.\n function median(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n var i = arr.length / 2;\n return i % 1 === 0 ? (arr[i - 1] + arr[i]) / 2 : arr[Math.floor(i)];\n }\n\n var maxiters = 2,\n epsilon = 1e-12;\n function loess () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n bandwidth = .3;\n\n function loess(data) {\n var _points = points(data, x, y, true),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n\n for (var iter = -1; ++iter <= maxiters;) {\n var interval = [0, bw - 1];\n\n for (var i = 0; i < n; ++i) {\n var dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n var W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n denom = 1 / Math.abs(xv[edge] - dx || 1); // Avoid singularity\n\n for (var k = i0; k <= i1; ++k) {\n var xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n } // Linear regression fit\n\n\n var _ols = ols(X / W, Y / W, XY / W, X2 / W),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n\n if (iter === maxiters) {\n break;\n }\n\n var medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n\n for (var _i = 0, arg, _w; _i < n; ++_i) {\n arg = residuals[_i] / (6 * medianResidual); // Default to epsilon (rather than zero) for large deviations\n // Keeping weights tiny but non-zero prevents singularites\n\n robustWeights[_i] = arg >= 1 ? epsilon : (_w = 1 - arg * arg) * _w;\n }\n }\n\n return output(xv, yhat, ux, uy);\n }\n\n loess.bandwidth = function (bw) {\n return arguments.length ? (bandwidth = bw, loess) : bandwidth;\n };\n\n loess.x = function (fn) {\n return arguments.length ? (x = fn, loess) : x;\n };\n\n loess.y = function (fn) {\n return arguments.length ? (y = fn, loess) : y;\n };\n\n return loess;\n } // Weighting kernel for local regression\n\n function tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n } // Advance sliding window interval of nearest neighbors\n\n\n function updateInterval(xv, i, interval) {\n var val = xv[i],\n left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return; // Step right if distance to new right edge is <= distance to old left edge\n // Step when distance is equal to ensure movement over duplicate x values\n\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n } // Generate smoothed output points\n // Average points with repeated x values\n\n\n function output(xv, yhat, ux, uy) {\n var n = xv.length,\n out = [];\n var i = 0,\n cnt = 0,\n prev = [],\n v;\n\n for (; i < n; ++i) {\n v = xv[i] + ux;\n\n if (prev[0] === v) {\n // Average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // Add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n\n prev[1] += uy;\n return out;\n }\n\n function logarithmic () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n base = Math.E,\n domain;\n\n function logarithmic(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity,\n lb = Math.log(base);\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx) / lb;\n ++n;\n X += (lx - X) / n;\n Y += (dy - Y) / n;\n XY += (lx * dy - XY) / n;\n X2 += (lx * lx - X2) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * Math.log(x) / lb + intercept;\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n logarithmic.domain = function (arr) {\n return arguments.length ? (domain = arr, logarithmic) : domain;\n };\n\n logarithmic.x = function (fn) {\n return arguments.length ? (x = fn, logarithmic) : x;\n };\n\n logarithmic.y = function (fn) {\n return arguments.length ? (y = fn, logarithmic) : y;\n };\n\n logarithmic.base = function (n) {\n return arguments.length ? (base = n, logarithmic) : base;\n };\n\n return logarithmic;\n }\n\n function quad () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function quadratic(data) {\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length;\n\n var X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n n0++;\n Y += (dy - Y) / n0;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n fn = function fn(x) {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n\n var out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b - 2 * a * ux;\n out.c = c - b * ux + a * ux * ux + uy;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n quadratic.domain = function (arr) {\n return arguments.length ? (domain = arr, quadratic) : domain;\n };\n\n quadratic.x = function (fn) {\n return arguments.length ? (x = fn, quadratic) : x;\n };\n\n quadratic.y = function (fn) {\n return arguments.length ? (y = fn, quadratic) : y;\n };\n\n return quadratic;\n }\n\n // Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n // License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\n // ...with ideas from vega-statistics by Jeffrey Heer\n // Source: https://github.com/vega/vega/blob/f21cb8792b4e0cbe2b1a3fd44b0f5db370dbaadb/packages/vega-statistics/src/regression/poly.js\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n\n function polynomial () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n order = 3,\n domain;\n\n function polynomial(data) {\n // Use more efficient methods for lower orders\n if (order === 1) {\n var o = linear().x(x).y(y).domain(domain)(data);\n o.coefficients = [o.b, o.a];\n delete o.a;\n delete o.b;\n return o;\n }\n\n if (order === 2) {\n var _o = quad().x(x).y(y).domain(domain)(data);\n\n _o.coefficients = [_o.c, _o.b, _o.a];\n delete _o.a;\n delete _o.b;\n delete _o.c;\n return _o;\n }\n\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n0;\n Y += (dy - Y) / n0;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var i, j, l, v, c;\n\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n\n lhs.push(v);\n c = new Float64Array(k);\n\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n\n c[j] = v;\n }\n\n rhs.push(c);\n }\n\n rhs.push(lhs);\n\n var coef = gaussianElimination(rhs),\n fn = function fn(x) {\n x -= ux;\n var y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n\n for (i = 3; i < k; ++i) {\n y += coef[i] * Math.pow(x, i);\n }\n\n return y;\n },\n out = interpose(xmin, xmax, fn);\n\n out.coefficients = uncenter(k, coef, -ux, uy);\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n polynomial.domain = function (arr) {\n return arguments.length ? (domain = arr, polynomial) : domain;\n };\n\n polynomial.x = function (fn) {\n return arguments.length ? (x = fn, polynomial) : x;\n };\n\n polynomial.y = function (fn) {\n return arguments.length ? (y = fn, polynomial) : y;\n };\n\n polynomial.order = function (n) {\n return arguments.length ? (order = n, polynomial) : order;\n };\n\n return polynomial;\n }\n\n function uncenter(k, a, x, y) {\n var z = Array(k);\n var i, j, v, c; // initialize to zero\n\n for (i = 0; i < k; ++i) {\n z[i] = 0;\n } // polynomial expansion\n\n\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n\n z[i - j] += v * Math.pow(x, j) * c;\n }\n } // bias term\n\n\n z[0] += y;\n return z;\n } // Given an array for a two-dimensional matrix and the polynomial order,\n // solve A * x = b using Gaussian elimination.\n\n\n function gaussianElimination(matrix) {\n var n = matrix.length - 1,\n coef = [];\n var i, j, k, r, t;\n\n for (i = 0; i < n; ++i) {\n r = i; // max row\n\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n\n return coef;\n }\n\n function power () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function power(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n a = Math.exp(a);\n\n var fn = function fn(x) {\n return a * Math.pow(x, b);\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, YS, fn);\n return out;\n }\n\n power.domain = function (arr) {\n return arguments.length ? (domain = arr, power) : domain;\n };\n\n power.x = function (fn) {\n return arguments.length ? (x = fn, power) : x;\n };\n\n power.y = function (fn) {\n return arguments.length ? (y = fn, power) : y;\n };\n\n return power;\n }\n\n exports.regressionExp = exponential;\n exports.regressionLinear = linear;\n exports.regressionLoess = loess;\n exports.regressionLog = logarithmic;\n exports.regressionPoly = polynomial;\n exports.regressionPow = power;\n exports.regressionQuad = quad;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import React, { forwardRef, useRef, useEffect } from 'react';\nimport { Chart as Chart$1, LineController, BarController, RadarController, DoughnutController, PolarAreaController, BubbleController, PieController, ScatterController } from 'chart.js';\n\nconst defaultDatasetIdKey = 'label';\nfunction reforwardRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\nfunction setOptions(chart, nextOptions) {\n chart.options = {\n ...nextOptions\n };\n}\nfunction setLabels(currentData, nextLabels) {\n currentData.labels = nextLabels;\n}\nfunction setDatasets(currentData, nextDatasets, datasetIdKey = defaultDatasetIdKey) {\n const addedDatasets = [];\n currentData.datasets = nextDatasets.map((nextDataset)=>{\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find((dataset)=>dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n // There is no original to update, so simply add new one\n if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) {\n return {\n ...nextDataset\n };\n }\n addedDatasets.push(currentDataset);\n Object.assign(currentDataset, nextDataset);\n return currentDataset;\n });\n}\nfunction cloneData(data, datasetIdKey = defaultDatasetIdKey) {\n const nextData = {\n labels: [],\n datasets: []\n };\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n return nextData;\n}\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getDatasetAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'dataset', {\n intersect: true\n }, false);\n}\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'nearest', {\n intersect: true\n }, false);\n}\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementsAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'index', {\n intersect: true\n }, false);\n}\n\nfunction ChartComponent({ height =150 , width =300 , redraw =false , datasetIdKey , type , data , options , plugins =[] , fallbackContent , ...props }, ref) {\n const canvasRef = useRef(null);\n const chartRef = useRef();\n const renderChart = ()=>{\n if (!canvasRef.current) return;\n chartRef.current = new Chart$1(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options,\n plugins\n });\n reforwardRef(ref, chartRef.current);\n };\n const destroyChart = ()=>{\n reforwardRef(ref, null);\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n useEffect(()=>{\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [\n redraw,\n options\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [\n redraw,\n data.labels\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [\n redraw,\n data.datasets\n ]);\n useEffect(()=>{\n if (!chartRef.current) return;\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update();\n }\n }, [\n redraw,\n options,\n data.labels,\n data.datasets\n ]);\n useEffect(()=>{\n renderChart();\n return ()=>destroyChart()\n ;\n }, []);\n return(/*#__PURE__*/ React.createElement(\"canvas\", Object.assign({\n ref: canvasRef,\n role: \"img\",\n height: height,\n width: width\n }, props), fallbackContent));\n}\nconst Chart = /*#__PURE__*/ forwardRef(ChartComponent);\n\nfunction createTypedChart(type, registerables) {\n Chart$1.register(registerables);\n return(/*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ React.createElement(Chart, Object.assign({\n }, props, {\n ref: ref,\n type: type\n }))\n ));\n}\nconst Line = /* #__PURE__ */ createTypedChart('line', LineController);\nconst Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\nconst Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\nconst Doughnut = /* #__PURE__ */ createTypedChart('doughnut', DoughnutController);\nconst PolarArea = /* #__PURE__ */ createTypedChart('polarArea', PolarAreaController);\nconst Bubble = /* #__PURE__ */ createTypedChart('bubble', BubbleController);\nconst Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\nconst Scatter = /* #__PURE__ */ createTypedChart('scatter', ScatterController);\n\nexport { Bar, Bubble, Chart, Doughnut, Line, Pie, PolarArea, Radar, Scatter, getDatasetAtEvent, getElementAtEvent, getElementsAtEvent };\n//# sourceMappingURL=index.modern.js.map\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n var {\n DOMParser: DOMParserFallback\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n\n createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n\n createImage(url) {\n return _asyncToGenerator(function* () {\n var response = yield fetch(url);\n var blob = yield response.blob();\n var img = yield createImageBitmap(blob);\n return img;\n })();\n }\n\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n var {\n DOMParser,\n canvas,\n fetch\n } = _ref;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = regex.exec(selector);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n constructor(document, name, value) {\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n\n split() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var {\n document,\n name\n } = this;\n return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n }\n\n hasValue(zeroIsValue) {\n var {\n value\n } = this;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n\n isString(regexp) {\n var {\n value\n } = this;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n\n setValue(value) {\n this.value = value;\n return this;\n }\n\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var {\n value\n } = this;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n /= 100.0;\n }\n\n return n;\n }\n\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n\n getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n\n getDpi() {\n return 96.0; // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize;\n }\n\n getEm() {\n return this.document.emSize;\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n\n getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n var {\n viewPort\n } = this.document.screen;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n\n getDefinition() {\n var asString = this.getString();\n var name = /#([^)'\"]+)/.exec(asString);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n\n getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n\n addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n\n}\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n constructor() {\n this.viewPorts = [];\n }\n\n clear() {\n this.viewPorts = [];\n }\n\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n\n removeCurrent() {\n this.viewPorts.pop();\n }\n\n getCurrent() {\n var {\n viewPorts\n } = this;\n return viewPorts[viewPorts.length - 1];\n }\n\n get width() {\n return this.getCurrent().width;\n }\n\n get height() {\n return this.getCurrent().height;\n }\n\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n\n}\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n\n static parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n\n static parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n\n static parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n\n applyTransform(transform) {\n var {\n x,\n y\n } = this;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n\n}\n\nclass Mouse {\n constructor(screen) {\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n isWorking() {\n return this.working;\n }\n\n start() {\n if (this.working) {\n return;\n }\n\n var {\n screen,\n onClick,\n onMouseMove\n } = this;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n\n stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n\n runEvents() {\n if (!this.working) {\n return;\n }\n\n var {\n screen: document,\n events,\n eventElements\n } = this;\n var {\n style\n } = document.ctx.canvas;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach((_ref, i) => {\n var {\n run\n } = _ref;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref2, i) => {\n var {\n x,\n y\n } = _ref2;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref3, i) => {\n var {\n x,\n y\n } = _ref3;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n mapXY(x, y) {\n var {\n window,\n ctx\n } = this.screen;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n\n onClick(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n\n });\n }\n\n onMouseMove(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n\n });\n }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n constructor(ctx) {\n var {\n fetch = defaultFetch$1,\n window = defaultWindow\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n wait(checker) {\n this.waits.push(checker);\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(_ => _());\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n\n setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n\n setViewBox(_ref) {\n var {\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n } = _ref;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n\n start(element) {\n var {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n FRAMERATE,\n mouse\n } = this;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(resolve => {\n this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = () => {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n\n this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var {\n frameDuration\n } = this;\n var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var {\n CLIENT_WIDTH,\n CLIENT_HEIGHT,\n viewPort,\n ctx,\n isFirstRender\n } = this;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n constructor() {\n var {\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n parse(resource) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n if (resource.startsWith('<')) {\n return _this.parseFromString(resource);\n }\n\n return _this.load(resource);\n })();\n }\n\n parseFromString(xml) {\n var parser = new this.DOMParser();\n\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n\n checkDocument(document) {\n var parserError = document.getElementsByTagName('parsererror')[0];\n\n if (parserError) {\n throw new Error(parserError.textContent);\n }\n\n return document;\n }\n\n load(url) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var response = yield _this2.fetch(url);\n var xml = yield response.text();\n return _this2.parseFromString(xml);\n })();\n }\n\n}\n\nclass Translate {\n constructor(_, point) {\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n apply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(x || 0.0, y || 0.0);\n }\n\n unapply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.point;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n\n}\n\nclass Rotate {\n constructor(document, rotate, transformOrigin) {\n this.type = 'rotate';\n this.angle = null;\n this.originX = null;\n this.originY = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n\n apply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n cx,\n cy,\n angle\n } = this;\n var rad = angle.getRadians();\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n\n}\n\nclass Scale {\n constructor(_, scale, transformOrigin) {\n this.type = 'scale';\n this.scale = null;\n this.originX = null;\n this.originY = null;\n var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1.0 / x, 1.0 / y || x);\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.scale;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n\n}\n\nclass Matrix {\n constructor(_, matrix, transformOrigin) {\n this.type = 'matrix';\n this.matrix = [];\n this.originX = null;\n this.originY = null;\n this.matrix = toNumbers(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = null;\n this.angle = new Property(document, 'angle', skew);\n }\n\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n }\n\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n }\n\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var [type, value] = transform.split('(');\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n constructor(document, transform, transformOrigin) {\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n data.forEach(transform => {\n if (transform === 'none') {\n return;\n }\n\n var [type, value] = parseTransform(transform);\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n\n static fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n\n apply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n\n unapply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n\n applyToPoint(point) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n constructor(document, node) {\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(attribute => {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n styles.forEach(style => {\n if (!style) {\n return;\n }\n\n var [name, value] = style.split(':').map(_ => _.trim());\n this.styles[name] = new Property(document, name, value);\n });\n }\n\n var {\n definitions\n } = document;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(childNode => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode); // ELEMENT_NODE\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n this.addChild(textNode); // TEXT_NODE\n }\n }\n });\n }\n\n getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n\n getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n\n getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr !== null && attr !== void 0 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var {\n parent\n } = this;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n\n setContext(_) {// NO RENDER\n }\n\n applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n\n clearContext(_) {// NO RENDER\n }\n\n renderChildren(ctx) {\n this.children.forEach(child => {\n child.render(ctx);\n });\n }\n\n addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n\n matchesSelector(selector) {\n var _node$getAttribute;\n\n var {\n node\n } = this;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n }\n\n addStylesFromStyleDefinition() {\n var {\n styles,\n stylesSpecificity\n } = this.document;\n\n for (var selector in styles) {\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n\n removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce((toRestore, name) => {\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return [...toRestore, [name, value]];\n }, []);\n return toRestore;\n }\n\n restoreStyles(element, styles) {\n styles.forEach(_ref => {\n var [name, value] = _ref;\n element.getStyle(name, true).setValue(value);\n });\n }\n\n isFirstChild() {\n var _this$parent;\n\n return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = fontStyle.trim().toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = fontWeight.trim().toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nclass Font {\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n static parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(part => {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n [fontSize] = part.split('/');\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n\n toString() {\n return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ').trim();\n }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n constructor() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n get x() {\n return this.x1;\n }\n\n get y() {\n return this.y1;\n }\n\n get width() {\n return this.x2 - this.x1;\n }\n\n get height() {\n return this.y2 - this.y1;\n }\n\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n\n addX(x) {\n this.addPoint(x, null);\n }\n\n addY(y) {\n this.addPoint(null, y);\n }\n\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var {\n x1,\n y1,\n x2,\n y2\n } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n\n bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n\n isPointInBox(x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n\n}\n\nclass PathParser extends SVGPathData {\n constructor(path) {\n super(path // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n\n isEnd() {\n var {\n i,\n commands\n } = this;\n return i >= commands.length - 1;\n }\n\n next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n\n getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n\n getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n\n getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n\n getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n\n makeAbsolute(point) {\n if (this.command.relative) {\n var {\n x,\n y\n } = this.current;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n\n addMarker(point, from, priorTo) {\n var {\n points,\n angles\n } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n\n getMarkerPoints() {\n return this.points;\n }\n\n getMarkerAngles() {\n var {\n angles\n } = this;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n\n}\n\nclass RenderedElement extends Element {\n constructor() {\n super(...arguments);\n this.modifiedEmSizeStack = false;\n }\n\n calculateOpacity() {\n var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n } // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // \t// ?\n // \tctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n\n}\n\nclass PathElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = null;\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n\n path(ctx) {\n var {\n pathParser\n } = this;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n\n getBoundingBox(_) {\n return this.path();\n }\n\n getMarkers() {\n var {\n pathParser\n } = this;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map((point, i) => [point, angles[i]]);\n return markers;\n }\n\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n var [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var [_point, _angle] = markers[i];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var [_point2, _angle2] = markers[markersLastIndex];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n\n static pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n\n pathM(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n point\n } = PathElement.pathM(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n\n static pathL(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n\n pathL(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathL(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathH(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathH(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathH(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathV(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathV(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathV(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathC(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathC(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathS(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathS(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathQ(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathQ(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathT(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathT(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathA(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command;\n var xAxisRotation = xRot * (Math.PI / 180.0);\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n\n pathA(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser); // for markers\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rX > rY ? rX : rY;\n var sx = rX > rY ? 1 : rX / rY;\n var sy = rX > rY ? rY / rX : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n\n static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n\n}\n\nclass TextElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.measureCache = -1;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n\n initializeCoordinates() {\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n }\n\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n var boundingBox = null; // then calculate bounding box\n\n this.children.forEach((_, i) => {\n var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n\n getFontSize() {\n var {\n document,\n parent\n } = this;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n\n getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n\n getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n // NEED TEST\n var maybeGlyph = font.glyphs[char];\n glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n\n getText() {\n return '';\n }\n\n getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces( // textNode.value\n // || textNode.text\n textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx); // then render\n\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i);\n });\n var {\n mouse\n } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n\n renderTElementChildren(ctx) {\n var {\n document,\n parent\n } = this;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var {\n unitsPerEm\n } = customFont.fontFace;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var {\n x,\n y\n } = this; // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // \tif (ctx.strokeStyle) {\n // \t\tctx.strokeText(renderText, x, y);\n // \t}\n // \tif (ctx.fillStyle) {\n // \t\tctx.fillText(renderText, x, y);\n // \t}\n // } else {\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n } // }\n\n }\n\n applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\n } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n\n\n var firstElement = this.leafTexts[this.textChunkStart];\n var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n var isRTL = false; // we treat RTL like LTR\n\n var shift = 0;\n\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX;\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX;\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2;\n }\n\n for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n this.leafTexts[i].x += shift;\n } // start new chunk\n\n\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.textChunkStart = this.leafTexts.length;\n }\n\n adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i) => {\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (child.children.length > 0) {\n child.children.forEach((_, i) => {\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n });\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i);\n }\n }\n\n adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var customFont = child.getStyle('font-family').getDefinition();\n var isRTL = Boolean(customFont) && customFont.isRTL;\n\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n\n var width = child.measureText(ctx);\n\n if (isRTL) {\n textParent.x -= width;\n }\n\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x;\n\n if (!isRTL) {\n textParent.x += width;\n }\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y; // update the current chunk and it's bounds\n\n textParent.leafTexts.push(child);\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n\n getChildBoundingBox(ctx, textParent, parent, i) {\n var child = parent.children[i]; // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach((_, i) => {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n\n renderChild(ctx, textParent, parent, i) {\n var child = parent.children[i];\n child.render(ctx);\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n\n measureText(ctx) {\n var {\n measureCache\n } = this;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var {\n parent\n } = this;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n var {\n width: measure\n } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n /**\r\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n * are only inherited from a parent to its first child.\r\n * @param name - The attribute name.\r\n * @returns The attribute value or null.\r\n */\n\n\n getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n var current = this;\n\n while (current instanceof TextElement && current.isFirstChild()) {\n var parentAttr = current.parent.getAttribute(name);\n\n if (parentAttr.hasValue(true)) {\n return parentAttr.getValue('0');\n }\n\n current = current.parent;\n }\n\n return null;\n }\n\n}\n\nclass TSpanElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan'; // if this node has children, then they own the text\n\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n\n getText() {\n return this.text;\n }\n\n}\n\nclass TextNode extends TSpanElement {\n constructor() {\n super(...arguments);\n this.type = 'textNode';\n }\n\n}\n\nclass SVGElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'svg';\n this.root = false;\n }\n\n setContext(ctx) {\n var _this$node$parentNode;\n\n var {\n document\n } = this;\n var {\n screen,\n window\n } = document;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n } // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n var {\n width,\n height\n } = screen.viewPort;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n\n}\n\nclass RectElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'rect';\n }\n\n path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass CircleElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'circle';\n }\n\n path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass EllipseElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'ellipse';\n }\n\n path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass LineElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'line';\n }\n\n getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n\n path(ctx) {\n var [{\n x: x0,\n y: y0\n }, {\n x: x1,\n y: y1\n }] = this.getPoints();\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n\n getMarkers() {\n var [p0, p1] = this.getPoints();\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n\n}\n\nclass PolylineElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n\n path(ctx) {\n var {\n points\n } = this;\n var [{\n x: x0,\n y: y0\n }] = points;\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(_ref => {\n var {\n x,\n y\n } = _ref;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n\n getMarkers() {\n var {\n points\n } = this;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach((point, i) => {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n\n}\n\nclass PolygonElement extends PolylineElement {\n constructor() {\n super(...arguments);\n this.type = 'polygon';\n }\n\n path(ctx) {\n var boundingBox = super.path(ctx);\n var [{\n x,\n y\n }] = this.points;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n\n}\n\nclass PatternElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'pattern';\n }\n\n createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n\n}\n\nclass MarkerElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'marker';\n }\n\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var {\n x,\n y\n } = point;\n var orient = this.getAttribute('orient').getString('auto');\n var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n\n}\n\nclass DefsElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'defs';\n }\n\n render() {// NOOP\n }\n\n}\n\nclass GElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'g';\n }\n\n getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n\n}\n\nclass GradientElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.attributesToInherit = ['gradientUnits'];\n this.stops = [];\n var {\n stops,\n children\n } = this;\n children.forEach(child => {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var {\n stops\n } = stopsContainer;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(stop => {\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var {\n document\n } = this;\n var {\n MAX_VIRTUAL_PIXELS,\n viewPort\n } = document.screen;\n var [rootView] = viewPort.viewPorts;\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach(attributeToInherit => {\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'stop';\n var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n var stopOpacity = this.getStyle('stop-opacity');\n var stopColor = this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n\n}\n\nclass AnimateElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialValue = null;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\n this.begin = this.getAttribute('begin').getMilliseconds();\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n this.from = this.getAttribute('from');\n this.to = this.getAttribute('to');\n this.values = new Property(document, 'values', null);\n var valuesAttr = this.getAttribute('values');\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n\n getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n\n calcValue() {\n var {\n initialUnits\n } = this;\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n\n update(delta) {\n var {\n parent\n } = this;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n\n getProgress() {\n var {\n document,\n values\n } = this;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateColor';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress();\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateTransform';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map((from, i) => {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n\n}\n\nclass FontElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.glyphs = {};\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n var {\n definitions\n } = document;\n var {\n children\n } = this;\n\n for (var child of children) {\n switch (child.type) {\n case 'font-face':\n {\n this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this;\n }\n\n break;\n }\n\n case 'missing-glyph':\n this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n\n if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n this.glyphs[glyph.unicode] = {};\n }\n\n this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n }\n }\n }\n\n render() {// NO RENDER\n }\n\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font-face';\n this.ascent = this.getAttribute('ascent').getNumber();\n this.descent = this.getAttribute('descent').getNumber();\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n\n}\n\nclass TRefElement extends TextElement {\n constructor() {\n super(...arguments);\n this.type = 'tref';\n }\n\n getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n\n}\n\nclass AElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'a';\n var {\n childNodes\n } = node;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n\n getText() {\n return this.text;\n }\n\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n var {\n document,\n x,\n y\n } = this;\n var {\n mouse\n } = document.screen;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n\n onClick() {\n var {\n window\n } = this.document;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n\n onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([['', 0]]);\n var pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n\n getText() {\n return this.text;\n }\n\n path(ctx) {\n var {\n dataArray\n } = this;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(_ref => {\n var {\n type,\n points\n } = _ref;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var {\n glyphInfo\n } = this;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach((glyph, i) => {\n var {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n\n getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0,\n p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n\n measureText(ctx, text) {\n var {\n measuresCache\n } = this;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n\n setTextData(ctx) {\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n var dy = this.parent.getAttribute('dy').getPixels('y');\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n\n parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var {\n pathParser\n } = path;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var {\n current\n } = pathParser;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n\n pathM(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n\n pathL(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathH(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathV(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathC(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathS(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n\n pathQ(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathT(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n\n pathA(pathParser) {\n var {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser);\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n\n calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n }\n\n return 0;\n }\n\n getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (p2x === p1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n\n getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var {\n dataArray\n } = this;\n\n for (var command of dataArray) {\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n {\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n\n return null;\n }\n\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n }\n\n return this.pathLength;\n }\n\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n\n getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n var href = this.getHrefAttribute().getString();\n\n if (!href) {\n return;\n }\n\n var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n\n this.isSvg = isSvg;\n }\n\n loadImage(href) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var image = yield _this.document.createImage(href);\n _this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n loadSvg(href) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var match = dataUriRegex.exec(href);\n\n if (match) {\n var data = match[5];\n\n if (match[4] === 'base64') {\n _this2.image = atob(data);\n } else {\n _this2.image = decodeURIComponent(data);\n }\n } else {\n try {\n var response = yield _this2.document.fetch(href);\n var svg = yield response.text();\n _this2.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n\n _this2.loaded = true;\n })();\n }\n\n renderChildren(ctx) {\n var {\n document,\n image,\n loaded\n } = this;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n ctx.translate(x, y);\n\n if (this.isSvg) {\n var subDocument = document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n subDocument.document.documentElement.parent = this;\n void subDocument.render();\n } else {\n var _image = this.image;\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: _image.width,\n height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n\n getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n}\n\nclass SymbolElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'symbol';\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass SVGFontLoader {\n constructor(document) {\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n load(fontFamily, url) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var {\n document\n } = _this;\n var svgDocument = yield document.canvg.parser.load(url);\n var fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(fontNode => {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(_ => {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(_ => {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(cssProp => {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(src => {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'use';\n }\n\n setContext(ctx) {\n super.setContext(ctx);\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n\n path(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n element.path(ctx);\n }\n }\n\n renderChildren(ctx) {\n var {\n document,\n element\n } = this;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n\n getBoundingBox(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n\n elementTransform() {\n var {\n document,\n element\n } = this;\n return Transform.fromElement(document, element);\n }\n\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n\n return this.cachedElement;\n }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n var matrix = toNumbers(this.getAttribute('values').getString());\n\n switch (this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n /* eslint-disable array-element-newline */\n\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n /* eslint-disable array-element-newline */\n\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n var {\n includeOpacity,\n matrix\n } = this;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n\n}\n\nclass MaskElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'mask';\n }\n\n apply(ctx, element) {\n var {\n document\n } = this; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'clipPath';\n }\n\n apply(ctx) {\n var {\n document\n } = this;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var {\n beginPath,\n closePath\n } = ctx;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(child => {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle \n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass FilterElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'filter';\n }\n\n apply(ctx, element) {\n // render as temp svg\n var {\n document,\n children\n } = this;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n children.forEach(child => {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n children.forEach(child => {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeMorphologyElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feMorphology';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeCompositeElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feComposite';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n\n apply(ctx, x, y, width, height) {\n var {\n document,\n blurRadius\n } = this;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n\n}\n\nclass TitleElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'title';\n }\n\n}\n\nclass DescElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'desc';\n }\n\n}\n\nvar elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator(function* (src) {\n var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error);\n };\n\n image.src = src;\n });\n });\n return _createImage.apply(this, arguments);\n}\n\nclass Document {\n constructor(canvg) {\n var {\n rootEmSize = 12,\n emSize = 12,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.canvg = canvg;\n this.definitions = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n }\n\n return createImage;\n }\n\n get window() {\n return this.screen.window;\n }\n\n get fetch() {\n return this.screen.fetch;\n }\n\n get ctx() {\n return this.screen.ctx;\n }\n\n get emSize() {\n var {\n emSizeStack\n } = this;\n return emSizeStack[emSizeStack.length - 1];\n }\n\n set emSize(value) {\n var {\n emSizeStack\n } = this;\n emSizeStack.push(value);\n }\n\n popEmSize() {\n var {\n emSizeStack\n } = this;\n emSizeStack.pop();\n }\n\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded);\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded);\n }\n\n createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n\n createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n\n createTextNode(node) {\n return new TextNode(this, node);\n }\n\n setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n constructor(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static from(ctx, svg) {\n var _arguments = arguments;\n return _asyncToGenerator(function* () {\n var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = yield parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n })();\n }\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n * @returns Ready promise.\r\n */\n\n\n ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n * @returns Is ready or not.\r\n */\n\n\n isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n\n render() {\n var _arguments2 = arguments,\n _this = this;\n\n return _asyncToGenerator(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n _this.start(_objectSpread({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n\n yield _this.ready();\n\n _this.stop();\n })();\n }\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n\n start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n documentElement,\n screen,\n options: baseOptions\n } = this;\n screen.start(documentElement, _objectSpread(_objectSpread({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n\n stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n"],"names":["optional","f","required","Error","x","Array","shuffle","array","t","i","m","Math","constantZero","count","node","sum","children","hierarchy","data","Map","undefined","mapChildren","objectChildren","child","childs","n","root","Node","nodes","computeHeight","d","copyData","height","callback","that","index","next","value","compare","end","start","ancestor","leastCommonAncestor","a","b","aNodes","bNodes","c","k","leaves","links","Symbol","current","defaultSeparation","meanXReduce","maxYReduce","y","separation","dx","dy","nodeSize","cluster","previousNode","left","leafLeft","right","leafRight","x0","x1","arguments","preroot","ambiguous","defaultId","defaultParentId","id","parentId","stratify","parent","nodeId","nodeKey","nodeByKey","nextLeft","v","nextRight","TreeNode","Object","tree","treeRoot","firstWalk","secondWalk","sizeNode","bottom","s","tx","kx","ky","siblings","w","executeShifts","shift","change","midpoint","apportion","vim","vip","vop","vom","sip","sop","sim","som","moveSubtree","wm","wp","y0","y1","sums","partition","j","valueOffset","valueTarget","hi","mid","valueLeft","valueRight","xk","yk","slice","dice","custom","ratio","resquarify","rows","row","squarify","circles","p","e","B","enclosesWeak","encloseBasis","encloseBasis1","encloseBasis2","encloseBasis3","extendBasis","enclosesWeakAll","enclosesNot","dr","r1","x2","y2","r2","x21","y21","r21","l","x3","y3","r3","a2","a3","b2","b3","c2","c3","d1","d2","d3","ab","xa","xb","ya","yb","A","C","r","defaultRadius","radius","padding","pack","radiusLeaf","packChildren","translateChild","place","intersects","score","circle","packEnclose","aa","ca","sj","sk","round","positionNode","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","phi","squarifyRatio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","i0","i1","lightbox","BaseRenderer","eventBus","renderPriority","self","evt","context","type","element","visuals","attrs","bo","shape","connection","isExpanded","di","DEFAULT_LABEL_SIZE","getLabel","semantic","categoryValueRef","attr","componentsToPath","elements","lineTo","point","getPointAtLength","length","deltaX","deltaY","percent","vectorLength","createLine","points","line","String","updateLine","gfx","cornerRadius","parseInt","waypoints","p1","p2","p3","pointCount","path","pointBefore","pointAfter","effectiveRadius","beforePoint","beforePoint2","afterPoint","afterPoint2","black","isTypedEvent","event","eventDefinitionType","definition","getFillColor","defaultColor","overrideColor","getStrokeColor","getLabelColor","defaultStrokeColor","label","getBounds","bounds","overrides","getWidth","getHeight","angle","amount","translate","rotate","scale","rendererIds","BpmnRenderer","config","styles","pathMap","canvas","textRenderer","priority","defaultFillColor","defaultLabelColor","rendererId","markers","shapeStyle","lineStyle","addMarker","options","ref","marker","defs","colorEscape","str","fill","stroke","createMarker","drawCircle","parentGfx","width","offset","drawRect","rect","drawLine","drawConnectionSegments","drawPath","drawMarker","renderer","handlers","as","eventIconRenderers","isThrowing","pathData","linePathData","renderEventIcon","taskMarkerRenderers","renderTaskMarker","renderTaskMarkers","taskMarkers","loopCharacteristics","isSequential","renderLabel","text","renderEmbeddedLabel","align","box","renderLaneLabel","renderActivity","renderAssociation","pickAttrs","renderDataObject","dataObject","renderEvent","renderGateway","x_2","y_2","pointsString","polygon","renderLane","lane","renderSubProcess","activity","expanded","renderTask","renderIcon","cancelActivity","task","businessPath","businessHeaderPath","gateway","arrowPathData","diamond","instantiate","outer","midPoint","markerPathData","messageAttrs","message","messageRef","messageBounds","labelBounds","participant","expandedParticipant","name","source","sourceSemantic","textElement","innerAttrs","TASK_BORDER_RADIUS","renderExternalLabel","keys","pickedAttrs","key","handler","cx","cy","borderRadius","halfWidth","halfHeight","Text","parts","helperSvg","style","fitBox","lineHeight","getLineHeight","lines","layouted","maxWidth","helperText","document","layoutNext","fakeText","textBBox","originalLine","fitLine","getTextBBox","bbox","emptyLine","fit","remainder","shortenLine","shortenedLine","semanticShorten","maxLength","part","shortenedParts","last","totalHeight","idx","maxLineWidth","tspan","TextRenderer","defaultStyle","fontSize","externalStyle","textUtil","layoutedDimensions","tokenRegex","objNotationRegex","template","replacements","_","asTRBL","getMid","getConnectionMid","lastPoint","lastPart","startLength","midLength","totalLength","midSegment","segmentProgress","elementToString","elementData","notYetDrawn","refSemantic","property","BpmnImporter","elementFactory","elementRegistry","parentElement","parentIndex","hidden","collapsed","isFrame","isFrameElement","isPointInsideBBox","target","isLabelExternal","boundarySemantic","boundaryElement","hostSemantic","host","attachers","size","getExternalLabelMid","first","second","position","getWaypointsMid","side","getOriginal","isButton","button","isPrimaryButton","allowAll","allowPrimaryAndAuxiliary","InteractionEvents","fire","isIgnored","localEventName","filter","ignoredFilters","mouseHandler","bindings","registerEvent","localEvent","ignoredFilter","unregisterEvent","svg","val","STROKE_HIT_STYLE","createHitStyle","CLICK_STROKE_HIT_STYLE","HIT_TYPES","classNames","applyStyle","hit","appendHit","hits","boxType","eventName","targetElement","getBBox","stopRecursion","minX","minY","maxX","maxY","getType","Outline","OUTLINE_STYLE","createOutline","outline","updated","providers","provider","Selection","selectedElements","oldSelection","add","rootElement","MARKER_HOVER","MARKER_SELECTED","SelectionVisuals","selection","cls","removeMarker","newSelection","layer","enabled","container","bBox","addSelectionOutlinePadding","SELECTION_OUTLINE_PADDING","SelectionBehavior","canExecute","autoSelect","hints","isShown","previousSelection","selectedShape","originalEvent","isSelected","isMultiSelect","hasPrimaryModifier","navigator","IdGenerator","prefix","ids","Overlays","createRoot","parentNode","search","overlay","overlays","setVisible","html","setPosition","htmlContainer","top","viewbox","matrix","setTransform","raw","overlayContainer","elementRoot","show","minZoom","maxZoom","activeRootElement","visible","minScale","maxScale","shouldScale","transform","o","el","ChangeSupport","graphicsFactory","CommandInterceptor","createHook","hook","events","handlerFn","unwrap","RootElementsBehavior","injector","fn","fullEvent","HTML_ESCAPE_MAP","getPlaneIdFromShape","addPlaneSuffix","DrilldownBreadcrumbs","breadcrumbs","containerClasses","businessObjectParents","updateBreadcrumbs","getBusinessObjectParentChain","businessObject","parents","title","match","link","parentPlane","DrilldownCentering","currentRoot","positionMap","newRoot","currentViewbox","storedViewbox","found","SubprocessCompatibility","moddle","definitions","diagram","newDiagrams","createdDiagrams","plane","collapsedElements","elementsToMove","diElement","shouldMoveToPlane","types","planeBounds","getPlaneBounds","trbl","planeTrbl","Infinity","waypoint","newPlane","parentPlaneElement","containingDiagram","findRootDiagram","DrilldownOverlayBehavior","oldParent","newParent","hasFlowElements","existingOverlays","DefaultRenderer","connectionPath","number","resolution","ensurePx","createGroup","childIndex","group","REQUIRED_MODEL_ATTRS","Canvas","setCTM","mstr","createContainer","viewport","allElements","findRoot","layerName","requiredAttrs","collection","currentIdx","secondary","changeFn","innerBox","activeLayer","outerBox","delta","defaultPadding","elementBounds","elementTrbl","viewboxBounds","zoom","viewboxTrbl","dRight","dLeft","dBottom","dTop","newScale","center","newViewbox","vbox","inner","originalPoint","currentMatrix","scaleMatrix","newMatrix","currentScale","centerPoint","ELEMENT_ID","ElementRegistry","secondaryGfx","newId","filtered","map","parentRefs","labelRefs","attacherRefs","outgoingRefs","incomingRefs","ElementImpl","newLabel","labels","ShapeImpl","RootImpl","LabelImpl","ConnectionImpl","ElementFactory","create","Type","FN_REF","EventBus","InternalEvent","actualCallback","wrappedCallback","result","args","firstListener","returnValue","originalType","error","listener","invokeFunction","console","newListener","previousListener","nextListener","listenerCallback","GraphicsFactory","prependTo","newNode","siblingNode","childrenGfx","visual","outerGfx","childGfx","defaultTraits","className","traits","additionalAttrs","defaultStyles","Diagram","modules","Base","Factory","model","properties","descriptor","props","prototype","ModdleElement","BUILTINS","TYPE_CONVERTERS","parseFloat","coerceType","converter","isBuiltIn","isSimple","parseName","defaultPrefix","localName","DescriptorBuilder","nameNs","Registry","packages","ensureAvailable","packageMap","pkg","identifierKey","Properties","validate","oldProperty","newProperty","replace","oldNameNs","propertiesByName","rename","targetPropertyName","nsPrefix","attrName","redefinedProperty","ns","propsByName","typeDescriptor","_extends","propertyName","definedProperty","inherited","typesByName","typeName","replaces","redefines","uriOrPrefix","pkgMap","propertyNs","extendsName","extendsNameNs","extended","nsName","iterator","trait","traverse","parentNs","traverseTrait","builder","TypeError","stripGlobal","defineProperty","strict","Moddle","cache","nsUri","hasLowerCaseAlias","DEFAULT_NS_MAP","XSI_TYPE","serializeFormat","serializeAsType","aliasToName","aliasNs","getModdleDescriptor","Context","reference","elementsById","idProperty","warning","BaseHandler","NoopHandler","BodyHandler","ReferenceHandler","ValueHandler","propertyDesc","BaseElementHandler","ElementHandler","RootElementHandler","GenericElementHandler","Reader","parser","bodyProperty","propNameNs","attributes","instance","values","prop","typePrefix","elementTypeName","elementType","childHandler","newElement","uri","xml","done","rootHandler","lax","stack","createStack","handleError","err","getContext","ctx","column","handleWarning","PREAMBLE_START_PATTERN","ENCODING_PATTERN","UTF_8_PATTERN","handleCData","uriMap","obj","decodeStr","selfClosing","decodedAttrs","handleOpen","question","encoding","decodeEntities","handleText","Promise","resolve","reject","resolveReferences","references","warnings","ESCAPE_ATTR_CHARS","ESCAPE_CHARS","Namespaces","prefixMap","used","wellknown","isWellknown","allNs","inherits","ctor","superCtor","ESCAPE_ATTR_MAP","ESCAPE_MAP","charPattern","replaceMap","ReferenceSerializer","tagName","BodySerializer","ValueSerializer","ElementSerializer","propertyDescriptor","TypeSerializer","SavingWriter","FormatingWriter","out","format","indent","Writer","writer","internalWriter","formatingWriter","BpmnModdle","otherAttrs","elementDescriptor","isGeneric","nameToAlias","string","effectiveNs","body","actualNs","genericAttrs","nonNsAttr","isReference","asType","asProperty","serializer","local","parentNamespaces","namespaces","newPrefix","wellknownUri","nsTagName","getNsAttrs","firstBody","typeNs","xmlStr","reader","simple","additionalPackages","BpmnTreeWalker","handledElements","deferred","diMap","contextual","handled","visitIfDi","visit","logError","registerDi","bpmnElement","handlePlaneElement","planeElement","diagrams","handlePlane","handleProcess","handleCollaboration","collaboration","handleParticipant","handleArtifacts","messageFlows","handleMessageFlow","handleUnhandledProcesses","rootElements","processes","handleDeferred","process","handleFlowElementsContainer","handleIoSpecification","messageFlow","handleDataAssociation","association","handleDataInput","dataInput","handleDataOutput","dataOutput","handleArtifact","artifact","artifacts","ioSpecification","handleSubProcess","subProcess","handleFlowNode","flowNode","childCtx","handleDataElement","handleLane","newContext","handleLaneSet","wireFlowNodeRefs","lanes","laneSet","handleFlowElements","flowElements","laneSets","newCtx","BPMNIO_IMG","LOGO_STYLES","LINK_STYLES","LIGHTBOX_STYLES","BACKDROP_STYLES","NOTICE_STYLES","LIGHTBOX_MARKUP","BaseViewer","DEFAULT_OPTIONS","addProjectLogo","linkElement","addWarningsToError","warningsAry","bpmnDiagram","aggregatedWarnings","parseResult","parseWarnings","importResult","checkValidationError","pattern","bpmnDiagramOrId","importer","findBPMNDiagram","diagramId","render","walker","parentShape","diagramsToImport","getDiagramsToImport","findRootProcess","allChildren","selfAndAllFlowElements","rootId","contentNode","defsNode","contents","baseModules","diagramModules","diagramOptions","ensureUnit","Viewer","pathId","param","mx","my","rawPath","coordinates","heightRatio","widthRatio","heightIndex","widthIndex","all","res","quote","quotedName","isFunc","devicePixelRatio","window","screen","utils","inputs","input","font","items","ilen","prev","min","max","a0","a1","updates","orient","origin","ln","region","compute$1","range","anchor","segment","clipped","area","r0","aligned","vx","vy","positioners","rx","ry","sx","sy","rasterize","Label","me","display","color","getScaleOrigin","pixel","borderWidth","th","tw","ty","rects","chart","drawFrame","bgColor","borderColor","drawRoundedRect","h","HALF_PI","drawText","filled","strokeColor","strokeWidth","stroked","drawTextLine","cfg","shadow","MIN_INTEGER","Number","MAX_INTEGER","rotated","cos","sin","projected","axis","pt","dp","toAxis","p0","HitBox","geometry","rotation","vs","margin","other","pr0","pr1","axes","layout","datasets","jlen","sa","sb","state","dirty","compute","proxy","Proxy","collide","collider","s0","s1","h0","h1","EXPANDO_KEY","DEFAULT_KEY","dispatchEvent","listeners","callback$1","groups","klen","expando","dataset","override","configs","datasetIndex","handleMoveEvents","previous","dispatchMoveEvents","enter","leave","update","actives","parseText","parseFont","defaults","toFontString","textSize","drawDoughnutLabel","innerLabels","textAreaSize","hypotenuse","fitRatio","innerDiameter","innerLabel","centerX","topY","centerY","currentHeight","lineCenterY","DoughnutLabel","linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","polyIn","polyOut","polyInOut","pi","halfPi","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b1","b4","b5","b6","b7","b8","b9","b0","bounceIn","bounceOut","bounceInOut","backIn","backOut","backInOut","tau","elasticIn","elasticOut","elasticInOut","global","factory","exports","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_arr","_n","_d","_e","_s","_i","_nonIterableRest","sort","u","isFinite","X","Float64Array","Y","xv","yv","ux","uy","visitPoints","cb","iterations","determination","uY","predict","SSE","SST","sse","sst","interpose","xmin","xmax","precision","px","iter","find","mp","ols","uX","uXY","uX2","slope","domain","XY","X2","_ols2","intercept","quad","quadratic","_points2","X3","X4","X2Y","n0","X2X2","exponential","YL","XYL","ly","xy","bandwidth","loess","bw","yhat","residuals","robustWeights","interval","edge","W","denom","tricube","xkw","updateInterval","medianResidual","median","arg","_w","output","cnt","base","logarithmic","lb","lx","order","polynomial","_o","lhs","rhs","coef","gaussianElimination","uncenter","z","power","YS","taskHead","taskTail","frame","timeout","clockLast","clockNow","clockSkew","clock","performance","Date","setFrame","setTimeout","now","clearNow","Timer","timer","delay","time","sleep","wake","timerFlush","nap","t0","t2","t1","poke","clearTimeout","clearInterval","setInterval","registerables","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","Chart","redraw","plugins","fallbackContent","canvasRef","chartRef","renderChart","cloneData","nextData","destroyChart","nextOptions","Doughnut","genericArray","nb","na","isNumberArray","ArrayBuffer","DataView","constructor","extend","Color","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color_formatHex","channels","hslConvert","color_formatRgb","rgbn","Rgb","rgba","hsla","NaN","g","opacity","rgb_formatHex","hex","clampi","clampa","isNaN","rgb_formatRgb","Hsl","clamph","clampt","hsl2rgb","m1","m2","basis","v0","v1","v2","v3","t3","nogamma","rgbGamma","rgb","rgbSpline","spline","colors","reA","reB","am","bm","bs","bi","q","numberArray","DOMParserFallback","preset","OffscreenCanvas","url","response","fetch","blob","createImageBitmap","DOMParser","Reflect","_ref","compressSpaces","trimLeft","trimRight","toNumbers","matches","allUppercase","normalizeAttributeName","parseExternalUrl","urlMatch","normalizeColor","rgbParts","num","isFloat","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","PSEUDO_ZERO","vectorMagnitude","vectorsRatio","vectorsAngle","CB1","CB2","CB3","CB4","QB1","QB2","QB3","Property","separator","zeroIsValue","regexp","asString","def","axisOrIsFontSize","processPercent","isFontSize","viewPort","patternTransform","len","commas","ViewPort","viewPorts","Point","defaultValue","pathPoints","xp","yp","Mouse","onClick","onMouseMove","eventElements","run","_ref2","boundingBox","_ref3","eventTarget","defaultWindow","defaultFetch$1","Screen","checker","isReadyLock","aspectRatio","desiredWidth","desiredHeight","refX","refY","clip","clipX","clipY","aspectRatioAlign","aspectRatioMeetOrSlice","cleanAspectRatio","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","scaledClipX","scaledClipY","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreMouse","ignoreAnimation","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","FRAMERATE","mouse","frameDuration","then","tick","shouldUpdate","animation","CLIENT_WIDTH","CLIENT_HEIGHT","isFirstRender","widthStyle","heightStyle","cWidth","cHeight","viewBox","xRatio","yRatio","_widthStyle","_heightStyle","transformStyle","defaultFetch","DefaultDOMParser","Parser","resource","_this","parserError","_this2","Translate","Rotate","transformOrigin","numbers","originX","originY","rad","Scale","scaleSize","Matrix","det","Skew","skew","SkewX","SkewY","Transform","parseTransform","TransformType","transformOriginXProperty","transformOriginYProperty","transforms","Element","captureTextNodes","attribute","nodeName","childNode","textNode","createIfNotExists","_attr","skipAncestors","parentStyle","_style","mask","clipPathStyleProp","_node$getAttribute","styleClasses","styleClass","stylesSpecificity","existingSpecificity","ignoreStyles","toRestore","styleProp","_this$parent","UnknownElement","wrapFontFamily","fontFamily","trimmed","Font","fontStyle","fontVariant","fontWeight","inherit","inheritFont","set","prepareFontStyle","targetFontStyle","prepareFontWeight","targetFontWeight","BoundingBox","forX","b2ac","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","cp1x","cp1y","PathParser","commands","command","xProp","yProp","previousCommand","ox","oy","from","priorTo","angles","RenderedElement","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","fillStyle","_fillStyle","_fillStyle2","strokeStyle","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","PathElement","pathParser","fillRuleStyleProp","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","_marker","_point","_angle","_marker2","_point2","_angle2","controlPoint","currentPoint","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","cpp","centp","ad","dir","ah","halfWay","Boolean","GlyphElement","TextElement","textBaseline","childBoundingBox","inheritFontSize","char","glyph","prevChar","nextChar","arabicForm","maybeGlyph","childNodes","lastIndex","renderText","customFont","unitsPerEm","ctxFont","lw","firstElement","textAnchor","textParent","xAttr","yAttr","dxAttr","dyAttr","isRTL","measureCache","measure","targetText","_measure","parentAttr","TSpanElement","TextNode","SVGElement","_this$node$parentNode","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","KAPPA","CircleElement","EllipseElement","LineElement","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","MarkerElement","markerUnits","markerSvg","DefsElement","GElement","GradientElement","stops","stopsContainer","gradient","stop","MAX_VIRTUAL_PIXELS","rootView","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","RadialGradientElement","fx","fy","fr","StopElement","stopOpacity","stopColor","AnimateElement","valuesAttr","attributeType","attributeName","initialUnits","progress","to","newValue","typeAttr","ub","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","MissingGlyphElement","TRefElement","firstChild","AElement","hasText","ownKeys$2","object","enumerableOnly","symbols","sym","_objectSpread$2","TextPathElement","pathElement","dataArray","theta","dTheta","psi","fs","textDecoration","glyphInfo","partialText","textFullWidth","fullPathWidth","spacesNumber","inputOffset","charI","glyphWidth","splineStep","dyX","dyY","measuresCache","chars","thisSpacing","parentSpacing","letterSpacing","letterSpacingCache","textLen","dxSum","acc","cur","textWidth","startOffset","nextOffset","pathCommands","startX","startY","nextCommandType","commandType","inc","dist","fromX","fromY","rise","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","step","targetDistance","dataUriRegex","ImageElement","href","isSvg","image","atob","decodeURIComponent","loaded","subDocument","_image","SymbolElement","SVGFontLoader","fonts","svgDocument","fontNode","StyleElement","cssDefs","css","cssParts","cssClasses","cssProps","cssClass","cssProp","srcs","src","UseElement","tempSvg","imGet","img","_height","imSet","mi","m3","FeColorMatrixElement","_x","_y","includeOpacity","srcData","nr","ng","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","noop","ClipPathElement","contextProto","beginPath","closePath","FilterElement","py","efd","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","TitleElement","DescElement","ownKeys$1","_createImage","anonymousCrossOrigin","_event","_source","_lineno","_colno","Document","canvg","rootEmSize","emSize","createCanvas","createImage","forceAnonymousCrossOrigin","emSizeStack","documentElement","ElementType","_objectSpread$1","ownKeys","_objectSpread","Canvg","_arguments","_arguments2","baseOptions","animator","Animator","anims","date","callbacks","numSteps","remaining","item","draw","charts","transparent","interpolators","factor","c0","c1","Animation","currentValue","elapsed","remain","duration","loop","promises","rej","resolved","method","animationOptions","Animations","animatedProps","option","newOptions","resolveTargetOptions","animations","awaitAll","running","anim","scaleClip","allowedOverflow","opts","reverse","getSortedDatasetIndices","filterVisible","metasets","applyStack","dsIndex","otherValue","singleMode","isStacked","meta","stacked","getLastIndexInStack","vScale","positive","updateStacks","controller","parsed","indexScale","valueScale","stacks","iScale","iAxis","vAxis","itemStacks","getOrCreateStack","stackKey","indexValue","subStack","getFirstScaleId","scales","clearStacks","isDirectUpdateMode","mode","cloneIfNotShared","cached","shared","canStack","DatasetController","chooseId","xid","yid","rid","indexAxis","iid","vid","scaleID","_data","convertObjectDataToArray","adata","resetNewElements","stackChanged","oldStacked","scopeKeys","scopes","_stacked","sorted","isNotInOrderComparedToPrev","singleScale","xScale","yScale","xAxisKey","yAxisKey","parsedValue","_parsed","otherScale","otherMin","otherMax","getUserBounds","minDefined","maxDefined","_skip","defaultClip","active","drawActiveElementsOnTop","cacheKey","sharing","prefixes","names","transition","sharedOptions","firstOpts","previouslySharedOptions","includeOptions","arg1","arg2","numMeta","numData","move","removed","newCount","parseValue","entry","parseFloatBar","startValue","endValue","barStart","barEnd","parseArrayOrPrimitive","isFloatBar","parseEdge","startEnd","swap","orig","BarController","iAxisKey","vAxisKey","bars","reset","horizontal","ruler","vpixels","ipixels","setBorderSkipped","setInflateAmount","inflateAmount","dataIndex","skipNull","pixels","barThickness","computeMinSampleSize","curr","getAllScaleValues","visibleMetas","updateMinAndPrev","head","baseValue","minBarLength","actualBase","floating","barSign","startPixel","endPixel","halfGrid","maxBarThickness","stackCount","computeFlexCategoryTraits","computeFitCategoryTraits","thickness","stackIndex","BubbleController","iPixel","vPixel","DoughnutController","getter","circumference","chartArea","arcs","spacing","maxSize","cutout","chartWeight","ratioX","ratioY","getRatioAndOffset","endAngle","startAngle","endX","endY","calcMax","calcMin","maxRadius","outerRadius","innerRadius","radiusLength","animationOpts","animateScale","arc","metaData","total","ringWeightOffset","pointStyle","legendItem","legend","tooltipItem","dataLabel","LineController","_dataset","animationsDisabled","spanGaps","maxGapLength","directUpdate","prevParsed","nullData","border","firstPoint","PolarAreaController","minSize","datasetStartAngle","defaultAngle","PieController","RadarController","pointPosition","useFinalPosition","final","ret","formatters","tickValue","ticks","notation","locale","maxTick","calculateDelta","numDecimal","_ctx","Ticks","skip","newTicks","majorStart","majorEnd","reverseAlign","offsetFromEdge","sample","numItems","increment","getTickMarkLength","getTitleHeight","fallback","_userMin","_userMax","_suggestedMin","_suggestedMax","metas","maxHeight","margins","beginAtZero","grace","tickOpts","sampleSize","samplingEnabled","autoSkip","ticksLimit","determineMaxTicks","tickLength","majorIndices","getMajorIndices","numMajorIndices","skipMajors","calculateSpacing","evenMajorSpacing","getEvenSpacing","diff","factors","avgMajorSpacing","reversePixels","tickWidth","maxLabelDiagonal","numTicks","minRotation","maxRotation","labelRotation","labelSizes","maxLabelWidth","maxLabelHeight","titleOpts","gridOpts","isHorizontal","titleHeight","widest","highest","tickPadding","angleRadians","labelHeight","labelWidth","isRotated","labelsBelowTicks","offsetLeft","offsetRight","caches","tickFont","fontString","nestedLabel","widths","heights","widestLabelSize","highestLabelSize","gc","gcLen","valueAt","decimal","optionTicks","rot","borderValue","lineValue","alignedLineValue","tx1","ty1","tx2","ty2","grid","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","limit","optsAtIndex","lineWidth","lineColor","borderDash","borderDashOffset","tickColor","tickBorderDash","tickBorderDashOffset","getPixelForGridLine","offsetGridLines","validIndex","textAlign","lineCount","textOffset","crossAlign","mirror","tickAndPadding","hTickAndPadding","backdrop","halfCount","tickTextAlign","labelPadding","backgroundColor","lastLineWidth","titleX","titleY","titleArgs","tz","gz","axisID","TypedRegistry","scope","parentScope","proto","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","routes","propertyParts","sourceName","sourceScope","targetName","targetScope","registry","typedRegistry","reg","itemReg","component","camelMethod","ScatterController","showLine","controllers","abstract","DateAdapter","chartOptions","timestamp","unit","weekday","members","evaluateInteractionItems","intersect","lo","binarySearch","metaset","_sorted","lookupMethod","getIntersectItems","includeInvisible","getNearestItems","getNearestCartesianItems","distanceMetric","getDistanceMetricForAxis","useX","useY","pt1","pt2","minDistance","inRange","getAxisItems","rangeMethod","intersectsItem","Interaction","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","fitBoxes","boxes","params","refit","changed","refitBoxes","getMargins","marginForPositions","positions","pos","same","updateDims","newWidth","newHeight","widthChanged","heightChanged","setBoxDims","placeBoxes","userPadding","weight","layouts","layoutItem","minPadding","availableWidth","availableHeight","buildLayoutBoxes","layoutBoxes","wrapBoxes","stackWeight","fullSize","wrap","centerHorizontal","centerVertical","verticalBoxes","horizontalBoxes","setLayoutDims","buildStacks","_stack","vBoxMaxWidth","hBoxMaxHeight","handleMaxPadding","updatePos","BasePlatform","BasicPlatform","EVENT_TYPES","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","resize","createResizeObserver","ResizeObserver","releaseObserver","createProxyAndListen","fromNativeEvent","addListener","DomPlatform","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","initial","proxies","PluginService","descriptors","plugin","allPlugins","localIds","createDescriptors","pluginOpts","previousDescriptors","getIndexAxis","datasetDefaults","datasetOptions","determineAxis","scaleOptions","initOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultScaleOptions","defaultID","initData","keyCache","keysCached","Set","cachedKeys","generate","addIfFound","Config","datasetType","mainScope","resetCache","_scopeCache","keyLists","resolver","subPrefixes","getResolver","needContext","isScriptable","isIndexable","scriptable","indexable","hasFunction","subResolver","descriptorDefaults","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onAnimationProgress","getCanvas","instances","getChart","userConfig","initialCanvas","existingChart","maintainAspectRatio","_aspectRatio","newSize","scalesOptions","axisOptions","scaleOpts","isRadial","scaleType","hasUpdated","newControllers","ControllerClass","datasetElementType","dataElementType","animsDisabled","_active","_lastEvent","existingEvents","newEvents","_hiddenIndices","moveNumericKeys","intKey","_dataChanges","datasetCount","makeSet","changeSet","noArea","layers","useClip","platform","_add","detached","_remove","attached","activeElements","lastActive","replay","hoverOptions","deactivated","activated","eventFilter","inChartArea","lastEvent","isClick","invalidatePlugins","clipArc","pixelMargin","angleMargin","enumerable","rThetaToXY","pathArc","circular","innerR","spacingOffset","noSpacingOuterRadius","avNogSpacingRadius","noSpacingInnerRadius","angleOffset","outerStart","outerEnd","innerStart","innerEnd","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","ArcElement","chartX","chartY","rAdjust","betweenAngles","_circumference","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","fullCircles","drawBorder","borderJoinStyle","drawFullCircleBorders","setStyle","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","usePath2D","Path2D","segments","_interpolate","interpolated","segmentMethod","strokePathDirect","inRange$1","PointElement","mouseX","mouseY","getBarBounds","bar","half","skipOrLimit","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","boundingRects","parseBorderWidth","maxW","maxH","parseBorderRadius","enableBorderRadius","maxR","enableBorder","addRectPath","hasRadius","cleanDecimatedDataset","cleanDecimatedData","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_loop","_pointsFromSegments","linePoints","_shouldApplyFill","simpleArc","_drawfill","_getTarget","getLineByIndex","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","below","addPointsBelow","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","computeBoundary","computeCircularBoundary","computeLinearBoundary","lineOpts","fillOption","above","doFill","clipVertical","lineLoop","tgt","_segments","tpoints","subBounds","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","getBoxSize","labelOpts","boxHeight","boxWidth","itemsEqual","Legend","legendItems","labelFont","itemHeight","hitboxes","lineWidths","itemWidth","columnSizes","heightLimit","totalWidth","currentColWidth","currentColHeight","col","rtl","rtlHelper","hitbox","cursor","fontColor","halfFontSize","drawLegendBox","drawOptions","yBoxTop","xBoxLeft","fillText","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","isListened","hoveredItem","sameItem","Title","fontOpts","WeakMap","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","widthPadding","determineAlignment","yAlign","determineYAlign","determineXAlign","chartWidth","xAlign","doesNotFitWithAlign","caret","getBackgroundPoint","alignment","caretSize","caretPadding","paddingAndSize","topLeft","topRight","bottomLeft","bottomRight","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeFooter","afterFooter","labelColors","labelPointStyles","labelTextColors","createTooltipItem","positionAndSize","backgroundPoint","tooltipPoint","caretPosition","ptX","ptY","titleSpacing","labelPointStyle","colorX","rtlColorX","yOffSet","colorY","outerX","innerX","textColor","bodySpacing","bodyAlign","displayColors","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","tooltipSize","animX","animY","hasTooltipContent","positionChanged","caretX","caretY","plugin_tooltip","_args","labelCount","decimated","xAxis","getStartAndCountOfVisiblePointsSimplified","lttbDecimation","maxAreaPoint","maxArea","nextA","samples","bucketWidth","sampledIndex","endIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","xMax","intermediateIndex1","intermediateIndex2","sources","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_resolveTarget","propagate","visited","ci","usePointStyle","createTitle","titleBlock","addIfString","addedLabels","CategoryScale","added","findOrAddLabel","relativeLabelSize","minSpacing","LinearScaleBase","setMin","setMax","minSign","maxSign","maxTicks","maxTicksLimit","stepSize","numericGeneratorOptions","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","decimalPlaces","LinearScale","isMajor","tickVal","LogarithmicScale","exp","generateTicks","endExp","endSignificand","significand","lastTick","getTickBackdropHeight","determineLimits","pathRadiusLine","RadialLinearScale","fitWithPointLabels","limits","valueCount","pointLabelOpts","additionalAngle","plFont","hLimits","updateLimits","vLimits","buildPointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabels","pointLabel","distanceFromCenter","angleLines","drawPointLabels","backdropColor","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawRadiusLine","gridLineOpts","INTERVALS","UNITS","sorter","parse","adapter","isoWeekday","determineUnitForAutoTicks","minUnit","capacity","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","major","TimeScale","_applyBounds","timeOpts","determineUnitForFormatting","determineMajorUnit","minor","hasWeekday","formats","minorFormat","majorFormat","formatter","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","displayFormats","exampleLabel","interpolate","table","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","uid","isNullOrUndef","isArray","isObject","isNumberFinite","finiteOrDefault","valueOrDefault","toPercentage","dimension","toDimension","thisArg","each","loopable","_elementsEqual","clone$1","isValidKey","_merger","tval","sval","merge","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","_getKeyResolver","_splitKey","tmp","_capitalize","defined","isFunction","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","RAD_PER_DEG","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","roundedRange","niceRange","almostEquals","fraction","niceFraction","_factorize","sqrt","isNumber","epsilon","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","cmp","_lookupByKey","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","unlistenArrayEvents","stub","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","ticking","rest","debounce","_toLeftRightCenter","_alignStartEnd","_textX","_getStartAndCountOfVisiblePoints","_scaleRangesChanged","_scaleRanges","newRanges","atEdge","effects","lim","p2b","n2b","b2n","n2p","map$1","h2","eq","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb2hsl","calln","hue","names$1","RGB_RE","modHSL","clone","fromObject","hexParse","nameParse","unpack","ok","nk","unpacked","tkeys","rgbParse","hueParse","hslString","w2","w1","rgb1","rgb2","deg","index_esm","isPatternOrGradient","getHoverColor","getScope$1","Defaults","_descriptors","scopeObject","targetScopeObject","privateName","_measureText","longest","_longestText","arrayOfThings","thing","nestedThing","_alignPixel","clearCanvas","drawPoint","drawPointLegend","xOffset","yOffset","_isPointInArea","clipArea","unclipArea","_steppedLineTo","flip","_bezierCurveTo","setRenderOpts","decorateText","metrics","yDecoration","addRoundedRectPath","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","info","cacheable","_addGrace","minmax","keepZero","createContext","parentContext","_createResolver","rootScopes","getTarget","_resolve","_cached","_resolveWithPrefixes","readKey","needsSubResolver","createSubResolver","getKeysFromAllScopes","storage","_attachContext","subProxy","receiver","_resolveWithContext","_proxy","_context","_subProxy","_resolveScriptable","_resolveArray","_scriptable","_indexable","_allKeys","resolveFallback","getScope","parentScopes","allScopes","addScopesFromKey","subGetTarget","addScopes","parentFallback","resolveKeysFromAllScopes","_parseObjectDataRadialScale","EPSILON","getPoint","getValueAxis","capControlPoint","_updateBezierControlPoints","controlPoints","splineCurveMonotone","pointCurrent","valueAxis","pointsLen","deltaK","mK","slopeDelta","monotoneAdjust","alphaK","betaK","tauK","squaredMagnitude","monotoneCompute","splineCurve","middlePoint","d01","d12","s01","s12","fa","fb","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","getPositionedStyle","suffix","useOffsetPos","getRelativePosition","currentDevicePixelRatio","borderBox","paddings","borders","getCanvasPosition","touches","round1","getMaximumSize","bbWidth","bbHeight","containerSize","getContainerSize","containerStyle","containerBorder","containerPadding","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","getNumberFormat","JSON","Intl","getRtlAdapter","rectX","_itemWidth","overrideTextDirection","direction","original","restoreTextDirection","propertyFn","normalizeSegment","_boundSegment","prevValue","startBound","endBound","between","normalize","getSegment","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","sub","_computeSegments","segmentOptions","findStartAndEnd","splitByStyles","completeLoop","solidSegments","doSplitByStyles","chartContext","baseStyle","readStyle","prevStyle","addStyle","st","styleChanged"],"mappings":"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Y,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,YACN,KAAM,eACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,eACA,AACF,EACA,CACC,KAAM,UACN,WAAY,CACX,wBACA,kBACA,CACD,WAAY,CACX,CACC,KAAM,cACN,KAAM,cACN,OAAQ,EACT,EACA,CACC,KAAM,WACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,WACN,KAAM,UACP,EACA,CACC,KAAM,aACN,KAAM,YACP,EACA,CACC,KAAM,aACN,KAAM,WACN,OAAQ,EACT,EACA,CACC,KAAM,WACN,OAAQ,GACR,SAAU,iCACV,KAAM,SACP,EACA,CACC,KAAM,eACN,OAAQ,GACR,SAAU,qCACV,KAAM,aACP,EACA,CACC,KAAM,YACN,KAAM,WACN,OAAQ,EACT,EACA,CACC,KAAM,YACN,KAAM,eACN,OAAQ,EACT,EACA,CACC,KAAM,2BACN,KAAM,0BACN,OAAQ,EACT,EACA,CACC,KAAM,WACN,KAAM,UACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,+BACN,KAAM,gBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,eACN,OAAQ,GACR,KAAM,SACP,EACA,AACF,EACA,CACC,KAAM,UACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,QACN,KAAM,OACN,OAAQ,EACT,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,OACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,sBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,mBACN,KAAM,aACP,EACA,CACC,KAAM,cACN,KAAM,WACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,eACN,KAAM,UACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,aACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,OACA,AACF,EACA,CACC,KAAM,WACN,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,aACN,KAAM,YACN,OAAQ,EACT,EACA,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,iBACN,WAAY,CACX,YACA,AACF,EACA,CACC,KAAM,iBACN,WAAY,CACX,iBACA,AACF,EACA,CACC,KAAM,iBACN,WAAY,CACX,aACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,aACN,KAAM,YACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,UACN,WAAY,GACZ,WAAY,CACX,WACA,CACD,WAAY,CACX,CACC,KAAM,mBACN,KAAM,mBACN,QAAW,cACX,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,oBACN,WAAY,CACX,UACA,CACD,WAAY,CACX,CACC,KAAM,cACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,mBACN,KAAM,wBACN,OAAQ,GACR,QAAW,WACZ,EACA,AACF,EACA,CACC,KAAM,iBACN,WAAY,CACX,UACA,CACD,WAAY,CACX,CACC,KAAM,sBACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,UACN,KAAM,eACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,UACA,CACD,WAAY,CACX,CACC,KAAM,UACN,KAAM,eACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,UACA,CACD,WAAY,CACX,CACC,KAAM,UACN,KAAM,eACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,kBACN,WAAY,CACX,UACA,AACF,EACA,CACC,KAAM,cACN,WAAY,GACZ,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,eACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,YACN,KAAM,wBACN,OAAQ,EACT,EACA,CACC,KAAM,SACN,OAAQ,GACR,YAAa,GACb,KAAM,SACP,EACA,CACC,KAAM,SACN,OAAQ,GACR,YAAa,GACb,KAAM,SACP,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,GACZ,WAAY,CACX,CACC,KAAM,KACN,OAAQ,GACR,KAAM,SACN,KAAM,EACP,EACA,CACC,KAAM,gBACN,KAAM,gBACN,OAAQ,EACT,EACA,CACC,KAAM,uBACN,KAAM,sBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,oBACN,KAAM,mBACP,EACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,CACC,KAAM,iBACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,aACN,KAAM,sBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,sBACN,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,gCACN,KAAM,+BACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,+BACN,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,cACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,sBACN,KAAM,sBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,oBACN,WAAY,CACX,CACC,KAAM,WACN,OAAQ,GACR,YAAa,GACb,KAAM,SACP,EACA,CACC,KAAM,SACN,KAAM,UACN,OAAQ,EACT,EACA,CACC,KAAM,+BACN,KAAM,+BACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,gBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,KAAM,SACN,OAAQ,EACT,EACA,CACC,KAAM,aACN,QAAW,aACX,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,QACN,WAAY,GACZ,WAAY,CACX,WACA,kBACA,CACD,WAAY,CACX,CACC,KAAM,aACN,KAAM,WACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,yBACN,WAAY,CACX,aACA,AACF,EACA,CACC,KAAM,yBACN,WAAY,CACX,aACA,AACF,EACA,CACC,KAAM,WACN,WAAY,CACX,aACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,aACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,GACZ,WAAY,CACX,QACA,CACD,WAAY,CACX,CACC,KAAM,aACN,KAAM,YACN,OAAQ,EACT,EACA,CACC,KAAM,wBACN,KAAM,uBACN,OAAQ,EACT,EACA,CACC,KAAM,WACN,KAAM,UACP,EACA,CACC,KAAM,mBACN,KAAM,kBACN,OAAQ,EACT,EACA,CACC,KAAM,qBACN,KAAM,kBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,GACZ,WAAY,CACX,QACA,CACD,WAAY,CACX,CACC,KAAM,mBACN,OAAQ,GACR,KAAM,UACN,QAAW,EACZ,EACA,CACC,KAAM,cACN,KAAM,aACN,OAAQ,EACT,EACA,CACC,KAAM,yBACN,KAAM,wBACN,OAAQ,EACT,EACA,CACC,KAAM,YACN,KAAM,WACP,EACA,CACC,KAAM,mBACN,KAAM,kBACN,OAAQ,EACT,EACA,CACC,KAAM,qBACN,KAAM,kBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,gBACN,WAAY,CACX,aACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,gBACN,KAAM,WACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,kBACN,WAAY,GACZ,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,wBACN,WAAY,CACX,kBACA,AACF,EACA,CACC,KAAM,uBACN,WAAY,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,WACN,KAAM,QACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,2BACN,WAAY,CACX,kBACA,AACF,EACA,CACC,KAAM,4BACN,WAAY,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,gBACN,KAAM,aACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,CACC,KAAM,eACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,CACD,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,4BACN,WAAY,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,oBACN,OAAQ,GACR,KAAM,UACN,QAAW,EACZ,EACA,CACC,KAAM,cACN,KAAM,WACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,uBACN,WAAY,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,WACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,YACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,eACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,AACF,EACA,CACC,KAAM,sBACN,WAAY,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,SACN,KAAM,sBACN,YAAa,EACd,EACA,CACC,KAAM,SACN,KAAM,sBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,yBACN,WAAY,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,aACN,KAAM,UACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,eACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,6BACN,WAAY,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,YACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,AACF,EACA,CACC,KAAM,wBACN,WAAY,CACX,kBACA,CACD,WAAY,CACX,CACC,KAAM,YACN,KAAM,SACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,SACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,eACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,qBACN,WAAY,CACX,aACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,YACN,KAAM,WACP,EACA,AACF,EACA,CACC,KAAM,kBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,YACN,KAAM,mBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,YACN,KAAM,mBACN,YAAa,EACd,EACA,CACC,KAAM,iBACN,KAAM,mBACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,aACN,KAAM,aACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,mBACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,cACN,KAAM,WACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,uBACN,KAAM,WACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,6BACN,KAAM,WACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,mBACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,eACN,KAAM,YACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,wBACN,KAAM,YACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,8BACN,KAAM,YACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,WACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,gBACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,oBACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,0BACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,gBACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,KAAM,aACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,KAAM,WACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,qBACN,KAAM,aACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,2BACN,KAAM,aACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,WACN,WAAY,CACX,mBACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,uBACN,WAAY,CACX,kBACA,AACF,EACA,CACC,KAAM,wBACN,WAAY,CACX,kBACA,AACF,EACA,CACC,KAAM,2BACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,aACN,KAAM,YACN,OAAQ,EACT,EACA,CACC,KAAM,cACN,KAAM,aACN,OAAQ,EACT,EACA,CACC,KAAM,YACN,KAAM,WACN,OAAQ,EACT,EACA,CACC,KAAM,aACN,KAAM,YACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,cACA,mBACA,CACD,WAAY,CACX,CACC,KAAM,eACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,AACF,EACA,CACC,KAAM,qBACN,WAAY,CACX,CACC,KAAM,eACN,KAAM,WACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,gBACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,eACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,KACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,cACA,mBACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,WACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,cACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,AACF,EACA,CACC,KAAM,qBACN,WAAY,CACX,mBACA,cACA,CACD,WAAY,CACX,CACC,KAAM,eACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,sBACN,WAAY,CACX,mBACA,cACA,CACD,WAAY,CACX,CACC,KAAM,gBACN,KAAM,aACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,YACN,KAAM,kBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,YACN,KAAM,kBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,0BACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,2BACN,KAAM,mBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,2BACN,KAAM,mBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,mBACA,CACD,WAAY,CACX,CACC,KAAM,yBACN,KAAM,gBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,0BACN,KAAM,yBACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,eACN,WAAY,CACX,mBACA,AACF,EACA,CACC,KAAM,kBACN,WAAY,CACX,mBACA,CACD,WAAY,CACX,CACC,KAAM,oBACN,KAAM,mBACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,GACZ,WAAY,CACX,kBACA,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,iBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,kBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,kBACN,KAAM,iBACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,qBACN,WAAY,CACX,gBACA,AACF,EACA,CACC,KAAM,gBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,iBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,iBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,sBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,yCACN,KAAM,yCACN,OAAQ,EACT,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,OACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,QACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,eACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,YACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,iBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,yBACN,KAAM,sBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,cACA,CACD,WAAY,GACZ,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,aACA,CACD,WAAY,CACX,CACC,KAAM,WACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,qBACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,UACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,UACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,iBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,WACN,KAAM,WACN,OAAQ,EACT,EACA,CACC,KAAM,eACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,SACN,KAAM,SACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,GACZ,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,WACN,KAAM,UACP,EACA,CACC,KAAM,aACN,KAAM,YACP,EACA,CACC,KAAM,mBACN,KAAM,gBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,eACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,cACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,sBACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,YACN,KAAM,WACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,YACN,KAAM,WACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,wBACN,WAAY,GACZ,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,WACN,KAAM,UACN,OAAQ,EACT,EACA,CACC,KAAM,eACN,KAAM,cACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,kBACN,WAAY,GACZ,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,kBACN,KAAM,2BACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,wBACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,YACN,KAAM,qBACN,OAAQ,GACR,IAAK,CACJ,UAAW,UACZ,CACD,EACA,AACF,EACA,CACC,KAAM,WACN,WAAY,GACZ,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,WACN,KAAM,eACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,WACN,KAAM,eACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,QACN,KAAM,OACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,yCACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,cACN,KAAM,kBACP,EACA,CACC,KAAM,aACN,KAAM,UACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,6BACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,WACN,KAAM,kBACP,EACA,CACC,KAAM,yBACN,KAAM,sBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,WACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,qBACN,KAAM,oBACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,oBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,aACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,OACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,0BACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,oBACN,KAAM,iBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,6BACN,KAAM,6BACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,YACN,KAAM,kBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,YACN,KAAM,kBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,aACN,KAAM,UACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,yBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,sBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,sBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,kBACN,WAAY,GACZ,WAAY,CACX,CACC,KAAM,4BACN,KAAM,mBACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,4BACN,KAAM,mBACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,CACX,kBACA,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,0BACN,KAAM,yBACP,EACA,CACC,KAAM,eACN,KAAM,WACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,aACN,KAAM,UACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,yBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,sBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,sBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,0BACN,WAAY,CACX,CACC,KAAM,UACN,QAAW,EACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,UACN,QAAW,EACX,OAAQ,GACR,KAAM,SACP,EACA,CACD,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,gBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,WACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,eACN,KAAM,cACN,OAAQ,EACT,EACA,CACC,KAAM,eACN,KAAM,cACN,OAAQ,EACT,EACA,CACC,KAAM,YACN,KAAM,WACN,OAAQ,EACT,EACA,CACC,KAAM,gBACN,KAAM,mBACN,OAAQ,EACT,EACA,CACC,KAAM,2BACN,KAAM,yBACP,EACA,CACC,KAAM,0BACN,KAAM,yBACN,OAAQ,EACT,EACA,CACC,KAAM,0BACN,KAAM,yBACN,OAAQ,EACT,EACA,CACC,KAAM,kBACN,KAAM,iBACN,OAAQ,EACT,EACA,CACC,KAAM,kBACN,KAAM,eACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,oBACN,KAAM,mBACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,uBACN,WAAY,GACZ,WAAY,CACX,WACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,2BACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,kBACN,KAAM,iBACN,OAAQ,EACT,EACA,CACC,KAAM,WACN,KAAM,uBACN,QAAW,OACX,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,uBACA,CACD,WAAY,CACX,CACC,KAAM,wBACN,KAAM,eACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,0BACN,KAAM,yBACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,kBACN,WAAY,CACX,uBACA,wBACA,CACD,WAAY,CACX,CACC,KAAM,YACN,KAAM,WACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,uBACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,eACN,WAAY,CACX,gBACA,wBACA,AACF,EACA,CACC,KAAM,yBACN,WAAY,CACX,eACA,CACD,WAAY,CACX,CACC,KAAM,2BACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,iBACN,WAAY,CACX,WACA,CACD,WAAY,CACX,CACC,KAAM,OACN,KAAM,QACP,EACA,CACC,KAAM,aACN,QAAW,aACX,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,QACN,WAAY,CACX,WACA,CACD,WAAY,CACX,CACC,KAAM,mBACN,KAAM,gBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,CACX,WACA,CACD,WAAY,CACX,CACC,KAAM,uBACN,KAAM,uBACN,OAAQ,EACT,EACA,CACC,KAAM,YACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,YACN,KAAM,cACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,WACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,gBACN,KAAM,gBACN,OAAQ,EACT,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,WACN,WAAY,GACZ,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,gBACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,0BACN,KAAM,cACN,OAAQ,GACR,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,QACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,WACN,WAAY,GACZ,WAAY,CACX,WACA,CACD,WAAY,CACX,CACC,KAAM,oBACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,UACN,KAAM,eACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,kBACN,KAAM,2BACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,oBACN,KAAM,gBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,aACN,KAAM,WACN,OAAQ,EACT,EACA,CACC,KAAM,wBACN,KAAM,uBACN,OAAQ,EACT,EACA,CACC,KAAM,yBACN,KAAM,wBACN,OAAQ,EACT,EACA,CACC,KAAM,gBACN,QAAW,EACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,YACN,KAAM,eACN,OAAQ,EACT,EACA,CACC,KAAM,qBACN,QAAW,EACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,sBACN,KAAM,qBACP,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,WACA,wBACA,kBACA,CACD,WAAY,CACX,CACC,KAAM,mBACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,YACN,KAAM,WACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,sBACN,WAAY,GACZ,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,mCACN,WAAY,CACX,sBACA,CACD,WAAY,CACX,CACC,KAAM,eACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,WACN,KAAM,wBACN,QAAW,MACX,OAAQ,EACT,EACA,CACC,KAAM,kBACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,mBACN,KAAM,mBACN,YAAa,EACd,EACA,CACC,KAAM,oBACN,KAAM,mBACN,YAAa,EACd,EACA,CACC,KAAM,gBACN,KAAM,YACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,iBACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,4BACN,KAAM,4BACN,OAAQ,EACT,EACA,CACC,KAAM,sBACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,sBACN,KAAM,kBACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,uBACN,KAAM,kBACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,8BACN,WAAY,CACX,sBACA,CACD,WAAY,CACX,CACC,KAAM,aACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,gBACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,cACN,KAAM,UACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,eACN,WAAY,CACX,WACA,kBACA,CACD,WAAY,CACX,CACC,KAAM,gBACN,KAAM,SACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,OACN,WAAY,CACX,WACA,kBACA,AACF,EACA,CACC,KAAM,WACN,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,aACN,KAAM,UACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,cACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,eACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACC,KAAM,aACN,KAAM,UACN,OAAQ,GACR,YAAa,EACd,EACA,AACF,EACA,CACC,KAAM,aACN,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,eACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,SACN,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,kBACN,WAAY,CACX,aACA,CACD,WAAY,CACX,CACC,KAAM,sBACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,WACN,KAAM,gBACN,OAAQ,EACT,EACA,CACC,KAAM,2BACN,QAAW,GACX,OAAQ,GACR,KAAM,SACP,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,CACX,aACA,CACD,WAAY,CACX,CACC,KAAM,WACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,SACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,mBACN,WAAY,CACX,aACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,SACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,yBACN,WAAY,CACX,aACA,CACD,WAAY,CACX,CACC,KAAM,iBACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,4BACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,YACN,KAAM,kBACP,EACA,CACC,KAAM,QACN,KAAM,oBACP,EACA,AACF,EACA,CACC,KAAM,eACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,cACN,KAAM,WACN,YAAa,EACd,EACA,CACC,KAAM,4BACN,KAAM,2BACN,OAAQ,EACT,EACA,CACC,KAAM,+BACN,KAAM,8BACP,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,2BACN,WAAY,CACX,CACC,KAAM,aACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACC,KAAM,eACN,KAAM,oBACN,OAAQ,GACR,YAAa,EACd,EACA,CACD,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,+BACN,WAAY,CACX,CACC,KAAM,aACN,KAAM,aACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,CACD,WAAY,CACX,cACA,AACF,EACA,CACC,KAAM,SACN,WAAY,CACX,CACC,KAAM,aACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,WACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,YACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,CACX,cACA,CACD,WAAY,CACX,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,kBACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,qBACN,QAAW,+BACX,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,QAAW,mCACX,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,UACN,KAAM,SACN,OAAQ,EACT,EACA,CACC,KAAM,aACN,KAAM,YACN,OAAQ,EACT,EACA,CACC,KAAM,eACN,KAAM,cACN,OAAQ,EACT,EACA,CACC,KAAM,WACN,OAAQ,GACR,KAAM,oBACP,EACA,CACC,KAAM,WACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,gBACN,KAAM,eACN,OAAQ,EACT,EACA,CACC,KAAM,kBACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CA8IA,aA7IoB,CACpB,CACC,KAAM,cACN,cAAe,CACd,CACC,KAAM,MACP,EACA,CACC,KAAM,QACP,EACA,CACC,KAAM,SACP,EACA,AACF,EACA,CACC,KAAM,mBACN,cAAe,CACd,CACC,KAAM,aACP,EACA,CACC,KAAM,YACP,EACA,CACC,KAAM,WACP,EACA,CACC,KAAM,OACP,EACA,AACF,EACA,CACC,KAAM,wBACN,cAAe,CACd,CACC,KAAM,UACP,EACA,CACC,KAAM,WACP,EACA,AACF,EACA,CACC,KAAM,wBACN,cAAe,CACd,CACC,KAAM,MACP,EACA,CACC,KAAM,SACP,EACA,CACC,KAAM,UACP,EACA,CACC,KAAM,MACP,EACA,AACF,EACA,CACC,KAAM,WACN,cAAe,CACd,CACC,KAAM,UACP,EACA,CACC,KAAM,aACP,EACA,AACF,EACA,CACC,KAAM,uBACN,cAAe,CACd,CACC,KAAM,MACP,EACA,CACC,KAAM,UACP,EACA,CACC,KAAM,yBACP,EACA,CACC,KAAM,uBACP,EACA,AACF,EACA,CACC,KAAM,uBACN,cAAe,CACd,CACC,KAAM,MACP,EACA,CACC,KAAM,KACP,EACA,CACC,KAAM,MACP,EACA,AACF,EACA,CACC,KAAM,wBACN,cAAe,CACd,CACC,KAAM,MACP,EACA,CACC,KAAM,KACP,EACA,CACC,KAAM,KACP,EACA,CACC,KAAM,SACP,EACA,AACF,EACA,CACC,KAAM,gBACN,cAAe,CACd,CACC,KAAM,UACP,EACA,CACC,KAAM,YACP,EACA,AACF,EACA,CAYA,IAXW,CACX,SAAU,YACV,WAAY,GACb,CASA,EAiqBE,OA/dkB,CACnB,KAjMY,SAkMZ,IAjMW,2CAkMX,OAjMc,SAkMd,MAjMa,CACb,CACC,KAAM,cACN,WAAY,CACX,CACC,KAAM,QACN,KAAM,YACN,UAAW,wBACZ,EACA,CACC,KAAM,aACN,KAAM,iBACN,OAAQ,EACT,EACA,CACD,WAAY,CACX,aACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,CACC,KAAM,cACN,OAAQ,GACR,YAAa,GACb,KAAM,mBACN,UAAW,gCACZ,EACA,CACD,WAAY,CACX,WACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,CACC,KAAM,cACN,OAAQ,GACR,YAAa,GACb,KAAM,mBACN,UAAW,gCACZ,EACA,CACC,KAAM,eACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,aACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,kBACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,QACN,KAAM,WACP,EACA,CACC,KAAM,mBACN,OAAQ,GACR,KAAM,SACP,EACA,CACC,KAAM,sBACN,KAAM,sBACN,OAAQ,EACT,EACA,CACC,KAAM,4BACN,KAAM,YACN,OAAQ,GACR,YAAa,EACd,EACA,CACD,WAAY,CACX,kBACA,AACF,EACA,CACC,KAAM,WACN,WAAY,CACX,CACC,KAAM,QACN,KAAM,WACP,EACA,CACC,KAAM,cACN,OAAQ,GACR,YAAa,GACb,KAAM,mBACN,UAAW,gCACZ,EACA,CACC,KAAM,gBACN,OAAQ,GACR,YAAa,GACb,KAAM,oBACN,UAAW,gBACZ,EACA,CACC,KAAM,gBACN,OAAQ,GACR,YAAa,GACb,KAAM,oBACN,UAAW,gBACZ,EACA,CACC,KAAM,qBACN,KAAM,qBACN,OAAQ,GACR,QAAW,YACZ,EACA,CACD,WAAY,CACX,iBACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,CACC,KAAM,aACN,KAAM,iBACN,OAAQ,GACR,YAAa,GACb,UAAW,yBACZ,EACA,CACD,WAAY,CACX,WACA,AACF,EACA,CACC,KAAM,iBACN,WAAY,CACX,CACC,KAAM,OACN,KAAM,SACP,EACA,CACD,WAAY,CACX,WACA,AACF,EACA,CA4CA,aA3CoB,CACpB,CACC,KAAM,sBACN,cAAe,CACd,CACC,KAAM,gBACP,EACA,CACC,KAAM,mBACP,EACA,CACC,KAAM,mBACP,EACA,CACC,KAAM,oBACP,EACA,CACC,KAAM,uBACP,EACA,CACC,KAAM,uBACP,EACA,AACF,EACA,CACC,KAAM,qBACN,cAAe,CACd,CACC,KAAM,YACP,EACA,CACC,KAAM,gBACP,EACA,AACF,EACA,CASA,aARoB,EACpB,AAQD,EAydE,GArXc,CACf,KAnGY,KAoGZ,IAnGW,yCAoGX,OAnGc,KAoGd,MAnGa,CACb,CACC,KAAM,SACP,EACA,CACC,KAAM,SACP,EACA,CACC,KAAM,MACP,EACA,CACC,KAAM,QACP,EACA,CACC,KAAM,OACN,WAAY,CACX,CACC,KAAM,OACN,KAAM,SACN,OAAQ,EACT,EACA,CACC,KAAM,OACN,KAAM,OACN,OAAQ,EACT,EACA,CACC,KAAM,SACN,KAAM,UACN,OAAQ,EACT,EACA,CACC,KAAM,WACN,KAAM,UACN,OAAQ,EACT,EACA,CACC,KAAM,cACN,KAAM,UACN,OAAQ,EACT,EACA,CACC,KAAM,kBACN,KAAM,UACN,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,QACN,WAAY,CACX,CACC,KAAM,IACN,KAAM,OACN,QAAW,IACX,OAAQ,EACT,EACA,CACC,KAAM,IACN,KAAM,OACN,QAAW,IACX,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,SACN,WAAY,CACX,CACC,KAAM,IACN,KAAM,OACN,QAAW,IACX,OAAQ,EACT,EACA,CACC,KAAM,IACN,KAAM,OACN,QAAW,IACX,OAAQ,EACT,EACA,CACC,KAAM,QACN,KAAM,OACN,OAAQ,EACT,EACA,CACC,KAAM,SACN,KAAM,OACN,OAAQ,EACT,EACA,AACF,EACA,CAQA,aAPoB,EACpB,AAOD,EAgXE,GAjIc,CACf,KA9OY,KA+OZ,IA9OW,yCA+OX,OA9Oc,KA+Od,MA9Oa,CACb,CACC,KAAM,iBACN,WAAY,GACZ,WAAY,CACX,CACC,KAAM,KACN,OAAQ,GACR,KAAM,GACN,KAAM,QACP,EACA,CACC,KAAM,YACN,KAAM,WACP,EACA,CACC,KAAM,gBACN,KAAM,UACN,WAAY,GACZ,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,gBACN,KAAM,iBACN,WAAY,GACZ,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,eACN,WAAY,GACZ,UAAW,GACX,YAAa,GACb,KAAM,SACP,EACA,CACC,KAAM,QACN,KAAM,QACN,WAAY,GACZ,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,eACN,KAAM,iBACN,WAAY,GACZ,OAAQ,GACR,UAAW,EACZ,EACA,AACF,EACA,CACC,KAAM,OACN,WAAY,GACZ,WAAY,CACX,iBACA,AACF,EACA,CACC,KAAM,OACN,WAAY,GACZ,WAAY,CACX,iBACA,CACD,WAAY,CACX,CACC,KAAM,SACN,KAAM,iBACN,WAAY,GACZ,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,SACN,KAAM,iBACN,WAAY,GACZ,UAAW,GACX,YAAa,EACd,EACA,CACC,KAAM,WACN,SAAU,GACV,OAAQ,GACR,KAAM,WACN,IAAK,CACJ,UAAW,UACZ,CACD,EACA,AACF,EACA,CACC,KAAM,UACN,WAAY,GACZ,WAAY,CACX,CACC,KAAM,KACN,OAAQ,GACR,KAAM,GACN,KAAM,QACP,EACA,CACC,KAAM,cACN,KAAM,iBACN,WAAY,GACZ,UAAW,EACZ,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,gBACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,aACN,OAAQ,GACR,KAAM,MACP,EACA,CACC,KAAM,aACN,KAAM,QACN,WAAY,GACZ,OAAQ,GACR,UAAW,EACZ,EACA,AACF,EACA,CACC,KAAM,QACN,WAAY,GACZ,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,SACN,KAAM,WACP,EACA,AACF,EACA,CACC,KAAM,QACN,WAAY,GACZ,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,eACN,KAAM,iBACN,kBAAmB,8BACnB,OAAQ,EACT,EACA,AACF,EACA,CACC,KAAM,cACN,WAAY,GACZ,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,aACN,KAAM,QACN,WAAY,GACZ,kBAAmB,8BACnB,OAAQ,GACR,UAAW,EACZ,EACA,AACF,EACA,CACC,KAAM,eACN,WAAY,GACZ,WAAY,CACX,QACA,CACD,WAAY,CACX,CACC,KAAM,aACN,KAAM,QACN,WAAY,GACZ,kBAAmB,8BACnB,OAAQ,GACR,UAAW,EACZ,EACA,AACF,EACA,CACC,KAAM,QACN,WAAY,GACZ,WAAY,CACX,OACA,CACD,WAAY,CACX,CACC,KAAM,SACN,KAAM,WACP,EACA,AACF,EACA,CACC,KAAM,QACN,WAAY,GACZ,WAAY,CACX,CACC,KAAM,KACN,OAAQ,GACR,KAAM,GACN,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,YACN,WAAY,CACX,CACC,KAAM,SACN,OAAQ,GACR,KAAM,SACP,EACA,AACF,EACA,CAWA,aAVoB,EACpB,CAUA,IATS,CACT,SAAU,WACX,CAQA,EA2HE,KA5EgB,CACjB,KA9CY,0BA+CZ,IA9CW,0CA+CX,OA9Cc,OA+Cd,MA9Ca,CACb,CACC,KAAM,eACN,QAAW,CACV,mBACA,CACD,WAAY,CACX,CACC,KAAM,SACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,cACN,QAAW,CACV,kBACA,CACD,WAAY,CACX,CACC,KAAM,SACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,OACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CAUA,aAToB,EACpB,CASA,aARoB,EACpB,AAQD,EAsEE,MAfuB,CACxB,KAtDU,gBAuDV,IAtDS,uDAuDT,OAtDY,QAuDZ,MAtDW,CACX,CACC,KAAM,eACN,QAAW,CACV,mBACA,CACD,WAAY,CACX,CACC,KAAM,QACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,eACN,QAAW,CACV,mBACA,CACD,WAAY,CACX,CACC,KAAM,mBACN,OAAQ,GACR,KAAM,QACP,EACA,CACC,KAAM,eACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CACC,KAAM,cACN,QAAW,CACV,kBACA,CACD,WAAY,CACX,CACC,KAAM,eACN,OAAQ,GACR,KAAM,QACP,EACA,AACF,EACA,CAUA,aATkB,EAClB,CASA,aARkB,EAClB,AAQD,CASA,EAEA,SAASkF,GAAOC,CAAkB,CAAE/nB,CAAO,EAGzC,OAAO,IAAIomB,GAFD,SAAO,CAAC,EAAG,GAAU2B,GAEJ/nB,EAC7B,CCnoHA,SAAS,GAAGjF,CAAO,CAAED,CAAI,EACvB,OAAOC,EAAQ,WAAW,CAACD,EAC7B,CAqBe,SAASktB,GAAe3iB,CAAO,CAAEvG,CAAS,EAGvD,IAAImpB,EAAkB,CAAC,EAInBC,EAAW,EAAE,CAEbC,EAAQ,CAAC,EAIb,SAASC,EAAWjW,CAAE,CAAE2Q,CAAG,EACzB,OAAO,SAASptB,CAAC,EACfyc,EAAGzc,EAAGotB,EACR,CACF,CAEA,SAASuF,EAAQttB,CAAO,EACtBktB,CAAe,CAACltB,EAAQ,EAAE,CAAC,CAAGA,CAChC,CAyBA,SAASutB,EAAUvtB,CAAO,CAAE+nB,CAAG,EAE7B,GAAI,CACF,IA9Ba/nB,EA8BT4B,EAAMwrB,CAAK,CAACptB,EAAQ,EAAE,CAAC,EAAIwtB,AAtBnC,SAAextB,CAAO,CAAE+nB,CAAG,EAKzB,GAHU/nB,EAAQ,GAAG,CAInB,MAAM,AAAI3N,MACR0R,EAAU,6BAA8B,CAAE,QAASmK,EAAgBlO,EAAS,IAKhF,OAAOsK,EAAQ,OAAO,CAACtK,EAASotB,CAAK,CAACptB,EAAQ,EAAE,CAAC,CAAE+nB,EACrD,EASyC/nB,EAAS+nB,GAI9C,OAjCFmF,CAAe,CAACltB,CADDA,EAgCLA,GA/Bc,EAAE,CAAC,CAAGA,EAiCrB4B,CACT,CAAE,MAAOjH,EAAG,CACV8yB,EAAS9yB,EAAE,OAAO,CAAE,CAAE,QAASqF,EAAS,MAAOrF,CAAE,GAEjD6kB,QAAQ,KAAK,CAACzb,EAAU,6BAA8B,CAAE,QAASmK,EAAgBlO,EAAS,IAC1Fwf,QAAQ,KAAK,CAAC7kB,EAChB,CACF,CAEA,SAAS8yB,EAASnkB,CAAO,CAAExJ,CAAO,EAChCwK,EAAQ,KAAK,CAAChB,EAASxJ,EACzB,CAIA,IAAI4tB,EAAa,IAAI,CAAC,UAAU,CAAG,SAAoBntB,CAAE,EACvD,ICtG8BwX,EDsG1B4V,EAAcptB,EAAG,WAAW,CAEhC,GAAIotB,GACF,GAAIP,CAAK,CAACO,EAAY,EAAE,CAAC,CACvBF,EACE1pB,EAAU,6CAA8C,CACtD,QAASmK,EAAgByf,EAC3B,GACA,CAAE,QAASA,CAAY,OAEpB,EACLP,CAAK,CAACO,EAAY,EAAE,CAAC,CAAGptB,ECjHEwX,EDmHR4V,EChHnB,SAAI5V,EAAgB,OACvBxgB,OAAO,cAAc,CAACwgB,EAAgB,KAAM,CAC1C,WAAY,GACZ,IAAK,WACH,MAAM,AAAI1lB,MAdK,6KAejB,CACF,ED2GE,OAEAo7B,EACE1pB,EAAU,yCAA0C,CAClD,QAASmK,EAAgB3N,EAC3B,GACA,CAAE,QAASA,CAAG,EAGpB,EAYA,SAASqtB,EAAmBC,CAAY,EACtCH,EAAWG,EACb,CAaA,IAAI,CAAC,iBAAiB,CAAG,SAA2B/U,CAAW,CAAEC,CAAO,EAItE,IArI0BD,EAoDT9Y,EAAS+Y,EAiFtB+U,EAAWhV,EAAY,QAAQ,CAEnC,GAAIC,GAAW+U,AAA8B,KAA9BA,EAAS,OAAO,CAAC/U,GAC9B,MAAM,AAAI1mB,MAAM0R,EAAU,yCAQ5B,GALI,CAACgV,GAAW+U,GAAYA,EAAS,MAAM,EACzC/U,CAAAA,EAAU+U,CAAQ,CAAC,EAAE,AAAD,EAIlB,CAAC/U,EACH,MAAM,AAAI1mB,MAAM0R,EAAU,0BAI5BqpB,EAAQ,CAAC,EA5CTW,AAGF,SAAqB7U,CAAK,EACxBwU,EAAWxU,GAEX,SAAQA,EAAM,YAAY,CAAE0U,EAC9B,EAPc7U,AA6CEA,EA7CM,KAAK,EAgDzB,IAAIG,EAAQH,EAAQ,KAAK,CAEzB,GAAI,CAACG,EACH,MAAM,AAAI7mB,MAAM0R,EACd,yBACA,CAAE,QAASmK,EAAgB6K,EAAS,IAIxC,IAAI9F,EAAciG,EAAM,WAAW,CAInC,GAAI,CAACjG,EAAa,EAGhB,GAzKwB6F,EAuKWA,EAAnC7F,EAtKG,SAAK6F,EAAY,YAAY,CAAE,SAASne,CAAC,EAC9C,OAAO,GAAGA,EAAG,iBAAmB,GAAGA,EAAG,qBACxC,GA0KM8yB,EACE1pB,EAAU,6DAA8D,CACtE,MAAOmK,EAAgBgL,GACvB,YAAahL,EAAgB+E,EAC/B,IAIFiG,EAAM,WAAW,CAAGjG,EACpBya,EAAWxU,QAZX,MAAM,AAAI7mB,MAAM0R,EAAU,0CAc9B,CAGA,IAAIgkB,GAvIa/nB,EAuIGiT,EAvIM8F,EAuIOG,EAtI1B5O,EAAQ,IAAI,CAACtK,EAASotB,CAAK,CAACptB,EAAQ,EAAE,CAAC,CAAE+Y,IAwIhD,GAAI,GAAG9F,EAAa,iBAAmB,GAAGA,EAAa,mBACrD+a,EAAc/a,EAAa8U,QACtB,GAAI,GAAG9U,EAAa,sBACzBgb,AAkNJ,UAA6BC,CAAa,CAAEpuB,CAAO,EAEjD,SAAQouB,EAAc,YAAY,CAAEb,EAAWc,EAAmBruB,IAElEsuB,EAAgBF,EAAc,SAAS,CAAEpuB,GAGzCqtB,EAAS,IAAI,CAAC,eAlKYkB,EAAcvuB,EAAduuB,EAmKLH,EAAc,YAAY,CAnKPpuB,EAmKSA,EAlKjD,SAAQuuB,EAAchB,EAAWiB,EAAmBxuB,GAmKpD,EACF,GA5NwBmT,EAAa8U,GAGjCwG,AAoCJ,SAAkCC,CAAY,CAAEzG,CAAG,EASjD0G,AAJgB,SAAOD,EAAc,SAAS7zB,CAAC,EAC7C,MAAO,CA3MFuyB,CAAe,CAACltB,AA2MHrF,EA3MW,EAAE,CAAC,EA2MR,GAAGA,EAAG,iBAAmBA,EAAE,QAAQ,AAC7D,GAEU,OAAO,CAAC0yB,EAAWW,EAAejG,GAC9C,EA9C6BjP,EAAY,YAAY,CAAEiP,QAEnD,MAAM,AAAI11B,MACR0R,EAAU,qDAAsD,CAC9D,MAAOmK,EAAgBgL,GACvB,YAAahL,EAAgB+E,EAC/B,IAKJyb,EAAevB,EACjB,EAEA,IAAIuB,EAAiB,IAAI,CAAC,cAAc,CAAG,WAKzC,KAAOvB,EAAS,MAAM,EAGpB/V,AAFK+V,EAAS,KAAK,IAIvB,EAEA,SAASa,EAAcW,CAAO,CAAE7uB,CAAO,MAhMtBE,EAiMf4uB,EAA4BD,EAAS7uB,GACrC+uB,EAAsBF,EAAQ,eAAe,CAAE7uB,GAE/CsuB,EAAgBO,EAAQ,SAAS,CAAE7uB,GAnMnCotB,CAAe,CAACltB,CADDA,EAuMP2uB,GAtMgB,EAAE,CAAC,CAAG3uB,CAuMhC,CAcA,SAASsuB,EAAkBQ,CAAW,CAAEhvB,CAAO,EAC7CytB,EAAUuB,EAAahvB,EACzB,CAMA,SAASivB,EAAsBC,CAAW,CAAElvB,CAAO,EACjDytB,EAAUyB,EAAalvB,EACzB,CAEA,SAASmvB,EAAgBC,CAAS,CAAEpvB,CAAO,EACzCytB,EAAU2B,EAAWpvB,EACvB,CAEA,SAASqvB,EAAiBC,CAAU,CAAEtvB,CAAO,EAC3CytB,EAAU6B,EAAYtvB,EACxB,CAEA,SAASuvB,EAAeC,CAAQ,CAAExvB,CAAO,EAMvCytB,EAAU+B,EAAUxvB,EACtB,CAEA,SAASsuB,EAAgBmB,CAAS,CAAEzvB,CAAO,EAEzC,SAAQyvB,EAAW,SAAS50B,CAAC,EAC3B,GAAI,GAAGA,EAAG,oBACRwyB,EAAS,IAAI,CAAC,WAPlBI,EAQqB5yB,EAAGmF,EACpB,QATJytB,EAWmB5yB,EAAGmF,EAEtB,EACF,CAEA,SAAS+uB,EAAsBW,CAAe,CAAE1vB,CAAO,EAErD,IAAI,CAAC0vB,EAIL,SAAQA,EAAgB,UAAU,CAAEnC,EAAW4B,EAAiBnvB,IAChE,SAAQ0vB,EAAgB,WAAW,CAAEnC,EAAW8B,EAAkBrvB,GACpE,CAEA,IAAI2vB,EAAmB,IAAI,CAAC,gBAAgB,CAAG,SAA0BC,CAAU,CAAE5vB,CAAO,EAC1F8uB,EAA4Bc,EAAY5vB,GACxCsuB,EAAgBsB,EAAW,SAAS,CAAE5vB,EACxC,EAEA,SAAS6vB,EAAeC,CAAQ,CAAE9vB,CAAO,EACvC,IAAI+vB,EAAWtC,EAAUqC,EAAU9vB,GAE/B,GAAG8vB,EAAU,oBACfH,EAAiBG,EAAUC,GAAY/vB,GAGrC,GAAG8vB,EAAU,kBACff,EAAsBe,EAAS,eAAe,CAAE9vB,GAUlDqtB,EAAS,IAAI,CAAC,WACZ,SAAQyC,EAAS,qBAAqB,CAAEvC,EAAW0B,EAAuBjvB,IAC1E,SAAQ8vB,EAAS,sBAAsB,CAAEvC,EAAW0B,EAAuBjvB,GAC7E,EACF,CAMA,SAASgwB,EAAkBloB,CAAU,CAAE9H,CAAO,EAC5CytB,EAAU3lB,EAAY9H,EACxB,CAEA,SAASiwB,EAAW3nB,CAAI,CAAEtI,CAAO,EAE/BqtB,EAAS,IAAI,CAAC,WAEZ,IAAI6C,EAAazC,EAAUnlB,EAAMtI,EAE7BsI,CAAAA,EAAK,YAAY,EACnB6nB,EAAc7nB,EAAK,YAAY,CAAE4nB,GAAclwB,GAGjDowB,AAyEJ,SAA0B9nB,CAAI,EAG5B,SAAQA,EAAK,WAAW,CAAE,SAASwnB,CAAQ,EACzC,IAAIO,EAAQP,EAAS,GAAG,CAAC,SAErBO,GACFA,EAAM,IAAI,CAAC/nB,EAEf,EACF,EAnFqBA,EACnB,EACF,CAEA,SAAS6nB,EAAcG,CAAO,CAAEtwB,CAAO,EACrC,SAAQswB,EAAQ,KAAK,CAAE/C,EAAW0C,EAAYjwB,GAChD,CAMA,SAAS8uB,EAA4Bjb,CAAS,CAAE7T,CAAO,EAGrD,GAFAuwB,AAOF,SAA4BC,CAAY,CAAExwB,CAAO,EAC/C,SAAQwwB,EAAc,SAAS31B,CAAC,EAC9B,GAAI,GAAGA,EAAG,qBACRwyB,EAAS,IAAI,CAAC,WAxClBI,EAyCyB5yB,EAAGmF,EACxB,QACK,GAAI,GAAGnF,EAAG,sBACfwyB,EAAS,OAAO,CAAC,WACfwC,EAAeh1B,EAAGmF,EACpB,QACK,GAAI,GAAGnF,EAAG,iBACfg1B,EAAeh1B,EAAGmF,QACb,GAAI,GAAGnF,EAAG,yBAGV,GAAI,GAAGA,EAAG,2BAhDnB4yB,EAiDsB5yB,EAAGmF,QAChB,GAAI,GAAGnF,EAAG,4BAlDnB4yB,EAmDsB5yB,EAAGmF,QAErB2tB,EACE1pB,EAAU,0DAA2D,CACnE,QAASmK,EAAgBvT,GACzB,QAAUmF,EAAUoO,EAAgBpO,EAAQ,cAAc,EAAI,MAChE,GACA,CAAE,QAASnF,EAAG,QAASmF,CAAQ,EAGrC,EACF,EApCqB6T,EAAU,YAAY,CAAE7T,GAEvC6T,EAAU,QAAQ,CAAE,KAPF4c,EAAUzwB,EAAVywB,EAQL5c,EAAU,QAAQ,CARH7T,EAQKA,EAPrC,SAAQywB,EAAUlD,EAAW4C,EAAenwB,GAQ5C,CACF,CAiCA,SAASquB,EAAkBzkB,CAAW,CAAE5J,CAAO,EAC7C,IAAI0wB,EAASjD,EAAU7jB,EAAa5J,GAEhC6uB,EAAUjlB,EAAY,UAAU,CAChCilB,GACFX,EAAcW,EAAS6B,GAAU1wB,EAErC,CA0BF,CvDlcO,IAAI2wB,GAFW,k3BAIXC,GAAc,CACvB,cAAe,QACjB,EAEWC,GAAc,CACvB,MAAS,SACX,EAEIC,GAAkB,CACpB,OAAU,OACV,SAAY,QACZ,IAAO,IACP,KAAQ,IACR,MAAS,IACT,OAAU,GACZ,EAEIC,GAAkB,CACpB,MAAS,OACT,OAAU,OACV,WAAc,oBAChB,EAEIC,GAAgB,CAClB,SAAY,WACZ,KAAQ,MACR,IAAO,MACP,UAAa,kBACb,MAAS,QACT,QAAW,OACX,WAAc,QACd,UAAa,4BACb,WAAc,+BACd,SAAY,OACZ,QAAW,OACX,WAAc,KAChB,EAEIC,GACF,8JAIMN,GAJN,0JyDoEa,SAASO,GAAW/rB,CAAO,EAKxCA,EAAU,SAAO,CAAC,EAAGgsB,GAAiBhsB,GAKtC,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,aAAa,CAACA,GAKlC,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,gBAAgB,CAACA,GAIxCisB,AA6nBF,SAAwBvd,CAAS,EAY/B,IAAMwd,EAAc,SARlB,+FAHUV,GASV,QAIF,SAAY,SAAS,MAAOU,GAAcT,IAC1C,SAAYS,EAAaR,GAAa,CACpC,SAAU,WACV,OAAQ,OACR,MAAO,OACP,OAAQ,KACV,GAEAhd,EAAU,WAAW,CAACwd,GAEtB,QAAa,CAACA,EAAa,QAAS,SAASruB,CAAK,EzD7sB7CtD,IAdLA,EAAW,SAAOuxB,IAElB,SAAYvxB,EAAUoxB,IACtB,SAAY,SAAS,MAAOpxB,GAAWkxB,IACvC,SAAY,SAAS,YAAalxB,GAAWqxB,IAC7C,SAAY,SAAS,UAAWrxB,GAAWsxB,IAC3C,SAAY,SAAS,QAAStxB,GAAWmxB,GAAa,CACpD,OAAU,sBACV,UAAa,QACf,GAQE,SAAgB,CAACnxB,EAAU,YAAa,QAAS,SAASsD,CAAK,EAC7DyI,SAAS,IAAI,CAAC,WAAW,CAAC/L,EAC5B,IAGF+L,SAAS,IAAI,CAAC,WAAW,CAAC/L,GyDwsBxBsD,EAAM,cAAc,EACtB,EACF,EA1pBiB,IAAI,CAAC,UAAU,EAI9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAE,IAAI,CAAC,OAAO,CAAEmC,EAC5C,CA2iBA,SAASmsB,GAAmBvJ,CAAG,CAAEwJ,CAAW,EAE1C,OADAxJ,EAAI,QAAQ,CAAGwJ,EACRxJ,CACT,CA5iBA,QAASmJ,GAAYtQ,IAiCrBsQ,GAAW,SAAS,CAAC,SAAS,CAAG,eAAyB1J,CAAG,CAAEgK,CAAW,EAExE,IAAM1xB,EAAO,IAAI,CAMb2xB,EAAqB,EAAE,CAC3B,GAAI,KALwBn+B,MAkBtBo+B,EAFJlK,EAAM,IAAI,CAAC,KAAK,CAAC,qBAAsB,CAAE,IAAKA,CAAI,IAAMA,EAGxD,GAAI,CACFkK,EAAc,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAClK,EAAK,mBAChD,CAAE,MAAOjI,EAAO,CAKd,MAJA,IAAI,CAAC,KAAK,CAAC,wBAAyB,CAClCA,MAAAA,CACF,GAEMA,CACR,CAEA,IAAIvG,EAAc0Y,EAAY,WAAW,CACnCpI,EAAaoI,EAAY,UAAU,CACnCC,EAAgBD,EAAY,QAAQ,CACpC7L,EAAe6L,EAAY,YAAY,CAE7CD,EAAqBA,EAAmB,MAAM,CAACE,GAW/C3Y,EAAc,IAAI,CAAC,KAAK,CAAC,yBA7CC1lB,EA6C2C,CACnE,MAAO,KACP,YAAa0lB,EACb,aAAc6M,EACd,WAAYyD,EACZ,SAAUmI,CACZ,EAlDO3xB,EAAK,GAAG,CAAC,YAAY,WAAW,CAACxM,MAkDjC0lB,EAEP,IAAM4Y,EAAe,MAAM,IAAI,CAAC,iBAAiB,CAAC5Y,EAAawY,GAY/D,OAVAC,EAAqBA,EAAmB,MAAM,CAACG,EAAa,QAAQ,EAQpE,IAAI,CAAC,KAAK,CAAC,cAAe,CAAE,MAAO,KAAM,SAAUH,CAAmB,GAE/D,CAAE,SAAUA,CAAmB,CACxC,CAAE,MAAO1J,EAAK,CACZ,IAAIxI,EAAQwI,CAQZ,OAPA0J,EAAqBA,EAAmB,MAAM,CAAClS,EAAM,QAAQ,EAAI,EAAE,EACnE+R,GAAmB/R,EAAOkS,GAE1BlS,EAAQsS,AAkcZ,SAA8B9J,CAAG,EAM/B,IAAM3P,EAAQ0Z,AADE,kDACM,IAAI,CAAC/J,EAAI,OAAO,EAQtC,OANI3P,GACF2P,CAAAA,EAAI,OAAO,CACT,uBAAyB3P,CAAK,CAAC,EAAE,CAAjC,iEACuDA,CAAK,CAAC,EAAE,AAAD,EAG3D2P,CACT,EAjdiCxI,GAE7B,IAAI,CAAC,KAAK,CAAC,cAAe,CAAEA,MAAAA,EAAO,SAAUA,EAAM,QAAQ,AAAC,GAEtDA,CACR,CACF,EAyBA2R,GAAW,SAAS,CAAC,iBAAiB,CAAG,eAAiClY,CAAW,CAAEwY,CAAW,EAIhG,OAHA,IAAI,CAAC,eAAe,CAACxY,GAGd,CAAE,SAAUkG,AAFJ,OAAM,IAAI,CAAC,IAAI,CAACsS,EAAW,EAEhB,QAAQ,AAAC,CACrC,EAwBAN,GAAW,SAAS,CAAC,IAAI,CAAG,eAAoBa,CAAe,MC/R7B9Y,EAASD,EAAawY,EAElDQ,EACApyB,EACAqE,EACAQ,EAEA8a,EACAgK,EDyRJ,IAAMvQ,EAAc,IAAI,CAAC,YAAY,CACjCwY,EAAcO,EAElB,GAAI,CAAC/Y,EAAa,CAChB,IAAMuG,EAAQ,AAAIhtB,MAAM,kBAGxB,OAFA++B,GAAmB/R,EAAO,EAAE,EAEtBA,CACR,CAEA,GAAI,AAA2B,UAA3B,OAAOwS,GAGL,CAFJP,CAAAA,EAAcS,AAialB,SAAyBjZ,CAAW,CAAEkZ,CAAS,SAC7C,AAAKA,GAIE,SAAKlZ,EAAY,QAAQ,CAAE,SAAS9Y,CAAO,EAChD,OAAOA,EAAQ,EAAE,GAAKgyB,CACxB,IAAM,IACR,EAzakClZ,EAAa+Y,EAAe,EAExC,CAChB,IAAMxS,EAAQ,AAAIhtB,MAAM,gBAAkBw/B,EAAkB,cAG5D,OAFAT,GAAmB/R,EAAO,EAAE,EAEtBA,CACR,CAKF,GAAI,CACF,IAAI,CAAC,KAAK,EACZ,CAAE,MAAOA,EAAO,CAGd,MAFA+R,GAAmB/R,EAAO,EAAE,EAEtBA,CACR,CAGA,GAAM,CAAEgK,SAAAA,CAAQ,CAAE,CAAG,OCjUWtQ,EDiUa,IAAI,CCjURD,EDiUUA,ECjUGwY,EDiUUA,ECzT5DjI,EAAW,EAAE,CAqDV,IAAIL,QAAQ,SAASC,CAAO,CAAEC,CAAM,EACzC,GAAI,CAeF,OAdA4I,EAAW/Y,EAAQ,GAAG,CAAC,gBACvBrZ,EAAWqZ,EAAQ,GAAG,CAAC,YACvBhV,EAAYgV,EAAQ,GAAG,CAAC,aACxBxU,EAASwU,EAAQ,GAAG,CAAC,UAErBrZ,EAAS,IAAI,CAAC,sBAAuB,CAAE,YAAaoZ,CAAY,IAEhEmZ,AArDJ,SAAgBnZ,CAAW,CAAEwY,CAAW,EAiBtC,IAAIY,EAAS,IAAIjF,GAfH,CAEZ,KAAM,SAASjtB,CAAO,CAAEO,CAAE,EACxB,OAAOuxB,EAAS,GAAG,CAAC9xB,EAASO,EAC/B,EAEA,QAAS,SAASP,CAAO,CAAEO,CAAE,CAAE4xB,CAAW,EACxC,OAAOL,EAAS,GAAG,CAAC9xB,EAASO,EAAI4xB,EACnC,EAEA,MAAO,SAAS7oB,CAAO,CAAExJ,CAAO,EAC9BupB,EAAS,IAAI,CAAC,CAAE,QAAS/f,EAAS,QAASxJ,CAAQ,EACrD,CACF,EAEyCiE,GAGzCutB,EAAcA,GAAgBxY,EAAY,QAAQ,EAAIA,EAAY,QAAQ,CAAC,EAAE,CAE7E,IAAIsZ,EAAmBC,AAwD3B,SAA6BvZ,CAAW,CAAEwY,CAAW,EACnD,IAAI,CAACA,GAIL,IASIpD,EATAP,EAAc2D,EAAY,KAAK,CAAC,WAAW,CAC3Cre,EAAc0a,CAEd,EAAC,EAAGA,EAAa,iBAAmB,CAAC,EAAGA,EAAa,uBACvD1a,CAAAA,EAAcqf,AAuElB,SAAyBtyB,CAAO,EAG9B,IAFA,IAAIjJ,EAASiJ,EAENjJ,GAAQ,CACb,GAAI,EAAGA,EAAQ,gBACb,OAAOA,EAGTA,EAASA,EAAO,OAAO,AACzB,CACF,EAjFkC42B,EAAW,EAQzCO,EADE,EAAGjb,EAAa,sBACFA,EAEA,SAAK6F,EAAY,YAAY,CAAE,SAAS9Y,CAAO,EAC7D,IAAI,CAAC,EAAGA,EAAS,sBAIjB,MAAO,SAAKA,EAAQ,YAAY,CAAE,SAAS0J,CAAW,EACpD,OAAOA,EAAY,UAAU,GAAKuJ,CACpC,EACF,GAGF,IAAIub,EAAe,CAAEvb,EAAa,CAG9Bib,GAKFM,AAJAA,CAAAA,EAAe,SAAIN,EAAc,YAAY,CAAE,SAASxkB,CAAW,EACjE,OAAOA,EAAY,UAAU,AAC/B,EAAC,EAEY,IAAI,CAACwkB,GAGpB,IAAIqE,EAAcC,AAuBpB,SAASA,EAAuB1xB,CAAQ,EACtC,IAAIke,EAAS,EAAE,CAYf,MAVA,SAAQle,EAAU,SAASd,CAAO,EAChC,IAAI,CAACA,EAILgf,EAAO,IAAI,CAAChf,GAEZgf,EAASA,EAAO,MAAM,CAACwT,EAAuBxyB,EAAQ,YAAY,EACpE,GAEOgf,CACT,EArC2CwP,GAIrC4D,EAAmB,CAAEd,EAAa,CAClCpE,EAAkB,CAAES,EAAa,CAerC,MAbA,SAAQ7U,EAAY,QAAQ,CAAE,SAASC,CAAO,EAC5C,IAAIhB,EAAiBgB,EAAQ,KAAK,CAAC,WAAW,AAGJ,MAAxCwZ,EAAY,OAAO,CAACxa,IACpBmV,AAA4C,KAA5CA,EAAgB,OAAO,CAACnV,KAExBqa,EAAiB,IAAI,CAACrZ,GACtBmU,EAAgB,IAAI,CAACnV,GAEzB,GAGOqa,EACT,EAtH+CtZ,EAAawY,GAExD,GAAI,CAACc,EACH,MAAM,AAAI//B,MAAM0R,EAAU,0BAK5B,SAAQquB,EAAkB,SAASrZ,CAAO,EACxCmZ,EAAO,iBAAiB,CAACpZ,EAAaC,EACxC,GAEA,IAAI0Z,EAASnB,EAAY,KAAK,CAAC,WAAW,CAAC,EAAE,CAK7C/sB,EAAO,cAAc,CACnBA,EAAO,QAAQ,CAACkuB,EAAS,WAAaluB,EAAO,QAAQ,CAACkuB,GAE1D,EAWW3Z,EAAawY,GAEpB5xB,EAAS,IAAI,CAAC,yBAA0B,CACtC,MAAO2f,EACP,SAAUgK,CACZ,GAEOJ,EAAQ,CAAE,SAAUI,CAAS,EACtC,CAAE,MAAO1uB,EAAG,CAGV,OADAA,EAAE,QAAQ,CAAG0uB,EACNH,EAAOvuB,EAChB,CACF,IDgPA,MAAO,CAAE0uB,SAAAA,CAAS,CACpB,EAyBA2H,GAAW,SAAS,CAAC,OAAO,CAAG,eAAuB/rB,CAAO,EAE3DA,EAAUA,GAAW,CAAC,EAEtB,IAAI6T,EAAc,IAAI,CAAC,YAAY,CAC/BuG,EAAOiI,EAEX,GAAI,CACF,GAAI,CAACxO,EACH,MAAM,AAAIzmB,MAAM,yBAWlBymB,EAAc,IAAI,CAAC,KAAK,CAAC,gBAAiB,CACxCA,YAAAA,CACF,IAAMA,EAGNwO,EAAMtI,AADS,OAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAClG,EAAa7T,EAAO,EAC/C,GAAG,CAEhBqiB,EAAM,IAAI,CAAC,KAAK,CAAC,qBAAsB,CACrCA,IAAAA,CACF,IAAMA,CACR,CAAE,MAAOO,EAAK,CACZxI,EAAQwI,CACV,CAEA,IAAM7I,EAASK,EAAQ,CAAEA,MAAAA,CAAM,EAAI,CAAEiI,IAAAA,CAAI,EAUzC,GAFA,IAAI,CAAC,KAAK,CAAC,eAAgBtI,GAEvBK,EACF,MAAMA,EAGR,OAAOL,CACT,EAsBAgS,GAAW,SAAS,CAAC,OAAO,CAAG,qBAGzB/f,EAAK4W,EAFT,IAAI,CAAC,KAAK,CAAC,iBAIX,GAAI,CACF,IAAMtjB,EAAS,IAAI,CAAC,GAAG,CAAC,UAElBmuB,EAAcnuB,EAAO,cAAc,GACnCouB,EAAW,SAAS,OAAQpuB,EAAO,IAAI,EAEvCquB,EAAW,SAASF,GACpBttB,EAAOutB,EAAW,SAAW,SAASA,GAAY,UAAY,GAE9D7mB,EAAO4mB,EAAY,OAAO,GAEhCzhB,EACE,+RAIYnF,EAAK,KAAK,CAAG,aAAeA,EAAK,MAAM,CAJnD,cAKcA,EAAK,CAAC,CAAG,IAAMA,EAAK,CAAC,CAAG,IAAMA,EAAK,KAAK,CAAG,IAAMA,EAAK,MAAM,CAAG,mBAC7E1G,EAAOwtB,EACP,QACJ,CAAE,MAAOj4B,EAAG,CACVktB,EAAMltB,CACR,CAaA,GALA,IAAI,CAAC,KAAK,CAAC,eAAgB,CACzB,MAAOktB,EACP,IAAK5W,CACP,GAEI4W,EACF,MAAMA,EAGR,MAAO,CAAE5W,IAAAA,CAAI,CACf,EAEA+f,GAAW,SAAS,CAAC,eAAe,CAAG,SAASlY,CAAW,EACzD,IAAI,CAAC,YAAY,CAAGA,CACtB,EAOAkY,GAAW,SAAS,CAAC,UAAU,CAAG,WAChC,OAAO,IAAI,CAAC,QAAQ,AACtB,EAQAA,GAAW,SAAS,CAAC,KAAK,CAAG,WAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,GAOxBtQ,GAAQ,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACnC,EAMAsQ,GAAW,SAAS,CAAC,OAAO,CAAG,WAG7BtQ,GAAQ,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAGnC,SAAU,IAAI,CAAC,UAAU,CAC3B,EAcAsQ,GAAW,SAAS,CAAC,EAAE,CAAG,SAASja,CAAM,CAAEtS,CAAQ,CAAEtQ,CAAQ,CAAEC,CAAI,EACjE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC2iB,EAAQtS,EAAUtQ,EAAUC,EAC7D,EAQA48B,GAAW,SAAS,CAAC,GAAG,CAAG,SAASja,CAAM,CAAE5iB,CAAQ,EAClD,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC4iB,EAAQ5iB,EACnC,EAOA68B,GAAW,SAAS,CAAC,QAAQ,CAAG,SAAShc,CAAU,EAEjD,GAAI,CAACA,EACH,MAAM,AAAI3iB,MAAM,uBAKlB,IAAI,CAAC,MAAM,GAGP2iB,EAAW,GAAG,EAAIA,EAAW,WAAW,CAAC,SAAS,CAAC,MAAM,EAC3DA,CAAAA,EAAaA,EAAW,GAAG,CAAC,EAAC,EAGL,UAAtB,OAAOA,GACTA,CAAAA,EAAa,SAASA,EAAU,EAGlCA,EAAW,WAAW,CAAC,IAAI,CAAC,UAAU,EAEtC,IAAI,CAAC,KAAK,CAAC,SAAU,CAAC,GAEtB,IAAI,CAAC,GAAG,CAAC,UAAU,OAAO,EAC5B,EAOAgc,GAAW,SAAS,CAAC,cAAc,CAAG,WACpC,OAAO,IAAI,CAAC,YAAY,AAC1B,EAOAA,GAAW,SAAS,CAAC,MAAM,CAAG,WAE5B,IAAMrd,EAAY,IAAI,CAAC,UAAU,CAC3BqB,EAAarB,EAAU,UAAU,CAEvC,IAAI,CAACqB,EAUL,IAAI,CAAC,KAAK,CAAC,SAAU,CAAC,GAEtBA,EAAW,WAAW,CAACrB,EACzB,EAEAqd,GAAW,SAAS,CAAC,KAAK,CAAG,SAASrd,CAAS,CAAEkF,CAAM,CAAE5T,CAAO,EAE9D,IAAM4tB,EAAc5tB,EAAQ,OAAO,EAAI,IAAI,CAAC,UAAU,CAACA,GASjD6tB,EAAiB,EAAE,CAAC,MAAM,CAPV,CACd,CACE,OAAQ,CAAE,QAAS,IAAI,CAAE,CACzB,OAAQ,CAAE,QAASja,EAAQ,AAC7B,EACD,CAEyCga,EARtB5tB,EAAQ,iBAAiB,EAAI,EAAE,EAUnD8tB,EAAiB,SAAO,SAAK9tB,EAAS,CAAE,oBAAqB,EAAG,CACpE,OAAQ,SAAO,CAAC,EAAGA,EAAQ,MAAM,CAAE,CAAE,UAAW0O,CAAU,GAC1D,QAASmf,CACX,GAGApS,GAAQ,IAAI,CAAC,IAAI,CAAEqS,GAEf9tB,GAAWA,EAAQ,SAAS,EAC9B,IAAI,CAAC,QAAQ,CAACA,EAAQ,SAAS,CAEnC,EAUA+rB,GAAW,SAAS,CAAC,KAAK,CAAG,SAASjxB,CAAI,CAAE+C,CAAK,EAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC/C,EAAM+C,EACzC,EAOAkuB,GAAW,SAAS,CAAC,gBAAgB,CAAG,SAAS/rB,CAAO,EAEtD,IAAM0O,EAAY,SAAO,qCAQzB,MANA,SAAYA,EAAW,CACrB,MAAOqf,GAAW/tB,EAAQ,KAAK,EAC/B,OAAQ+tB,GAAW/tB,EAAQ,MAAM,EACjC,SAAUA,EAAQ,QAAQ,AAC5B,GAEO0O,CACT,EAOAqd,GAAW,SAAS,CAAC,aAAa,CAAG,SAAS/rB,CAAO,EAGnD,OAAO,IAAI,GAFW,SAAO,CAAC,EAAG,IAAI,CAAC,iBAAiB,CAAEA,EAAQ,gBAAgB,EAGnF,EAEA+rB,GAAW,SAAS,CAAC,QAAQ,CAAG,EAAE,CA0BlC,IAAMC,GAAkB,CACtB,MAAO,OACP,OAAQ,OACR,SAAU,UACZ,EAMA,SAAS+B,GAAW9hB,CAAG,EACrB,OAAOA,EAAO,UAASA,GAAO,KAAO,EAAC,CACxC,CE3qBe,SAAS+hB,GAAOhuB,CAAO,EACpC+rB,GAAW,IAAI,CAAC,IAAI,CAAE/rB,EACxB,CAEA,QAASguB,GAAQjC,IAGjBiC,GAAO,SAAS,CAAC,QAAQ,CAAG,CC5Db,CACb,YAAa,CCCA,CACb,SAAU,CAAE,eAAgB,CAC5B,aAAc,CAAE,OAAQ9uB,EAAc,CACtC,aAAc,CAAE,OAAQ0I,EAAc,CACtC,QAAS,CAAE,OlDNE,WAiCb,IAAI,CAAC,OAAO,CAAG,CACb,cAAiB,CACf,EAAG,mFACH,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,EAAG,GAAI,CACzB,cAAe,CAAE,KAAM,GAAI,AAC7B,EACA,aAAgB,CACd,EAAG,4CACH,OAAQ,GACR,MAAO,GACP,eAAgB,CAAE,GAAI,CACtB,cAAe,CAAE,GAAI,GAAI,AAC3B,EACA,iBAAoB,CAClB,EAAG,mEACH,OAAQ,GACR,MAAO,GACP,eAAgB,CAAE,GAAI,EAAG,CACzB,cAAe,CAAE,EAAG,AACtB,EACA,kBAAqB,CACnB,EAAG,yNAOH,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,IAAK,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,CACrE,cAAgB,CAAE,KAAM,KAAM,KAAM,AACtC,EACA,WAAc,CACZ,EAAG,6FACH,OAAQ,GACR,MAAO,GACP,eAAgB,CAAE,OAAQ,KAAM,OAAQ,CACxC,cAAe,CAAE,QAAS,KAAM,AAClC,EACA,YAAe,CACb,EAAG,0GACH,OAAQ,GACR,MAAO,GACP,eAAgB,CAAE,KAAO,MAAO,MAAO,OAAQ,OAAQ,MAAO,CAC9D,cAAe,CAAE,KAAO,MAAO,KAAM,MAAO,MAAO,MAAO,AAC5D,EACA,gBAAmB,CACjB,EAAG,yHAEH,OAAQ,GACR,MAAO,GACP,eAAgB,CAAE,KAAM,IAAK,CAC7B,cAAe,CAAE,KAAM,IAAK,AAC9B,EACA,mBAAsB,CACpB,EAAG,mGACH,OAAQ,GACR,MAAO,GACP,eAAgB,CAAE,IAAK,GAAI,GAAK,IAAK,CACrC,cAAe,CAAE,EAAG,IAAK,IAAK,AAChC,EACA,eAAkB,CAChB,EAAG,iEACH,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,GAAI,EAAG,CACzB,cAAe,CAAE,EAAG,EAAG,AACzB,EACA,iBAAoB,CAClB,EAAI,gDAEJ,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,GAAI,EAAG,CACzB,cAAe,CAAE,EAAG,EAAG,AACzB,EACA,eAAkB,CAChB,EAAE,sEACF,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,QAAS,SAAU,CACrC,cAAe,CAAE,OAAQ,QAAS,SAAU,AAC9C,EACA,wBAA2B,CACzB,EAAE,wHAEF,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,QAAS,QAAS,CACpC,cAAe,CAAE,QAAS,QAAS,AACrC,EACA,kBAAqB,CACnB,EAAE,oKAGF,OAAQ,KACR,MAAQ,KACR,eAAgB,CAAE,IAAK,OAAQ,QAAS,KAAM,CAC9C,cAAgB,CAAE,IAAK,KAAM,EAAG,GAAI,EAAG,GAAI,AAC7C,EACA,iBAAoB,CAClB,EAAE,kIAEF,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,EAAG,KAAM,CAC3B,cAAe,CAAE,EAAG,KAAM,AAC5B,EACA,oBAAuB,CACrB,EAAE,mEACF,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,GAAI,EAAG,GAAI,IAAK,CAClC,cAAe,CAAE,EAAG,GAAI,IAAK,AAC/B,EACA,gBAAmB,CACjB,EAAE,yTAIF,OAAQ,OACR,MAAQ,OACR,eAAgB,CAAE,MAAO,OAAQ,MAAO,EAAG,CAC3C,cAAe,CAAE,OAAQ,MAAO,MAAO,EAAG,AAC5C,EACA,iBAAoB,CAClB,EAAE,uFACF,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,GAAI,GAAI,GAAI,CAC9B,cAAe,CAAE,GAAI,GAAI,GAAI,GAAI,AACnC,EACA,4BAA+B,CAC7B,EAAG,wDACH,OAAQ,GACR,MAAO,GACP,eAAgB,EAAE,CAClB,cAAe,EAAE,AACnB,EACA,WAAc,CACZ,EAAE,sCACF,OAAQ,GACR,MAAQ,GACR,eAAgB,EAAE,CAClB,cAAe,EAAE,AACnB,EACA,WAAc,CACZ,EAAE,uRAUF,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,EAAG,GAAI,GAAI,CAC7B,cAAgB,CAAE,EAAG,GAAI,GAAI,AAC/B,EACA,gBAAmB,CACjB,EAAG,gDACH,OAAQ,GACR,MAAO,GACP,eAAgB,CAAE,GAAI,CACtB,cAAe,CAAE,GAAI,AACvB,EACA,mBAAsB,CACpB,EAAG,yCACH,OAAQ,GACR,MAAO,GACP,eAAgB,EAAE,CAClB,cAAe,EAAE,AACnB,EACA,gBAAmB,CACjB,EAAG,wDACH,OAAQ,GACR,MAAO,GACP,eAAgB,EAAE,CAClB,cAAe,EAAE,AACnB,EACA,kBAAqB,CACnB,EAAG,wDACH,OAAQ,GACR,MAAO,GACP,eAAgB,EAAE,CAClB,cAAe,EAAE,AACnB,EACA,oBAAuB,CACrB,EAAG,+DACH,OAAQ,GACR,MAAO,GACP,eAAgB,EAAE,CAClB,cAAe,EAAE,AACnB,EACA,YAAe,CACb,EAAG,sUAIH,OAAQ,KACR,MAAO,KACP,eAAgB,EAAE,CAClB,cAAe,EAAE,AACnB,EACA,aAAgB,CACd,EAAG,gfAKH,OAAQ,EACR,MAAO,GACP,eAAgB,EAAE,CAClB,cAAe,EAAE,AACnB,EACA,eAAkB,CAChB,EAAG,mFACH,OAAQ,GACR,MAAQ,GACR,eAAgB,CAAE,EAAG,GAAI,CACzB,cAAe,CAAE,KAAM,GAAI,AAC7B,EACA,iBAAoB,CAClB,EAAG,sMAMH,OAAQ,GACR,MAAQ,KACR,eAAgB,CAAE,EAAG,GAAI,CACzB,cAAe,CAAE,KAAM,GAAI,AAC7B,EACA,iBAAoB,CAClB,EAAG,qWAKL,EACA,iBAAoB,CAClB,EAAG,0HAEL,EACA,iBAAoB,CAClB,EAAG,6NAGL,EACA,iBAAoB,CAClB,EAAG,gnCAYL,EACA,6BAAgC,CAC9B,EAAG,8DACL,EACA,kBAAqB,CACnB,EAAG,6yCAeL,EACA,uBAA0B,CACxB,EAAG,oOAGL,EACA,+BAAkC,CAChC,EAAG,6BACL,EACA,6BAAgC,CAC9B,EAAG,0DAGL,EACA,oBAAuB,CACrB,EAAG,oEACL,CACF,EASA,IAAI,CAAC,UAAU,CAAG,SAAoBqmB,CAAM,EAC1C,OAAO,IAAI,CAAC,OAAO,CAACA,EAAO,CAAC,CAAC,AAC/B,EAoDA,IAAI,CAAC,aAAa,CAAG,SAAuBA,CAAM,CAAEC,CAAK,EACvD,IAIIC,EAAIC,EAJJC,EAAU,IAAI,CAAC,OAAO,CAACJ,EAAO,AAM9BC,CAAAA,EAAM,MAAM,EACdC,EAAKD,EAAM,MAAM,CAAC,CAAC,CACnBE,EAAKF,EAAM,MAAM,CAAC,CAAC,GAEnBC,EAAKD,EAAM,cAAc,CAAGA,EAAM,QAAQ,CAAC,EAAE,CAC7CE,EAAKF,EAAM,eAAe,CAAGA,EAAM,QAAQ,CAAC,EAAE,EAGhD,IAAII,EAAc,CAAC,EACnB,GAAIJ,EAAM,QAAQ,CAAE,CAQlB,IAAK,IALDK,EAAc,AAACL,EAAM,eAAe,CAAGG,EAAQ,MAAM,CAAIH,EAAM,YAAY,CAC3EM,EAAa,AAACN,EAAM,cAAc,CAAGG,EAAQ,KAAK,CAAIH,EAAM,YAAY,CAInEO,EAAc,EAAGA,EAAcJ,EAAQ,cAAc,CAAC,MAAM,CAAEI,IACrEH,CAAW,CAAC,IAAMG,EAAY,CAAGJ,EAAQ,cAAc,CAACI,EAAY,CAAGF,EAIzE,IAAK,IAAIG,EAAa,EAAGA,EAAaL,EAAQ,aAAa,CAAC,MAAM,CAAEK,IAClEJ,CAAW,CAAC,IAAMI,EAAW,CAAGL,EAAQ,aAAa,CAACK,EAAW,CAAGF,CAExE,CAUA,OAPW,AAiCf,SAAgBnuB,CAAG,CAAEijB,CAAG,EACtB,OAAO7mB,OAAO4D,GAAK,OAAO,CAAC6H,EAAY,SAASymB,CAAG,CAAEvpB,CAAG,MAjBxCupB,EAAKvpB,EAAKke,EACtBsL,EAiBF,OAlBcD,EAkBEA,EAlBGvpB,EAkBEA,EAjBnBwpB,EADsBtL,EAkBEA,EAhB5Ble,EAAI,OAAO,CAAC+C,EAAkB,SAASwmB,CAAG,CAAEhqB,CAAI,CAAEkqB,CAAK,CAAEC,CAAU,CAAEC,CAAM,EACzEpqB,EAAOA,GAAQmqB,EACXF,IACEjqB,KAAQiqB,GACVA,CAAAA,EAAMA,CAAG,CAACjqB,EAAK,AAAD,EAEhB,AAAc,YAAd,OAAOiqB,GAAqBG,GAAWH,CAAAA,EAAMA,GAAI,EAErD,GACAA,EAAM,AAACA,CAAAA,AAAO,MAAPA,GAAeA,GAAOtL,EAAMqL,EAAMC,CAAE,EAAK,EAQhD,EACF,EApCMP,EAAQ,CAAC,CAAE,CACT,GAAIF,EACJ,GAAIC,EACJ,EAAGE,CACL,EAGJ,CACF,EkDxb8B,AAC9B,ECNe,CACb,YAAa,CACX,EACD,CACD,aAAc,CAAE,OAAQhlB,EAAc,AACxC,EFFG,AACH,EDyDE,EItDa,CACb,SAAU,CAAE,mBAAoB,oBAAqB,CACrD,YAAa,CCPA,CACb,SAAU,CAAE,oBAAqB,CACjC,kBAAmB,CAAE,OAAQ8B,EAAmB,AAClD,ECHe,CACb,SAAU,CAAE,UAAW,CACvB,QAAS,CAAE,OAAQiC,GAAS,AAC9B,EFOG,CACD,UAAW,CAAE,OAAQO,GAAW,CAChC,iBAAkB,CAAE,OAAQO,GAAkB,CAC9C,kBAAmB,CAAE,OAAQW,GAAmB,AAClD,EJ+CE,GO1Da,CACb,YAAa,CAAE,GCJF,CACb,SAAU,CAAE,gBAAiB,CAC7B,cAAe,CAAE,OAAQ2C,GAAe,AAC1C,ECHe,CACb,SAAU,CAAE,uBAAwB,CACpC,qBAAsB,CAAE,OAAQQ,GAAsB,AACxD,EFC0E,CACxE,SAAU,CAAE,uBAAwB,2BAA4B,qBAAsB,0BAA2B,CACjH,qBAAsB,CAAE,OAAQO,GAAsB,CACtD,mBAAoB,CAAE,OAAQY,GAAoB,CAClD,yBAA0B,CAAE,OAAQ6B,GAA0B,CAC9D,wBAAyB,CAAE,OAAQtB,GAAyB,AAC9D,EPqDC,CAGDqa,GAAO,SAAS,CAAC,iBAAiB,CAAG,CAAC,+DU/DlCgB,EAAoB,WACtB,GAAI,AAAkB,aAAlB,OAAOC,OAAwB,CACjC,GAAIA,OAAO,gBAAgB,CACzB,OAAOA,OAAO,gBAAgB,CAMhC,IAAIC,EAASD,OAAO,MAAM,CAC1B,GAAIC,EACF,MAAO,AAACA,CAAAA,EAAO,UAAU,EAAI,GAAMA,CAAAA,EAAO,WAAW,EAAI,EAE7D,CAEA,OAAO,CACT,IAEIC,EAAQ,CAEV,YAAa,SAASC,CAAM,EAC1B,IACIC,EADAnpB,EAAQ,EAAE,CAId,IADAkpB,EAAS,EAAE,CAAC,MAAM,CAACA,GACZA,EAAO,MAAM,EAEd,AAAiB,UAAjB,MADJC,CAAAA,EAAQD,EAAO,GAAG,EAAC,EAEjBlpB,EAAM,OAAO,CAAC,KAAK,CAACA,EAAOmpB,EAAM,KAAK,CAAC,OAC9B/hC,MAAM,OAAO,CAAC+hC,GACvBD,EAAO,IAAI,CAAC,KAAK,CAACA,EAAQC,GACjB,CAAC,SAAcD,IACxBlpB,EAAM,OAAO,CAAC,GAAKmpB,GAIvB,OAAOnpB,CACT,EAIA,SAAU,SAAS4c,CAAG,CAAE5c,CAAK,CAAEopB,CAAI,EACjC,IAII5hC,EAJA6hC,EAAQ,EAAE,CAAC,MAAM,CAACrpB,GAClBspB,EAAOD,EAAM,MAAM,CACnBE,EAAO3M,EAAI,IAAI,CACfniB,EAAQ,EAKZ,IAAKjT,EAAI,EAFTo1B,EAAI,IAAI,CAAGwM,EAAK,MAAM,CAEV5hC,EAAI8hC,EAAM,EAAE9hC,EACtBiT,EAAQ/S,KAAK,GAAG,CAACk1B,EAAI,WAAW,CAACyM,CAAK,CAAC7hC,EAAE,EAAE,KAAK,CAAEiT,GAKpD,OAFAmiB,EAAI,IAAI,CAAG2M,EAEJ,CACL,OAAQD,EAAOF,EAAK,UAAU,CAC9B,MAAO3uB,CACT,CACF,EAOA,MAAO,SAAS+uB,CAAG,CAAEpgC,CAAK,CAAEqgC,CAAG,EAC7B,OAAO/hC,KAAK,GAAG,CAAC8hC,EAAK9hC,KAAK,GAAG,CAAC0B,EAAOqgC,GACvC,EAOA,UAAW,SAASC,CAAE,CAAEC,CAAE,EACxB,IAEIniC,EAAG6G,EAAGi7B,EAAMr9B,EAFZs9B,EAAOG,EAAG,KAAK,GACfE,EAAU,EAAE,CAGhB,IAAKpiC,EAAI,EAAG8hC,EAAOK,EAAG,MAAM,CAAEniC,EAAI8hC,EAAM,EAAE9hC,EACxCyE,EAAI09B,CAAE,CAACniC,EAAE,CAGL6G,AAAM,KAFVA,CAAAA,EAAIk7B,EAAK,OAAO,CAACt9B,EAAC,EAGhB29B,EAAQ,IAAI,CAAC,CAAC39B,EAAG,EAAE,EAEnBs9B,EAAK,MAAM,CAACl7B,EAAG,GAInB,IAAK7G,EAAI,EAAG8hC,EAAOC,EAAK,MAAM,CAAE/hC,EAAI8hC,EAAM,EAAE9hC,EAC1CoiC,EAAQ,IAAI,CAAC,CAACL,CAAI,CAAC/hC,EAAE,CAAE,GAAG,EAG5B,OAAOoiC,CACT,EAKA,UAAW,SAAS39B,CAAC,EACnB,OAAOvE,KAAK,KAAK,CAACuE,EAAI68B,GAAoBA,CAC5C,CACF,EAEA,SAASe,EAAOh0B,CAAK,CAAEi0B,CAAM,EAC3B,IAAI5+B,EAAK4+B,EAAO,CAAC,CACb77B,EAAK67B,EAAO,CAAC,CAEjB,GAAI5+B,AAAO,OAAPA,EACF,MAAO,CAAC,EAAG,EAAG,EAAG,EAAE,EAErB,GAAI+C,AAAO,OAAPA,EACF,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,EAGpB,IAAIxD,EAAKoL,EAAM,CAAC,CAAG3K,EACfR,EAAKmL,EAAM,CAAC,CAAG5H,EACf87B,EAAKriC,KAAK,IAAI,CAAC+C,EAAKA,EAAKC,EAAKA,GAElC,MAAO,CACL,EAAGq/B,EAAKt/B,EAAKs/B,EAAK,EAClB,EAAGA,EAAKr/B,EAAKq/B,EAAK,EACpB,CACF,CAuDA,SAASC,EAAO7iC,CAAC,CAAEoD,CAAC,CAAEqQ,CAAI,EACxB,IAAI8tB,EAPS,EAoBb,OAXIvhC,EAAIyT,EAAK,IAAI,CACf8tB,GATS,EAUAvhC,EAAIyT,EAAK,KAAK,EACvB8tB,CAAAA,GAVU,CAUG,EAEXn+B,EAAIqQ,EAAK,GAAG,CACd8tB,GAXQ,EAYCn+B,EAAIqQ,EAAK,MAAM,EACxB8tB,CAAAA,GAdW,CAcG,EAGTA,CACT,CAsDA,SAASuB,EAAUC,CAAK,CAAEjxB,CAAM,EAC9B,IAEI9R,EAAGoD,EAFH4/B,EAASlxB,EAAO,MAAM,CACtBmxB,EAAUF,EAkBd,OAfIjxB,EAAO,KAAK,EACdmxB,CAAAA,EAAUC,AA1Dd,SAAiBD,CAAO,CAAEE,CAAI,EAU5B,IATA,IAMIx4B,EAAG3K,EAAGoD,EANNW,EAAKk/B,EAAQ,EAAE,CACfn8B,EAAKm8B,EAAQ,EAAE,CACfj/B,EAAKi/B,EAAQ,EAAE,CACfl8B,EAAKk8B,EAAQ,EAAE,CACfG,EAAKP,EAAO9+B,EAAI+C,EAAIq8B,GACpBn6B,EAAK65B,EAAO7+B,EAAI+C,EAAIo8B,GAKlB,AAAEC,EAAKp6B,IAAQo6B,CAAAA,EAAKp6B,CAAC,GADd,EASP2B,AAtCI,EAoCRA,CAAAA,EAAIy4B,GAAMp6B,CAAC,GAGThJ,EAAI+D,EAAK,AAACC,CAAAA,EAAKD,CAAC,EAAMo/B,CAAAA,EAAK,GAAG,CAAGr8B,CAAC,EAAMC,CAAAA,EAAKD,CAAC,EAC9C1D,EAAI+/B,EAAK,GAAG,EACHx4B,AA1CA,EA0CAA,GACT3K,EAAI+D,EAAK,AAACC,CAAAA,EAAKD,CAAC,EAAMo/B,CAAAA,EAAK,MAAM,CAAGr8B,CAAC,EAAMC,CAAAA,EAAKD,CAAC,EACjD1D,EAAI+/B,EAAK,MAAM,EACNx4B,AA9CD,EA8CCA,GACTvH,EAAI0D,EAAK,AAACC,CAAAA,EAAKD,CAAC,EAAMq8B,CAAAA,EAAK,KAAK,CAAGp/B,CAAC,EAAMC,CAAAA,EAAKD,CAAC,EAChD/D,EAAImjC,EAAK,KAAK,EAjDP,EAkDEx4B,IACTvH,EAAI0D,EAAK,AAACC,CAAAA,EAAKD,CAAC,EAAMq8B,CAAAA,EAAK,IAAI,CAAGp/B,CAAC,EAAMC,CAAAA,EAAKD,CAAC,EAC/C/D,EAAImjC,EAAK,IAAI,EAGXx4B,IAAMy4B,EAGRA,EAAKP,EAFL9+B,EAAK/D,EACL8G,EAAK1D,EACe+/B,GAIpBn6B,EAAK65B,EAFL7+B,EAAKhE,EACL+G,EAAK3D,EACe+/B,EAExB,CAEA,MAAO,CACL,GAAIp/B,EACJ,GAAIC,EACJ,GAAI8C,EACJ,GAAIC,CACN,CACF,EAQsBk8B,EAASnxB,EAAO,IAAI,GAGpCkxB,AAAW,UAAXA,GACFhjC,EAAIijC,EAAQ,EAAE,CACd7/B,EAAI6/B,EAAQ,EAAE,EACLD,AAAW,QAAXA,GACThjC,EAAIijC,EAAQ,EAAE,CACd7/B,EAAI6/B,EAAQ,EAAE,GAEdjjC,EAAI,AAACijC,CAAAA,EAAQ,EAAE,CAAGA,EAAQ,EAAE,AAAD,EAAK,EAChC7/B,EAAI,AAAC6/B,CAAAA,EAAQ,EAAE,CAAGA,EAAQ,EAAE,AAAD,EAAK,GAG3BI,AA9IT,SAAiBrjC,CAAC,CAAEoD,CAAC,CAAEkgC,CAAE,CAAEC,CAAE,CAAExuB,CAAK,EAClC,OAAQA,GACR,IAAK,SACHuuB,EAAKC,EAAK,EACV,KACF,KAAK,SACHD,EAAK,EACLC,EAAK,EACL,KACF,KAAK,QACHD,EAAK,EACLC,EAAK,EACL,KACF,KAAK,OACHD,EAAK,GACLC,EAAK,EACL,KACF,KAAK,MACHD,EAAK,EACLC,EAAK,GACL,KACF,KAAK,QACHD,EAAK,CAACA,EACNC,EAAK,CAACA,EACN,KACF,KAAK,MAEH,KACF,SAEExuB,GAAUxU,KAAK,EAAE,CAAG,IACpB+iC,EAAK/iC,KAAK,GAAG,CAACwU,GACdwuB,EAAKhjC,KAAK,GAAG,CAACwU,EAEhB,CAEA,MAAO,CACL,EAAG/U,EACH,EAAGoD,EACH,GAAIkgC,EACJ,GAAIC,CACN,CACF,EAoGiBvjC,EAAGoD,EAAG2/B,EAAM,EAAE,CAAEA,EAAM,EAAE,CAAEjxB,EAAO,KAAK,CACvD,CAEA,IAAI0xB,EAAc,CAChB,IAAK,SAASrf,CAAE,CAAErS,CAAM,EACtB,IAAIP,EAAQ,AAAC4S,CAAAA,EAAG,UAAU,CAAGA,EAAG,QAAQ,AAAD,EAAK,EACxCmf,EAAK/iC,KAAK,GAAG,CAACgR,GACdgyB,EAAKhjC,KAAK,GAAG,CAACgR,GACd6xB,EAAKjf,EAAG,WAAW,CACnBnb,EAAKmb,EAAG,WAAW,CAEvB,OAAO2e,EAAU,CACf,GAAI3e,EAAG,CAAC,CAAGmf,EAAKF,EAChB,GAAIjf,EAAG,CAAC,CAAGof,EAAKH,EAChB,GAAIjf,EAAG,CAAC,CAAGmf,EAAKt6B,EAChB,GAAImb,EAAG,CAAC,CAAGof,EAAKv6B,EAChB,GAAIs6B,EACJ,GAAIC,CACN,EAAGzxB,EACL,EAEA,MAAO,SAASqS,CAAE,CAAErS,CAAM,EACxB,IAAIhN,EAAI49B,EAAOve,EAAIrS,EAAO,MAAM,EAC5B2xB,EAAK3+B,EAAE,CAAC,CAAGqf,EAAG,OAAO,CAAC,MAAM,CAC5Buf,EAAK5+B,EAAE,CAAC,CAAGqf,EAAG,OAAO,CAAC,MAAM,CAEhC,OAAO2e,EAAU,CACf,GAAI3e,EAAG,CAAC,CAAGsf,EACX,GAAItf,EAAG,CAAC,CAAGuf,EACX,GAAIvf,EAAG,CAAC,CAAGsf,EACX,GAAItf,EAAG,CAAC,CAAGuf,EACX,GAAI5+B,EAAE,CAAC,CACP,GAAIA,EAAE,CAAC,AACT,EAAGgN,EACL,EAEA,IAAK,SAASqS,CAAE,CAAErS,CAAM,EACtB,IAAIhN,EAAI49B,EAAOve,EAAIrS,EAAO,MAAM,EAC5B9R,EAAImkB,EAAG,CAAC,CACR/gB,EAAI+gB,EAAG,CAAC,CACRwf,EAAK,EACLC,EAAK,EAUT,OARIzf,EAAG,UAAU,EACfnkB,EAAIO,KAAK,GAAG,CAAC4jB,EAAG,CAAC,CAAEA,EAAG,IAAI,EAC1Bwf,EAAKpjC,KAAK,GAAG,CAAC4jB,EAAG,IAAI,CAAGA,EAAG,CAAC,IAE5B/gB,EAAI7C,KAAK,GAAG,CAAC4jB,EAAG,CAAC,CAAEA,EAAG,IAAI,EAC1Byf,EAAKrjC,KAAK,GAAG,CAAC4jB,EAAG,IAAI,CAAGA,EAAG,CAAC,GAGvB2e,EAAU,CACf,GAAI9iC,EACJ,GAAIoD,EAAIwgC,EACR,GAAI5jC,EAAI2jC,EACR,GAAIvgC,EACJ,GAAI0B,EAAE,CAAC,CACP,GAAIA,EAAE,CAAC,AACT,EAAGgN,EACL,EAEA,SAAU,SAASqS,CAAE,CAAErS,CAAM,EAC3B,IAAIhN,EAAI49B,EAAOve,EAAIrS,EAAO,MAAM,EAEhC,OAAOgxB,EAAU,CACf,GAAI3e,EAAG,CAAC,CACR,GAAIA,EAAG,CAAC,CACR,GAAIA,EAAG,CAAC,CACR,GAAIA,EAAG,CAAC,CACR,GAAIrf,EAAE,CAAC,CACP,GAAIA,EAAE,CAAC,AACT,EAAGgN,EACL,CACF,EAEI+xB,EAAY/B,EAAM,SAAS,CAqN3BgC,EAAQ,SAAShyB,CAAM,CAAE2jB,CAAG,CAAEtR,CAAE,CAAEpiB,CAAK,EAGzCgiC,AAFS,IAAI,CAEV,OAAO,CAAGjyB,EACbiyB,AAHS,IAAI,CAGV,MAAM,CAAGhiC,EACZgiC,AAJS,IAAI,CAIV,MAAM,CAAG,KACZA,AALS,IAAI,CAKV,MAAM,CAAG,KACZA,AANS,IAAI,CAMV,IAAI,CAAGtO,EACVsO,AAPS,IAAI,CAOV,GAAG,CAAG5f,CACX,EAEA,SAAM2f,EAAM,SAAS,CAAE,CAIrB,UAAW,SAASE,CAAO,CAAEnrB,CAAK,CAAE/G,CAAM,CAAEtE,CAAO,EAEjD,IA3LmB2W,EA2LfpiB,EAAQgiC,AADH,IAAI,CACE,MAAM,CACjB9B,EAAO,SAAO,SAAQ,CAACnwB,EAAO,IAAI,CAAE,CAAC,EAAE,CAAEtE,EAASzL,IAClDkiC,EAAQ,SAAQ,CAACnyB,EAAO,KAAK,CAAE,UAAgB,CAAC,CAAEtE,EAASzL,GAE/D,MAAO,CACL,MAAO,SAAQ,CAAC+P,EAAO,KAAK,CAAE,SAAS,CAAEtE,EAASzL,GAClD,OAAQ,SAAQ,CAAC+P,EAAO,MAAM,CAAE,SAAS,CAAEtE,EAASzL,GACpD,KAAMyL,EAAQ,KAAK,CAAC,SAAS,CAC7B,gBAAiB,SAAQ,CAACsE,EAAO,eAAe,CAAE,KAAK,CAAEtE,EAASzL,GAClE,YAAa,SAAQ,CAAC+P,EAAO,WAAW,CAAE,KAAK,CAAEtE,EAASzL,GAC1D,aAAc,SAAQ,CAAC+P,EAAO,YAAY,CAAE,EAAE,CAAEtE,EAASzL,GACzD,YAAa,SAAQ,CAAC+P,EAAO,WAAW,CAAE,EAAE,CAAEtE,EAASzL,GACvD,MAAO,SAAQ,CAAC+P,EAAO,KAAK,CAAE,GAAM,CAAEtE,EAASzL,GAC/C,KAAM,SAAQ,CAAC+P,EAAO,IAAI,CAAE,GAAM,CAAEtE,EAASzL,GAC7C,MAAOkiC,EACP,QAASD,EACT,KAAM/B,EACN,MAAOppB,EACP,OAAQ,SAAQ,CAAC/G,EAAO,MAAM,CAAE,EAAE,CAAEtE,EAASzL,GAC7C,QAAS,SAAQ,CAAC+P,EAAO,OAAO,CAAE,EAAE,CAAEtE,EAASzL,GAC/C,OAAQmiC,AAhOd,SAAwB/f,CAAE,CAAE3W,CAAO,EACjC,IAAImE,EAAQnE,EAAQ,KAAK,CAAC,cAAc,CAACA,EAAQ,YAAY,EAAE,MAAM,CAErE,GAAI,CAACmE,EACH,OAAO,KAGT,GAAIA,AAAkB3Q,KAAAA,IAAlB2Q,EAAM,OAAO,EAAkBA,AAAkB3Q,KAAAA,IAAlB2Q,EAAM,OAAO,CAC9C,MAAO,CAAC,EAAGA,EAAM,OAAO,CAAE,EAAGA,EAAM,OAAO,EAG5C,IAAIwyB,EAAQxyB,EAAM,YAAY,GAC9B,OAAOwS,EAAG,UAAU,CAClB,CAAC,EAAGggB,EAAO,EAAG,IAAI,EAClB,CAAC,EAAG,KAAM,EAAGA,CAAK,CACtB,EAiN6BJ,AArBhB,IAAI,CAqBe,GAAG,CAAEv2B,GAC/B,QAAS,SAAU,SAAQ,CAACsE,EAAO,OAAO,CAAE,EAAE,CAAEtE,EAASzL,IACzD,WAhNJ,AAAIoiB,CADiBA,EAiNS4f,AAvBnB,IAAI,CAuBkB,GAAG,YAhNlB,IAAU,CACnBP,EAAY,GAAG,CAEpBrf,aAAc,IAAY,CACrBqf,EAAY,KAAK,CAEtBrf,aAAc,IAAU,CACnBqf,EAAY,GAAG,CAEjBA,EAAY,QAAQ,CAwMvB,SAAU,SAAQ,CAAC1xB,EAAO,QAAQ,CAAE,EAAE,CAAEtE,EAASzL,GAAUxB,CAAAA,KAAK,EAAE,CAAG,GAAE,EACvE,KAAMuhC,EAAM,QAAQ,CAACiC,AAzBd,IAAI,CAyBa,IAAI,CAAElrB,EAAOopB,GACrC,UAAW,SAAQ,CAACnwB,EAAO,SAAS,CAAE,QAAQ,CAAEtE,EAASzL,GACzD,eAAgB,SAAQ,CAAC+P,EAAO,cAAc,CAAE,EAAE,CAAEtE,EAASzL,GAC7D,gBAAiB,SAAQ,CAAC+P,EAAO,eAAe,CAAEmyB,EAAM,CAAEz2B,EAASzL,GACnE,gBAAiB,SAAQ,CAAC+P,EAAO,eAAe,CAAEmyB,EAAM,CAAEz2B,EAASzL,GACnE,gBAAiB,SAAQ,CAAC+P,EAAO,eAAe,CAAE,EAAE,CAAEtE,EAASzL,EACjE,CACF,EAEA,OAAQ,SAASyL,CAAO,EAEtB,IAIIvL,EAAOgP,EAAO4H,EA3QC2V,EACjB4V,EACAt5B,EACAu5B,EACAC,EACA7+B,EACA8+B,EAiQE/V,EAAQ,KACRgW,EAAQ,KACRziC,EAAQgiC,AAHH,IAAI,CAGE,MAAM,CACjBjyB,EAASiyB,AAJJ,IAAI,CAIG,OAAO,CAKnBC,EAAU,SAAQ,CAAClyB,EAAO,OAAO,CAAE,GAAK,CAAEtE,EAASzL,GAEvD,GAAIiiC,IACF/hC,EAAQuL,EAAQ,OAAO,CAAC,IAAI,CAACzL,EAAM,CACnCkP,EAAQ,SAAe,SAASa,EAAO,SAAS,CAAE,CAAC7P,EAAOuL,EAAQ,EAAGvL,GAGjE4W,AAFJA,CAAAA,EAAQ,SAAc5H,GAAS,EAAE,CAAG6wB,EAAM,WAAW,CAAC7wB,EAAK,EAEjD,MAAM,EAAE,EArRlBmzB,EAAc5V,CADGA,EAuRfA,EAAQuV,AAjBH,IAAI,CAiBE,SAAS,CAACC,EAASnrB,EAAO/G,EAAQtE,IAtR3B,WAAW,EAAI,EACnC1C,EAAU0jB,EAAM,OAAO,CACvB6V,EAAK7V,EAAM,IAAI,CAAC,MAAM,CAEtB/oB,EAAK,EADL6+B,EAAK9V,EAAM,IAAI,CAAC,KAAK,EACV,EACX+V,EAAK,CAACF,EAAK,EAkRTG,EAhRC,CACL,MAAO,CACL,EAAG/+B,EAAKqF,EAAQ,IAAI,CAAGs5B,EACvB,EAAGG,EAAKz5B,EAAQ,GAAG,CAAGs5B,EACtB,EAAGE,EAAKx5B,EAAQ,KAAK,CAAGs5B,AAAc,EAAdA,EACxB,EAAGC,EAAKv5B,EAAQ,MAAM,CAAGs5B,AAAc,EAAdA,CAC3B,EACA,KAAM,CACJ,EAAG3+B,EACH,EAAG8+B,EACH,EAAGD,EACH,EAAGD,CACL,CACF,CAoQI,CAGFN,AAtBS,IAAI,CAsBV,MAAM,CAAGvV,EACZuV,AAvBS,IAAI,CAuBV,MAAM,CAAGS,CACd,EAEA,SAAU,WACR,OAAO,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAG,CAAC,CAC5C,EAEA,SAAU,WACR,OAAO,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAG,CAC9C,EAEA,QAAS,WACP,OAAO,IAAI,CAAC,MAAM,EAAI,IAAI,CAAC,MAAM,CAAC,OAAO,AAC3C,EAEA,MAAO,WACL,OAAO,IAAI,CAAC,MAAM,AACpB,EAEA,KAAM,SAASC,CAAK,CAAEna,CAAM,EAE1B,IAGI6Y,EAHA1N,EAAMgP,EAAM,GAAG,CACfjW,EAAQuV,AAFH,IAAI,CAEE,MAAM,CACjBS,EAAQT,AAHH,IAAI,CAGE,MAAM,CAGrB,IAAI,CAAC,IAAI,CAAC,OAAO,GAIjBtO,EAAI,IAAI,GAEJjH,EAAM,IAAI,GACZ2U,EAAO3U,EAAM,IAAI,CACjBiH,EAAI,SAAS,GACbA,EAAI,IAAI,CACN0N,EAAK,IAAI,CACTA,EAAK,GAAG,CACRA,EAAK,KAAK,CAAGA,EAAK,IAAI,CACtBA,EAAK,MAAM,CAAGA,EAAK,GAAG,EACxB1N,EAAI,IAAI,IAGVA,EAAI,WAAW,CAAGqM,EAAM,KAAK,CAAC,EAAGtT,EAAM,OAAO,CAAE,GAChDiH,EAAI,SAAS,CAACoO,EAAUvZ,EAAO,CAAC,EAAGuZ,EAAUvZ,EAAO,CAAC,GACrDmL,EAAI,MAAM,CAACjH,EAAM,QAAQ,GAEzBkW,AArPJ,SAAmBjP,CAAG,CAAEhiB,CAAI,CAAE+a,CAAK,EACjC,IAAImW,EAAUnW,EAAM,eAAe,CAC/BoW,EAAcpW,EAAM,WAAW,CAC/B4V,EAAc5V,EAAM,WAAW,CAEnC,GAAI,EAACmW,GAAY,EAACC,IAAe,CAACR,EAIlC3O,EAAI,SAAS,IAEboP,AA5CF,SAAyBpP,CAAG,CAAEz1B,CAAC,CAAEoD,CAAC,CAAEyC,CAAC,CAAEi/B,CAAC,CAAEj6B,CAAM,EAC9C,IAAIk6B,EAAUxkC,KAAK,EAAE,CAAG,EAExB,GAAIsK,EAAQ,CACV,IAAIF,EAAIpK,KAAK,GAAG,CAACsK,EAAQi6B,EAAI,EAAGj/B,EAAI,GAChClC,EAAO3D,EAAI2K,EACXuY,EAAM9f,EAAIuH,EACV9G,EAAQ7D,EAAI6F,EAAI8E,EAChBpF,EAASnC,EAAI0hC,EAAIn6B,EAErB8qB,EAAI,MAAM,CAACz1B,EAAGkjB,GACVvf,EAAOE,GAASqf,EAAM3d,GACxBkwB,EAAI,GAAG,CAAC9xB,EAAMuf,EAAKvY,EAAG,CAACpK,KAAK,EAAE,CAAE,CAACwkC,GACjCtP,EAAI,GAAG,CAAC5xB,EAAOqf,EAAKvY,EAAG,CAACo6B,EAAS,GACjCtP,EAAI,GAAG,CAAC5xB,EAAO0B,EAAQoF,EAAG,EAAGo6B,GAC7BtP,EAAI,GAAG,CAAC9xB,EAAM4B,EAAQoF,EAAGo6B,EAASxkC,KAAK,EAAE,GAChCoD,EAAOE,GAChB4xB,EAAI,MAAM,CAAC9xB,EAAMP,GACjBqyB,EAAI,GAAG,CAAC5xB,EAAOqf,EAAKvY,EAAG,CAACo6B,EAASA,GACjCtP,EAAI,GAAG,CAAC9xB,EAAMuf,EAAKvY,EAAGo6B,EAASxkC,KAAK,EAAE,CAAGwkC,IAChC7hB,EAAM3d,GACfkwB,EAAI,GAAG,CAAC9xB,EAAMuf,EAAKvY,EAAG,CAACpK,KAAK,EAAE,CAAE,GAChCk1B,EAAI,GAAG,CAAC9xB,EAAM4B,EAAQoF,EAAG,EAAGpK,KAAK,EAAE,GAEnCk1B,EAAI,GAAG,CAAC9xB,EAAMuf,EAAKvY,EAAG,CAACpK,KAAK,EAAE,CAAEA,KAAK,EAAE,EAEzCk1B,EAAI,SAAS,GACbA,EAAI,MAAM,CAACz1B,EAAGoD,EAChB,MACEqyB,EAAI,IAAI,CAACz1B,EAAGoD,EAAGyC,EAAGi/B,EAEtB,EAcIrP,EACAoO,EAAUpwB,EAAK,CAAC,EAAI2wB,EAAc,EAClCP,EAAUpwB,EAAK,CAAC,EAAI2wB,EAAc,EAClCP,EAAUpwB,EAAK,CAAC,EAAI2wB,EACpBP,EAAUpwB,EAAK,CAAC,EAAI2wB,EACpB5V,EAAM,YAAY,EAEpBiH,EAAI,SAAS,GAETkP,IACFlP,EAAI,SAAS,CAAGkP,EAChBlP,EAAI,IAAI,IAGNmP,GAAeR,IACjB3O,EAAI,WAAW,CAAGmP,EAClBnP,EAAI,SAAS,CAAG2O,EAChB3O,EAAI,QAAQ,CAAG,QACfA,EAAI,MAAM,GAEd,EAqNcA,EAAK+O,EAAM,KAAK,CAAEhW,IAC5BwW,AAtKJ,SAAkBvP,CAAG,CAAE5c,CAAK,CAAEpF,CAAI,CAAE+a,CAAK,EACvC,IA/CoB/a,EAAMsB,EACtB+vB,EACAj/B,EACA7F,EACAoD,EAmDA/C,EARA0U,EAAQyZ,EAAM,SAAS,CACvByV,EAAQzV,EAAM,KAAK,CACnByW,EAAS,CAAC,CAAChB,EACXhC,EAAOzT,EAAM,IAAI,CACjB2T,EAAOtpB,EAAM,MAAM,CACnBqsB,EAAc1W,EAAM,eAAe,CACnC2W,EAAc3W,EAAM,eAAe,CACnC4W,EAAUF,GAAeC,EAG7B,GAAI,EAAChD,GAAS,GAAC8C,IAAU,CAACG,CAAM,EAsBhC,IAAK/kC,AA/EeoT,EA8DAA,EA9DMsB,EA8DAA,EA7DtB+vB,EAAI7C,AA6DyBA,EA7DpB,UAAU,CACnBp8B,EAAI4N,EAAK,CAAC,CACVzT,EAAIyT,EAAK,CAAC,CACVrQ,EAAIqQ,EAAK,CAAC,CAAGqxB,EAAI,EAEjB/vB,AAAU,WAAVA,EACF/U,GAAK6F,EAAI,EACAkP,CAAAA,AAAU,QAAVA,GAAmBA,AAAU,UAAVA,CAAgB,GAC5C/U,CAAAA,GAAK6F,CAAAA,EAqDP4N,EAlDO,CACL,EAAGqxB,EACH,EAAGj/B,EACH,EAAG7F,EACH,EAAGoD,CACL,EA+CAqyB,EAAI,IAAI,CAAGwM,EAAK,MAAM,CACtBxM,EAAI,SAAS,CAAG1gB,EAChB0gB,EAAI,YAAY,CAAG,SACnBA,EAAI,UAAU,CAAGjH,EAAM,cAAc,CACrCiH,EAAI,WAAW,CAAGjH,EAAM,eAAe,CAEnCyW,GACFxP,CAAAA,EAAI,SAAS,CAAGwO,CAAI,EAElBmB,IACF3P,EAAI,QAAQ,CAAG,QACfA,EAAI,SAAS,CAAG0P,EAChB1P,EAAI,WAAW,CAAGyP,GAGf7kC,EAAI,EAAG8hC,EAAOtpB,EAAM,MAAM,CAAExY,EAAI8hC,EAAM,EAAE9hC,GAC3CglC,AA5DJ,SAAsB5P,CAAG,CAAE5gB,CAAI,CAAEywB,CAAG,EAClC,IAAIC,EAAS9P,EAAI,UAAU,CACvB2P,EAAUE,EAAI,OAAO,CACrBtlC,EAAI6jC,EAAUyB,EAAI,CAAC,EACnBliC,EAAIygC,EAAUyB,EAAI,CAAC,EACnBz/B,EAAIg+B,EAAUyB,EAAI,CAAC,EAEnBF,GACF3P,EAAI,UAAU,CAAC5gB,EAAM7U,EAAGoD,EAAGyC,GAGzBy/B,EAAI,MAAM,GACRC,GAAUH,GAGZ3P,CAAAA,EAAI,UAAU,CAAG,GAGnBA,EAAI,QAAQ,CAAC5gB,EAAM7U,EAAGoD,EAAGyC,GAErB0/B,GAAUH,GACZ3P,CAAAA,EAAI,UAAU,CAAG8P,CAAK,EAG5B,EAoCiB9P,EAAK5c,CAAK,CAACxY,EAAE,CAAE,CAC1B,QAAS+kC,EACT,OAAQH,EACR,EAAGxxB,EAAK,CAAC,CACT,EAAGA,EAAK,CAAC,CACT,EAAGA,EAAK,CAAC,CAAGA,EAAK,CAAC,CAAGpT,CACvB,EAEJ,EA4Hao1B,EAAKjH,EAAM,KAAK,CAAEgW,EAAM,IAAI,CAAEhW,GAEvCiH,EAAI,OAAO,EACb,CACF,GAEA,IAAI+P,EAAcC,OAAO,gBAAgB,EAAI,kBACzCC,EAAcD,OAAO,gBAAgB,EAAI,iBAE7C,SAASE,EAAQj3B,CAAK,CAAE4b,CAAM,CAAE/Y,CAAK,EACnC,IAAIq0B,EAAMrlC,KAAK,GAAG,CAACgR,GACfs0B,EAAMtlC,KAAK,GAAG,CAACgR,GACf0G,EAAKqS,EAAO,CAAC,CACbpS,EAAKoS,EAAO,CAAC,CAEjB,MAAO,CACL,EAAGrS,EAAK2tB,EAAOl3B,CAAAA,EAAM,CAAC,CAAGuJ,CAAC,EAAK4tB,EAAOn3B,CAAAA,EAAM,CAAC,CAAGwJ,CAAC,EACjD,EAAGA,EAAK2tB,EAAOn3B,CAAAA,EAAM,CAAC,CAAGuJ,CAAC,EAAK2tB,EAAOl3B,CAAAA,EAAM,CAAC,CAAGwJ,CAAC,CACnD,CACF,CAEA,SAAS4tB,EAAU52B,CAAM,CAAE62B,CAAI,EAC7B,IAGI1lC,EAAG2lC,EAAI1C,EAAIC,EAAI0C,EAHf5D,EAAMqD,EACNpD,EAAMkD,EACN7C,EAASoD,EAAK,MAAM,CAGxB,IAAK1lC,EAAI,EAAGA,EAAI6O,EAAO,MAAM,CAAE,EAAE7O,EAE/BijC,EAAK0C,AADLA,CAAAA,EAAK92B,CAAM,CAAC7O,EAAE,AAAD,EACL,CAAC,CAAGsiC,EAAO,CAAC,CACpBY,EAAKyC,EAAG,CAAC,CAAGrD,EAAO,CAAC,CAEpBN,EAAM9hC,KAAK,GAAG,CAAC8hC,EADf4D,EAAKF,EAAK,EAAE,CAAGzC,EAAKyC,EAAK,EAAE,CAAGxC,GAE9BjB,EAAM/hC,KAAK,GAAG,CAAC+hC,EAAK2D,GAGtB,MAAO,CACL,IAAK5D,EACL,IAAKC,CACP,CACF,CAEA,SAAS4D,EAAOC,CAAE,CAAEz2B,CAAE,EACpB,IAAI4zB,EAAK5zB,EAAG,CAAC,CAAGy2B,EAAG,CAAC,CAChB5C,EAAK7zB,EAAG,CAAC,CAAGy2B,EAAG,CAAC,CAChBvD,EAAKriC,KAAK,IAAI,CAAC+iC,EAAKA,EAAKC,EAAKA,GAElC,MAAO,CACL,GAAI,AAAC7zB,CAAAA,EAAG,CAAC,CAAGy2B,EAAG,CAAC,AAAD,EAAKvD,EACpB,GAAI,AAAClzB,CAAAA,EAAG,CAAC,CAAGy2B,EAAG,CAAC,AAAD,EAAKvD,EACpB,OAAQuD,EACR,GAAIvD,CACN,CACF,CAEA,IAAIwD,EAAS,WACX,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,KAAK,CAAG,CACX,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,CACL,CACF,EAoFA,SAASnF,EAAY9c,CAAE,CAAEqK,CAAK,CAAE6X,CAAQ,EACtC,IAAI33B,EAAQ8f,EAAM,UAAU,CAACrK,EAAIqK,GAC7B8U,EAAK50B,EAAM,EAAE,CACb60B,EAAK70B,EAAM,EAAE,CAEjB,GAAI,CAAC40B,GAAM,CAACC,EAEV,MAAO,CAAC,EAAG70B,EAAM,CAAC,CAAE,EAAGA,EAAM,CAAC,EAGhC,IAAI7I,EAAIwgC,EAAS,CAAC,CACdvB,EAAIuB,EAAS,CAAC,CAGdC,EAAW9X,EAAM,QAAQ,CACzBlrB,EAAK/C,KAAK,GAAG,CAACsF,EAAI,EAAItF,KAAK,GAAG,CAAC+lC,IAAa/lC,KAAK,GAAG,CAACukC,EAAI,EAAIvkC,KAAK,GAAG,CAAC+lC,IACtE/iC,EAAKhD,KAAK,GAAG,CAACsF,EAAI,EAAItF,KAAK,GAAG,CAAC+lC,IAAa/lC,KAAK,GAAG,CAACukC,EAAI,EAAIvkC,KAAK,GAAG,CAAC+lC,IAKtEC,EAAK,EAAIhmC,KAAK,GAAG,CAACA,KAAK,GAAG,CAAC+iC,GAAK/iC,KAAK,GAAG,CAACgjC,IAQ7C,OAPAjgC,GAAMggC,EAAKiD,EACXhjC,GAAMggC,EAAKgD,EAGXjjC,GAAMkrB,EAAM,MAAM,CAAG8U,EACrB//B,GAAMirB,EAAM,MAAM,CAAG+U,EAEd,CACL,EAAG70B,EAAM,CAAC,CAAGpL,EACb,EAAGoL,EAAM,CAAC,CAAGnL,CACf,CACF,CAnHA,SAAM6iC,EAAO,SAAS,CAAE,CACtB,OAAQ,WACN,IAAIz7B,EAAI,IAAI,CAAC,KAAK,CAClB,MAAO,CACL,EAAGA,EAAE,CAAC,CAAGA,EAAE,CAAC,CAAG,EACf,EAAGA,EAAE,CAAC,CAAGA,EAAE,CAAC,CAAG,CACjB,CACF,EAEA,OAAQ,SAAS2f,CAAM,CAAE7W,CAAI,CAAE6yB,CAAQ,EACrC,IAAI,CAAC,SAAS,CAAGA,EACjB,IAAI,CAAC,KAAK,CAAG,CACX,EAAG7yB,EAAK,CAAC,CAAG6W,EAAO,CAAC,CACpB,EAAG7W,EAAK,CAAC,CAAG6W,EAAO,CAAC,CACpB,EAAG7W,EAAK,CAAC,CACT,EAAGA,EAAK,CAAC,AACX,CACF,EAEA,SAAU,SAAS/E,CAAK,EAGtB,IAAI+E,EAAOswB,AAFF,IAAI,CAEC,KAAK,CAInB,MAAO,CAAEr1B,CAAAA,AAFTA,CAAAA,EAAQi3B,EAAQj3B,EAAOq1B,AAJd,IAAI,CAIa,MAAM,GAAI,CAACA,AAJ5B,IAAI,CAI2B,SAAS,GAElC,CAAC,CAAGtwB,EAAK,CAAC,CALZ,GAMR/E,EAAM,CAAC,CAAG+E,EAAK,CAAC,CANR,GAOR/E,EAAM,CAAC,CAAG+E,EAAK,CAAC,CAAGA,EAAK,CAAC,CAAG+yB,GAC5B93B,EAAM,CAAC,CAAG+E,EAAK,CAAC,CAAGA,EAAK,CAAC,CAAG+yB,CAAS,CAC5C,EAIA,WAAY,SAASC,CAAK,EACxB,IAMIpmC,EAAGqmC,EAAKC,EANRvD,EAAK,IAAI,CAAC,OAAO,GACjBp6B,EAAKy9B,EAAM,OAAO,GAClBG,EAAO,CACTV,EAAO9C,CAAE,CAAC,EAAE,CAAEA,CAAE,CAAC,EAAE,EACnB8C,EAAO9C,CAAE,CAAC,EAAE,CAAEA,CAAE,CAAC,EAAE,EACpB,CAYD,IATI,IAAI,CAAC,SAAS,GAAKqD,EAAM,SAAS,EAGpCG,EAAK,IAAI,CACPV,EAAOl9B,CAAE,CAAC,EAAE,CAAEA,CAAE,CAAC,EAAE,EACnBk9B,EAAOl9B,CAAE,CAAC,EAAE,CAAEA,CAAE,CAAC,EAAE,GAIlB3I,EAAI,EAAGA,EAAIumC,EAAK,MAAM,CAAE,EAAEvmC,EAI7B,GAHAqmC,EAAMZ,EAAU1C,EAAIwD,CAAI,CAACvmC,EAAE,EAC3BsmC,EAAMb,EAAU98B,EAAI49B,CAAI,CAACvmC,EAAE,EAEvBqmC,EAAI,GAAG,CAAGC,EAAI,GAAG,EAAIA,EAAI,GAAG,CAAGD,EAAI,GAAG,CACxC,MAAO,GAIX,MAAO,EACT,EAKA,QAAS,WAEP,IAAIjzB,EAAOswB,AADF,IAAI,CACC,KAAK,CACfxyB,EAAQwyB,AAFH,IAAI,CAEE,SAAS,CACpBzZ,EAASyZ,AAHJ,IAAI,CAGG,MAAM,GAEtB,MAAO,CACL4B,EAAQ,CAAC,EAAGlyB,EAAK,CAAC,CAAE,EAAGA,EAAK,CAAC,EAAG6W,EAAQ/Y,GACxCo0B,EAAQ,CAAC,EAAGlyB,EAAK,CAAC,CAAGA,EAAK,CAAC,CAAE,EAAGA,EAAK,CAAC,EAAG6W,EAAQ/Y,GACjDo0B,EAAQ,CAAC,EAAGlyB,EAAK,CAAC,CAAGA,EAAK,CAAC,CAAE,EAAGA,EAAK,CAAC,CAAGA,EAAK,CAAC,EAAG6W,EAAQ/Y,GAC1Do0B,EAAQ,CAAC,EAAGlyB,EAAK,CAAC,CAAE,EAAGA,EAAK,CAAC,CAAGA,EAAK,CAAC,EAAG6W,EAAQ/Y,GAClD,AACH,CACF,GA8FA,IAAIs1B,EAAS,CACX,QAAS,SAASC,CAAQ,EACxB,IACIzmC,EAAG6G,EAAGi7B,EAAM4E,EAAM91B,EADlB4a,EAAS,EAAE,CAGf,IAAKxrB,EAAI,EAAG8hC,EAAO2E,EAAS,MAAM,CAAEzmC,EAAI8hC,EAAM,EAAE9hC,EAC9C,IAAK6G,EAAI,EAAG6/B,EAAOD,CAAQ,CAACzmC,EAAE,CAAC,MAAM,CAAE6G,EAAI6/B,EAAM,EAAE7/B,EACjD+J,EAAQ61B,CAAQ,CAACzmC,EAAE,CAAC6G,EAAE,CACtB2kB,EAAO,IAAI,CAAC5a,GACZA,EAAM,OAAO,CAAG,CACd,KAAM,IAAIm1B,EACV,SAAU,GACV,SAAU,GACV,KAAM/lC,EACN,KAAM6G,CACR,EAkBJ,OAXA2kB,EAAO,IAAI,CAAC,SAAStpB,CAAC,CAAEC,CAAC,EACvB,IAAIwkC,EAAKzkC,EAAE,OAAO,CACd0kC,EAAKzkC,EAAE,OAAO,CAElB,OAAOwkC,EAAG,IAAI,GAAKC,EAAG,IAAI,CACtBA,EAAG,IAAI,CAAGD,EAAG,IAAI,CACjBC,EAAG,IAAI,CAAGD,EAAG,IAAI,AACvB,GAEA,IAAI,CAAC,MAAM,CAACnb,GAELA,CACT,EAEA,OAAQ,SAASA,CAAM,EACrB,IACIxrB,EAAG8hC,EAAMlxB,EAAOud,EAAO0Y,EADvBC,EAAQ,GAGZ,IAAK9mC,EAAI,EAAG8hC,EAAOtW,EAAO,MAAM,CAAExrB,EAAI8hC,EAAM,EAAE9hC,EAE5CmuB,EAAQvd,AADRA,CAAAA,EAAQ4a,CAAM,CAACxrB,EAAE,AAAD,EACF,KAAK,GAEnB6mC,AADAA,CAAAA,EAAQj2B,EAAM,OAAO,AAAD,EACd,QAAQ,CAAGud,GAASA,AAAkB,SAAlBA,EAAM,OAAO,CACvC0Y,EAAM,QAAQ,CAAGj2B,EAAM,OAAO,GAC9Bk2B,GAASD,EAAM,QAAQ,CAGrBC,IACFC,AArFN,SAAiBvb,CAAM,EACrB,IAAIxrB,EAAG8hC,EAAMlxB,EAAOi2B,EAAOb,EAAU/b,EAAQ+c,EAG7C,IAAKhnC,EAAI,EAAG8hC,EAAOtW,EAAO,MAAM,CAAExrB,EAAI8hC,EAAM,EAAE9hC,EAIxC6mC,AAFJA,CAAAA,EAAQj2B,AADRA,CAAAA,EAAQ4a,CAAM,CAACxrB,EAAE,AAAD,EACF,OAAO,AAAD,EAEV,QAAQ,GAMhBgnC,EAAQ,IAAIC,MAAMr2B,EAAM,GAAG,CAAE,CAAC,IAAK,CAACkT,EAAI/b,IAAM+b,EAAG,QAAQ,CAAC,CAAC/b,EAAE,CAAE,GAAK,CAACA,EAAE,GAEvEi+B,EAAWp1B,EAAM,QAAQ,GACzBqZ,EAAS2W,EAAYoG,EAAOp2B,EAAM,KAAK,GAAIo1B,GAC3Ca,EAAM,IAAI,CAAC,MAAM,CAAC5c,EAAQ+b,EAAUp1B,EAAM,QAAQ,KAK/Cs2B,AA7CT,UAAiB1b,CAAM,CAAE2b,CAAQ,EAC/B,IAAInnC,EAAG6G,EAAGugC,EAAIC,EAMd,IAAKrnC,EAAIwrB,EAAO,MAAM,CAAG,EAAGxrB,GAAK,EAAG,EAAEA,EAGpC,IAFAonC,EAAK5b,CAAM,CAACxrB,EAAE,CAAC,OAAO,CAEjB6G,EAAI7G,EAAI,EAAG6G,GAAK,GAAKugC,EAAG,QAAQ,CAAE,EAAEvgC,EAGnCwgC,AAFJA,CAAAA,EAAK7b,CAAM,CAAC3kB,EAAE,CAAC,OAAO,AAAD,EAEd,QAAQ,EAAIugC,EAAG,IAAI,CAAC,UAAU,CAACC,EAAG,IAAI,GAC3CF,EAASC,EAAIC,GAMrB,GAyBiB7b,EAAQ,SAAS4b,CAAE,CAAEC,CAAE,EACpC,IAAIC,EAAKF,EAAG,QAAQ,CAChBG,EAAKF,EAAG,QAAQ,AAEhB,CAACC,GAAMC,GAAOA,EAChBF,EAAG,QAAQ,CAAG,GACLC,GACTF,CAAAA,EAAG,QAAQ,CAAG,EAAI,CAEtB,EACF,EAoDc5b,EAEZ,EAEA,OAAQ,SAASA,CAAM,CAAEnd,CAAK,EAC5B,IAAIrO,EAAG6mC,EAKP,IAAK7mC,EAAIwrB,EAAO,MAAM,CAAG,EAAGxrB,GAAK,EAAG,EAAEA,EAGpC,GAAI6mC,AAFJA,CAAAA,EAAQrb,CAAM,CAACxrB,EAAE,CAAC,OAAO,AAAD,GAEX6mC,EAAM,QAAQ,EAAIA,EAAM,IAAI,CAAC,QAAQ,CAACx4B,GACjD,OAAOmd,CAAM,CAACxrB,EAAE,CAIpB,OAAO,IACT,EAEA,KAAM,SAASokC,CAAK,CAAE5Y,CAAM,EAC1B,IAAIxrB,EAAG8hC,EAAMlxB,EAAOi2B,EAAOb,EAAU/b,EAErC,IAAKjqB,EAAI,EAAG8hC,EAAOtW,EAAO,MAAM,CAAExrB,EAAI8hC,EAAM,EAAE9hC,EAIxC6mC,AAFJA,CAAAA,EAAQj2B,AADRA,CAAAA,EAAQ4a,CAAM,CAACxrB,EAAE,AAAD,EACF,OAAO,AAAD,EAEV,QAAQ,GAChBgmC,EAAWp1B,EAAM,QAAQ,GACzBqZ,EAAS2W,EAAYhwB,EAAM,GAAG,CAAEA,EAAM,KAAK,GAAIo1B,GAC/Ca,EAAM,IAAI,CAAC,MAAM,CAAC5c,EAAQ+b,EAAUp1B,EAAM,QAAQ,IAClDA,EAAM,IAAI,CAACwzB,EAAOna,GAGxB,CACF,EAwEIud,EAAc,cACdC,EAAc,WAoDlB,SAASC,EAActD,CAAK,CAAEuD,CAAS,CAAE/2B,CAAK,EAC5C,GAAI,CAAC+2B,EACH,OAGF,IAEIC,EAFAz6B,EAAUyD,EAAM,QAAQ,CACxBi3B,EAASj3B,EAAM,OAAO,CAG1B,IAAI,CAAC+2B,CAAS,CAACE,EAAO,IAAI,CAAC,GAKvB,CADJD,CAAAA,EAAaD,CAAS,CAACE,EAAO,IAAI,CAAC,CAACA,EAAO,IAAI,CAAC,AAAD,EAKP,KAApC,SAASD,EAAY,CAACz6B,EAAQ,IAKhCi3B,CAAK,CAACoD,EAAY,CAAC,MAAM,CAAG,GAC5B52B,EAAM,MAAM,CAACzD,GAEjB,CA2LA,IArIa,CACX,GAAI,aAEJ,SAjLa,CACb,MAAO,SACP,OAAQ,SACR,gBAAiB,KACjB,YAAa,KACb,aAAc,EACd,YAAa,EACb,MAAO,GACP,KAAM,GACN,MAAOxM,KAAAA,EACP,QAAS,GACT,KAAM,CACJ,OAAQA,KAAAA,EACR,WAAY,IACZ,KAAMA,KAAAA,EACN,MAAOA,KAAAA,EACP,OAAQ,IACV,EACA,UA/Cc,SAASiB,CAAK,EAC5B,GAAI,SAAcA,GAChB,OAAO,KAGT,IACI4V,EAAMswB,EAAMvlC,EADZqO,EAAQhP,EAEZ,GAAI,SAASA,IACX,GAAK,SAAcA,EAAM,KAAK,GAEvB,GAAK,SAAcA,EAAM,CAAC,EAK/B,IAAKW,EAAI,EAFTqO,EAAQ,GAEIk3B,EAAOtwB,AADnBA,CAAAA,EAAO5S,OAAO,IAAI,CAAChD,EAAK,EACA,MAAM,CAAEW,EAAIulC,EAAM,EAAEvlC,EAC1CqO,GAAS,AAACrO,CAAAA,AAAM,IAANA,EAAU,KAAO,EAAC,EAAKiV,CAAI,CAACjV,EAAE,CAAG,KAAOX,CAAK,CAAC4V,CAAI,CAACjV,EAAE,CAAC,MALlEqO,EAAQhP,EAAM,CAAC,MAFfgP,EAAQhP,EAAM,KAAK,CAYvB,MAAO,GAAKgP,CACd,EA0BE,OAAQjQ,KAAAA,EACR,UAAW,CAAC,EACZ,OAAQ,EACR,QAAS,EACT,QAAS,CACP,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,CACR,EACA,SAAU,EACV,UAAW,QACX,gBAAiBA,KAAAA,EACjB,gBAAiB,EACjB,eAAgB,EAChB,gBAAiBA,KAAAA,CACnB,EAgJE,WAAY,SAASyjC,CAAK,EACxBA,CAAK,CAACoD,EAAY,CAAG,CACnB,SAAU,EAAE,AACd,CACF,EAEA,aAAc,SAASpD,CAAK,EAC1B,IAAI2D,EAAU3D,CAAK,CAACoD,EAAY,AAChCO,CAAAA,EAAQ,SAAS,CAAG,GACpBA,EAAQ,UAAU,CAAG,CAAC,EACtBA,EAAQ,SAAS,CAAG,EAAE,CACtBA,EAAQ,OAAO,CAAG,EAAE,AACtB,EAEA,mBAAoB,SAAS3D,CAAK,CAAE9X,CAAI,CAAEha,CAAO,EAC/C,IAtJe01B,EAAS11B,EAItBkZ,EAAQhU,EAHRywB,EACAN,EACAO,EA2JEloC,EAAG6G,EAAGi7B,EAAM4E,EAAMzB,EAAKvtB,EAAKoM,EAAIlT,EARhCu3B,EAAe7b,EAAK,KAAK,CACzByb,EAAU3D,CAAK,CAACoD,EAAY,CAC5Bhc,EAASuc,EAAQ,SAAS,CAACI,EAAa,CAAG,EAAE,CAC7C3kB,EAAU4gB,EAAM,gBAAgB,CAAC+D,GACjCH,EAAU5D,EAAM,IAAI,CAAC,QAAQ,CAAC+D,EAAa,CAC/C,IAAI12B,GA3JWu2B,EA2JQA,EA3JC11B,EA2JQA,EA1J9B21B,EAAWD,EAAQ,UAAU,CAC7BL,EAAY,CAAC,EACbO,EAAU,EAAE,CAGhB,AAAID,AAAa,KAAbA,EACK,MAEQ,KAAbA,GACFA,CAAAA,EAAW,CAAC,GAKdzwB,EAAO5S,OAAO,IAAI,CADlB4mB,EAASlZ,AADTA,CAAAA,EAAU,SAAM,CAAC,EAAG,CAACA,EAAS21B,EAAS,GACtB,MAAM,EAAI,CAAC,GAE5B,OAAO31B,EAAQ,MAAM,CAEjBkF,EAAK,MAAM,CACbA,EAAK,OAAO,CAAC,SAASE,CAAG,EACnB8T,CAAM,CAAC9T,EAAI,EACbwwB,EAAQ,IAAI,CAAC,SAAM,CAAC,EAAG,CACrB51B,EACAkZ,CAAM,CAAC9T,EAAI,CACX,CAAC,KAAMA,CAAG,EACX,EAEL,GAGAwwB,EAAQ,IAAI,CAAC51B,GAIfq1B,EAAYO,EAAQ,MAAM,CAAC,SAAS5rB,CAAM,CAAE7K,CAAM,EAOhD,MANA,SAAKA,EAAO,SAAS,EAAI,CAAC,EAAG,SAASgT,CAAE,CAAEtU,CAAK,EAC7CmM,CAAM,CAACnM,EAAM,CAAGmM,CAAM,CAACnM,EAAM,EAAI,CAAC,EAClCmM,CAAM,CAACnM,EAAM,CAACsB,EAAO,IAAI,EAAIg2B,EAAY,CAAGhjB,CAC9C,GAEA,OAAOhT,EAAO,SAAS,CAChB6K,CACT,EAAG,CAAC,GAEG,CACL,OAAQ4rB,EACR,UAAWP,CACb,IA6GMx5B,EAAWme,EAAK,IAAI,CAAC,IAAI,EAAI,EAAE,CAC/B8I,EAAMgP,EAAM,GAAG,CAKnB,IAAKpkC,AAFLo1B,EAAI,IAAI,GAEHp1B,EAAI,EAAG8hC,EAAO3zB,EAAS,MAAM,CAAEnO,EAAI8hC,EAAM,EAAE9hC,EAI9C,GAFA8jB,AADAA,CAAAA,EAAK3V,CAAQ,CAACnO,EAAE,AAAD,CACb,CAACwnC,EAAY,CAAG,EAAE,CAEhBhkB,GAAWM,GAAMsgB,EAAM,iBAAiB,CAACpkC,IAAM,CAAC8jB,EAAG,IAAI,CACzD,IAAKjd,EAAI,EAAG6/B,EAAOj1B,EAAO,MAAM,CAAC,MAAM,CAAE5K,EAAI6/B,EAAM,EAAE7/B,EAEnD6Q,EAAMutB,AADNA,CAAAA,EAAMxzB,EAAO,MAAM,CAAC5K,EAAE,AAAD,EACX,IAAI,CAGd+J,AADAA,CAAAA,EAAQ,IAAI6yB,EAAMwB,EAAK7P,EAAKtR,EAAI9jB,EAAC,EAC3B,OAAO,CAAG,CACd,KAAMmoC,EACN,KAAMzwB,GAAO+vB,CACf,EACA72B,EAAM,QAAQ,CAAG,CACf,OAAQ,GACR,MAAOwzB,EACP,UAAWpkC,EACX,QAASgoC,EACT,aAAcG,CAChB,EAEAv3B,EAAM,MAAM,CAACA,EAAM,QAAQ,EAC3BkT,CAAE,CAAC0jB,EAAY,CAAC,IAAI,CAAC52B,GACrB4a,EAAO,IAAI,CAAC5a,GAKlBwkB,EAAI,OAAO,GAIX,SAAM2S,EAAQ,UAAU,CAAEt2B,EAAO,SAAS,CAAE,CAC1C,OAAQ,SAAStB,CAAK,CAAEmM,CAAM,CAAEpF,CAAM,EACpCoF,CAAM,CAACnM,EAAM,CAAGmM,CAAM,CAACnM,EAAM,EAAI,CAAC,EAClCmM,CAAM,CAACnM,EAAM,CAACmc,EAAK,KAAK,CAAC,CAAGpV,CAAM,CAAC/G,EAAM,CACzC43B,EAAQ,SAAS,CAAG,EACtB,CACF,EACF,EAEA,YAAa,SAAS3D,CAAK,CAAE9xB,CAAO,EAClC8xB,CAAK,CAACoD,EAAY,CAAC,OAAO,CAAGhB,EAAO,OAAO,CACzCpC,CAAK,CAACoD,EAAY,CAAC,SAAS,CAC5Bl1B,EACJ,EAKA,kBAAmB,SAAS8xB,CAAK,EAC/BoC,EAAO,IAAI,CAACpC,EAAOA,CAAK,CAACoD,EAAY,CAAC,OAAO,CAC/C,EAEA,YAAa,SAASpD,CAAK,CAAE9X,CAAI,EAI/B,GAAI8X,CAAK,CAACoD,EAAY,CAAC,SAAS,CAAE,CAChC,IArGqBpD,EAAOj0B,EAC5B43B,EACAr0B,EACA9C,EAkGIT,EAAQmc,EAAK,KAAK,CACtB,OAAQnc,EAAM,IAAI,EAClB,IAAK,YACL,IAAK,YACHi4B,AA7HR,SAA0BhE,CAAK,CAAEj0B,CAAK,EACpC,IAEIk4B,EAAUz3B,EAFVm3B,EAAU3D,CAAK,CAACoD,EAAY,CAC5BG,EAAYI,EAAQ,UAAU,CAGlC,GAAI,EAACJ,EAAU,KAAK,GAAI,CAACA,EAAU,KAAK,EAIxC,GAAIx3B,AAAe,cAAfA,EAAM,IAAI,CACZS,EAAQ41B,EAAO,MAAM,CAACuB,EAAQ,OAAO,CAAE53B,QAClC,GAAIA,AAAe,aAAfA,EAAM,IAAI,CACnB,OAGFk4B,EAAWN,EAAQ,QAAQ,CAC3BA,EAAQ,QAAQ,CAAGn3B,GACnB03B,AAxCF,SAA4BlE,CAAK,CAAEuD,CAAS,CAAEU,CAAQ,CAAEz3B,CAAK,EAC3D,IAAI23B,EAAOC,EAEX,GAAI,EAACH,IAAY,CAACz3B,EAIby3B,EAEOz3B,EAEDy3B,IAAaz3B,GACtB43B,CAAAA,EAAQD,EAAQ,EAAG,EAFnBC,EAAQ,GAFRD,EAAQ,GAONC,GACFd,EAActD,EAAOuD,EAAU,KAAK,CAAEU,GAEpCE,GACFb,EAActD,EAAOuD,EAAU,KAAK,CAAE/2B,EAE1C,EAmBqBwzB,EAAOuD,EAAWU,EAAUz3B,GACjD,EA2GyBwzB,EAAOj0B,GACxB,KACF,KAAK,SA3GgBi0B,EA4GDA,EA5GQj0B,EA4GDA,GAzG3BS,EAAQ8C,CADRA,EAAWq0B,CADXA,EAAU3D,CAAK,CAACoD,EAAY,EACT,UAAU,CAAC,KAAK,GACfhB,EAAO,MAAM,CAACuB,EAAQ,OAAO,CAAE53B,KAErDu3B,EAActD,EAAO1wB,EAAU9C,EAyG7B,CACF,CACF,EAEA,WAAY,SAASwzB,CAAK,EACxB,IAIIpkC,EAAG8hC,EAAMj7B,EAAG6/B,EAAM+B,EAAQ73B,EAAO4a,EAJjCuc,EAAU3D,CAAK,CAACoD,EAAY,CAC5Ba,EAAWN,EAAQ,QAAQ,CAC3BW,EAAUX,EAAQ,QAAQ,CAAG3D,EAAM,iBAAiB,GACpDhC,EAAUX,EAAM,SAAS,CAAC4G,EAAUK,GAGxC,IAAK1oC,EAAI,EAAG8hC,EAAOM,EAAQ,MAAM,CAAEpiC,EAAI8hC,EAAM,EAAE9hC,EAE7C,GAAIyoC,AADJA,CAAAA,EAASrG,CAAO,CAACpiC,EAAE,AAAD,CACR,CAAC,EAAE,CAEX,IAAK6G,EAAI,EAAG6/B,EAAOlb,AADnBA,CAAAA,EAASid,CAAM,CAAC,EAAE,CAAC,OAAO,CAACjB,EAAY,EAAI,EAAE,AAAD,EAClB,MAAM,CAAE3gC,EAAI6/B,EAAM,EAAE7/B,EAE5C+J,AADAA,CAAAA,EAAQ4a,CAAM,CAAC3kB,EAAE,AAAD,EACV,QAAQ,CAAC,MAAM,CAAI4hC,AAAc,IAAdA,CAAM,CAAC,EAAE,CAClC73B,EAAM,MAAM,CAACA,EAAM,QAAQ,EAK7Bm3B,CAAAA,EAAQ,MAAM,EAAI3F,EAAQ,MAAM,AAAD,IACjCoE,EAAO,MAAM,CAACuB,EAAQ,OAAO,EAC7B3D,EAAM,MAAM,IAGd,OAAO2D,EAAQ,MAAM,AACvB,CACF,+FCvwCA,IAAMtG,EAAQ,CACVkH,UAhDc,CAACn0B,EAAM4vB,IAAU,AAAgB,YAAhB,OAAO5vB,EAAsBA,EAAK4vB,GAAS5vB,EAiD1Eo0B,UAhDc,AAAChnC,IACf,IAAMinC,EAAW,aAAc,CACzBhsB,EAAO,SAAejb,EAAM,IAAI,CAAEinC,EAAS,IAAI,CAAC,IAAI,EACpDjH,EAAO,CACT,OAAQ,SAAehgC,EAAM,MAAM,CAAEinC,EAAS,IAAI,CAAC,MAAM,EAIzD,WAAY,SAAajnC,EAAM,UAAU,CAAEib,GAC3C,KAAMA,EACN,MAAO,SAAejb,EAAM,KAAK,CAAEinC,EAAS,IAAI,CAAC,KAAK,EACtD,OAAQ,SAAejnC,EAAM,MAAM,CAAE,MACrC,OAAQ,EACZ,EAGA,OADAggC,EAAK,MAAM,CAAGH,EAAM,YAAY,CAACG,GAC1BA,CACX,EAgCIkH,aA/BiB,AAAClH,GAClB,AAAI,CAACA,GAAQ,SAAcA,EAAK,IAAI,GAAK,SAAcA,EAAK,MAAM,EACvD,GAEJ,AAACA,CAAAA,EAAK,KAAK,CAAGA,EAAK,KAAK,CAAG,IAAM,EAAC,EAClCA,CAAAA,EAAK,MAAM,CAAGA,EAAK,MAAM,CAAG,IAAM,EAAC,EACpCA,EAAK,IAAI,CAAG,MACZA,EAAK,MAAM,CAyBjBmH,SAvBa,CAAC3E,EAAO5Y,KACrB,GAAM,CAAE4J,IAAAA,CAAG,CAAE,CAAGgP,EACVrC,EAAO3M,EAAI,IAAI,CACjBniB,EAAQ,EACR1R,EAAS,EAab,OAZAiqB,EAAO,OAAO,CAAC5a,IAEX,IAAM4D,EAAO,AAAsB,YAAtB,OAAO5D,EAAM,IAAI,CAAkBA,EAAM,IAAI,CAACwzB,GAASxzB,EAAM,IAAI,AAC9EwkB,CAAAA,EAAI,IAAI,CAAGxkB,EAAM,IAAI,CAAGA,EAAM,IAAI,CAAC,MAAM,CAAG,GAC5CqC,EAAQ/S,KAAK,GAAG,CAACk1B,EAAI,WAAW,CAAC5gB,GAAM,KAAK,CAAEvB,GAC9C1R,GAAUqP,EAAM,IAAI,CAAC,UAAU,AACnC,GACAwkB,EAAI,IAAI,CAAG2M,EACI,CACX,OAAQxgC,EACR,MAAO0R,CACX,CAEJ,CAMA,EAEM+1B,EAAoB,CAAC5E,EAAO9xB,KAC9B,GAAI8xB,EAAM,SAAS,EAAI9xB,EAAS,KAyCxBtS,EAxCJ,GAAM,CAAEwrB,OAAAA,CAAM,CAAE,CAAGlZ,EACnB,GAAI,CAACkZ,GAAQ,OACT,OAEJ,GAAM,CAAE4J,IAAAA,CAAG,CAAE,UAAW,CAAEvS,IAAAA,CAAG,CAAErf,MAAAA,CAAK,CAAE0B,OAAAA,CAAM,CAAE5B,KAAAA,CAAI,CAAE,CAAE,CAAG8gC,EACnD6E,EAAc,EAAE,CACtBzd,EAAO,OAAO,CAAC5a,IACX,IAAM4D,EAAOitB,EAAM,SAAS,CAAC7wB,EAAM,IAAI,CAAEwzB,GACnCxC,EAAOH,EAAM,SAAS,CAAC,SAAQ,CAAC7wB,EAAM,IAAI,CAAE0B,EAAQ,IAAI,CAAE,kBAAmB,CAAC,CAAE8iB,EAAK,IAAM,kBAAmB,EAC9GwO,EAAQ,SAAQ,CAAChzB,EAAM,KAAK,CAAE0B,EAAQ,KAAK,CAAE,mBAAoB,CAAC,CAAE8iB,EAAK,GAM/E6T,EAAY,IAAI,CALG,CACfz0B,KAAAA,EACAotB,KAAAA,EACA,MAAOgC,GAAS,MACpB,EAEJ,GACA,IAAIsF,EAAezH,EAAM,QAAQ,CAAC2C,EAAO6E,GAGnCE,EAAajpC,KAAK,IAAI,CAACA,KAAK,GAAG,CAACgpC,EAAa,KAAK,CAAE,GAAKhpC,KAAK,GAAG,CAACgpC,EAAa,MAAM,CAAE,IAEvFE,EAAWC,AADgD,EAA3C,0BAAwC,CAC7BF,EAG7BC,EAAW,IACXH,EAAY,OAAO,CAACK,IAChBA,EAAW,IAAI,CAAC,IAAI,CAAGppC,KAAK,KAAK,CAACopC,EAAW,IAAI,CAAC,IAAI,CAAGF,GACzDE,EAAW,IAAI,CAAC,UAAU,CAAG,IAC7BA,EAAW,IAAI,CAAG7H,EAAM,SAAS,CAAC,SAAQ,CAAC6H,EAAW,IAAI,CAAE,KAAK,CAAElU,EAAK,IAAM,kBAAmB,CACrG,GACA8T,EAAezH,EAAM,QAAQ,CAAC2C,EAAO6E,IAEzC7T,EAAI,SAAS,CAAG,SAChBA,EAAI,YAAY,CAAG,SAEnB,IAAMmU,EAAU,AAACjmC,CAAAA,EAAOE,CAAI,EAAK,EAG3BgmC,EAAOC,AAFI5mB,CAAAA,EAAM3d,CAAK,EAAK,EAEVgkC,EAAa,MAAM,CAAG,EAEvCpH,EAAOmH,EAAY,MAAM,CAC3BS,EAAgB,EACpB,IAAK1pC,EAAI,EAAGA,EAAI8hC,EAAM,EAAE9hC,EAAG,CACvBo1B,EAAI,SAAS,CAAG6T,CAAW,CAACjpC,EAAE,CAAC,KAAK,CACpCo1B,EAAI,IAAI,CAAG6T,CAAW,CAACjpC,EAAE,CAAC,IAAI,CAAC,MAAM,CAErC,IAAM2pC,EAAcH,EAAOP,CAAW,CAACjpC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAG,EAAI0pC,EAChEA,GAAiBT,CAAW,CAACjpC,EAAE,CAAC,IAAI,CAAC,UAAU,CAI/C,IAAMwU,EAAOitB,EAAM,SAAS,CAACwH,CAAW,CAACjpC,EAAE,CAAC,IAAI,CAAEokC,GAElDhP,EAAI,QAAQ,CAAC5gB,EAAM+0B,EAASI,EAChC,CACJ,CACJ,EAKA,IAAIC,EAAgB,CAChB,GAAI,gBACJ,SAAU,CACN,KAAM,CACF,OAAQ,aACR,KAAM,GACN,MAAO,SACP,OAAQ,SACR,WAAY,IACZ,OAAQ,iBACZ,CACJ,EACA,WAAY,CAACxF,EAAO9X,EAAMha,IAAY02B,EAAkB5E,EAAO9xB,EACnE,sCCnJO,SAASu3B,EAAO9pC,CAAC,EACtB,MAAO,CAACA,CACV,CCFO,SAAS+pC,EAAO/pC,CAAC,EACtB,OAAOA,EAAIA,CACb,CAEO,SAASgqC,EAAQhqC,CAAC,EACvB,OAAOA,EAAK,GAAIA,CAAAA,CAClB,CAEO,SAASiqC,EAAUjqC,CAAC,EACzB,MAAO,AAAC,CAACA,CAAAA,GAAK,IAAM,EAAIA,EAAIA,EAAI,EAAEA,EAAK,GAAIA,CAAAA,EAAK,GAAK,CACvD,CCVO,SAASkqC,EAAQlqC,CAAC,EACvB,OAAOA,EAAIA,EAAIA,CACjB,CAEO,SAASmqC,EAASnqC,CAAC,EACxB,MAAO,EAAEA,EAAIA,EAAIA,EAAI,CACvB,CAEO,SAASoqC,EAAWpqC,CAAC,EAC1B,MAAO,AAAC,CAACA,CAAAA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,EAAI,AAACA,CAAAA,GAAK,GAAKA,EAAIA,EAAI,GAAK,CAC9D,2tCCRO,IAAI,EAAS,AAAC,SAASyH,EAAOQ,CAAC,EAGpC,SAASoiC,EAAOrqC,CAAC,EACf,OAAOG,KAAK,GAAG,CAACH,EAAGiI,EACrB,CAIA,OARAA,EAAI,CAACA,EAMLoiC,EAAO,QAAQ,CAAG5iC,EAEX4iC,CACT,EAZe,GAcJ,EAAU,AAAC,SAAS5iC,EAAOQ,CAAC,EAGrC,SAASqiC,EAAQtqC,CAAC,EAChB,OAAO,EAAIG,KAAK,GAAG,CAAC,EAAIH,EAAGiI,EAC7B,CAIA,OARAA,EAAI,CAACA,EAMLqiC,EAAQ,QAAQ,CAAG7iC,EAEZ6iC,CACT,EAxBe,GA0BJ,EAAY,AAAC,SAAS7iC,EAAOQ,CAAC,EAGvC,SAASsiC,EAAUvqC,CAAC,EAClB,MAAO,AAAC,CAACA,CAAAA,GAAK,IAAM,EAAIG,KAAK,GAAG,CAACH,EAAGiI,GAAK,EAAI9H,KAAK,GAAG,CAAC,EAAIH,EAAGiI,EAAC,EAAK,CACrE,CAIA,OARAA,EAAI,CAACA,EAMLsiC,EAAU,QAAQ,CAAG9iC,EAEd8iC,CACT,EApCe,GCAXC,EAAKrqC,KAAK,EAAE,CACZsqC,EAASD,EAAK,EAEX,SAASE,EAAM1qC,CAAC,EACrB,OAAO,AAAC,AAAO,GAAP,CAACA,EAAW,EAAI,EAAIG,KAAK,GAAG,CAACH,EAAIyqC,EAC3C,CAEO,SAASE,EAAO3qC,CAAC,EACtB,OAAOG,KAAK,GAAG,CAACH,EAAIyqC,EACtB,CAEO,SAASG,EAAS5qC,CAAC,EACxB,MAAO,AAAC,GAAIG,KAAK,GAAG,CAACqqC,EAAKxqC,EAAC,EAAK,CAClC,CCZO,SAAS6qC,EAAKjrC,CAAC,EACpB,MAAO,AAACO,CAAAA,KAAK,GAAG,CAAC,EAAG,IAAMP,GAAK,WAAW,EAAK,kBACjD,CCDO,SAASkrC,EAAM9qC,CAAC,EACrB,OAAO6qC,EAAK,EAAI,CAAC7qC,EACnB,CAEO,SAAS+qC,EAAO/qC,CAAC,EACtB,OAAO,EAAI6qC,EAAK7qC,EAClB,CAEO,SAASgrC,EAAShrC,CAAC,EACxB,MAAO,AAAC,CAACA,CAAAA,GAAK,IAAM,EAAI6qC,EAAK,EAAI7qC,GAAK,EAAI6qC,EAAK7qC,EAAI,EAAC,EAAK,CAC3D,CCZO,SAASirC,EAASjrC,CAAC,EACxB,OAAO,EAAIG,KAAK,IAAI,CAAC,EAAIH,EAAIA,EAC/B,CAEO,SAASkrC,EAAUlrC,CAAC,EACzB,OAAOG,KAAK,IAAI,CAAC,GAAI,EAAEH,EAAIA,EAC7B,CAEO,SAASmrC,EAAYnrC,CAAC,EAC3B,MAAO,AAAC,CAACA,CAAAA,GAAK,IAAM,EAAI,EAAIG,KAAK,IAAI,CAAC,EAAIH,EAAIA,GAAKG,KAAK,IAAI,CAAC,EAAI,AAACH,CAAAA,GAAK,GAAKA,GAAK,GAAK,CACxF,CCVA,IAAIorC,EAAK,EAAI,GACT3hC,EAAK,EAAI,GACTC,EAAK,EAAI,GACT2hC,EAAK,EAAI,EACTC,EAAK,EAAI,GACTC,EAAK,GAAK,GACVC,EAAK,GAAK,GACVC,EAAK,GAAK,GACVC,EAAK,GAAK,GACVC,EAAK,EATA,GAAI,EAAC,EAAL,GAAI,EAAC,EAWP,SAASC,EAAS5rC,CAAC,EACxB,OAAO,EAAI6rC,EAAU,EAAI7rC,EAC3B,CAEO,SAAS6rC,EAAU7rC,CAAC,EACzB,MAAO,AAACA,CAAAA,EAAI,CAACA,CAAAA,EAAKorC,EAAKO,EAAK3rC,EAAIA,EAAIA,EAAI0J,EAAKiiC,EAAM3rC,CAAAA,GAAKyJ,CAAC,EAAKzJ,EAAIqrC,EAAKrrC,EAAIurC,EAAKI,EAAM3rC,CAAAA,GAAKsrC,CAAC,EAAKtrC,EAAIwrC,EAAKG,EAAM3rC,CAAAA,GAAKyrC,CAAC,EAAKzrC,EAAI0rC,CACjI,CAEO,SAASI,EAAY9rC,CAAC,EAC3B,MAAO,AAAC,CAACA,CAAAA,GAAK,IAAM,EAAI,EAAI6rC,EAAU,EAAI7rC,GAAK6rC,EAAU7rC,EAAI,GAAK,GAAK,CACzE,CCnBO,IAAI,EAAS,AAAC,SAASyH,EAAOrC,CAAC,EAGpC,SAAS2mC,EAAO/rC,CAAC,EACf,MAAO,AAACA,CAAAA,EAAI,CAACA,CAAAA,EAAKA,EAAKoF,CAAAA,EAAKpF,CAAAA,EAAI,GAAKA,CAAAA,CACvC,CAIA,OARAoF,EAAI,CAACA,EAML2mC,EAAO,SAAS,CAAGtkC,EAEZskC,CACT,EAZgB,SAcL,EAAU,AAAC,SAAStkC,EAAOrC,CAAC,EAGrC,SAAS4mC,EAAQhsC,CAAC,EAChB,MAAO,EAAEA,EAAIA,EAAK,CAACA,CAAAA,EAAI,GAAKoF,EAAIpF,CAAAA,EAAK,CACvC,CAIA,OARAoF,EAAI,CAACA,EAML4mC,EAAQ,SAAS,CAAGvkC,EAEbukC,CACT,EAxBgB,SA0BL,EAAY,AAAC,SAASvkC,EAAOrC,CAAC,EAGvC,SAAS6mC,EAAUjsC,CAAC,EAClB,MAAO,AAAC,CAACA,CAAAA,GAAK,GAAK,EAAIA,EAAIA,EAAK,CAACoF,CAAAA,EAAI,GAAKpF,EAAIoF,CAAAA,EAAK,AAACpF,CAAAA,GAAK,GAAKA,EAAK,CAACoF,CAAAA,EAAI,GAAKpF,EAAIoF,CAAAA,EAAK,GAAK,CAC7F,CAIA,OARAA,EAAI,CAACA,EAML6mC,EAAU,SAAS,CAAGxkC,EAEfwkC,CACT,EApCgB,SCEZC,EAAM,EAAI/rC,KAAK,EAAE,CAIV,EAAY,AAAC,SAASsH,EAAOtF,CAAC,CAAE6F,CAAC,EAC1C,IAAI5C,EAAIjF,KAAK,IAAI,CAAC,EAAKgC,CAAAA,EAAIhC,KAAK,GAAG,CAAC,EAAGgC,EAAC,GAAO6F,CAAAA,GAAKkkC,CAAE,EAEtD,SAASC,EAAUnsC,CAAC,EAClB,OAAOmC,EAAI0oC,EAAK,EAAE,EAAE7qC,GAAMG,KAAK,GAAG,CAAC,AAACiF,CAAAA,EAAIpF,CAAAA,EAAKgI,EAC/C,CAKA,OAHAmkC,EAAU,SAAS,CAAG,SAAShqC,CAAC,EAAI,OAAOsF,EAAOtF,EAAG6F,EAAIkkC,EAAM,EAC/DC,EAAU,MAAM,CAAG,SAASnkC,CAAC,EAAI,OAAOP,EAAOtF,EAAG6F,EAAI,EAE/CmkC,CACT,EAdgB,EACH,IAeF,EAAa,AAAC,SAAS1kC,EAAOtF,CAAC,CAAE6F,CAAC,EAC3C,IAAI5C,EAAIjF,KAAK,IAAI,CAAC,EAAKgC,CAAAA,EAAIhC,KAAK,GAAG,CAAC,EAAGgC,EAAC,GAAO6F,CAAAA,GAAKkkC,CAAE,EAEtD,SAASE,EAAWpsC,CAAC,EACnB,OAAO,EAAImC,EAAI0oC,EAAK7qC,EAAI,CAACA,GAAKG,KAAK,GAAG,CAAC,AAACH,CAAAA,EAAIoF,CAAAA,EAAK4C,EACnD,CAKA,OAHAokC,EAAW,SAAS,CAAG,SAASjqC,CAAC,EAAI,OAAOsF,EAAOtF,EAAG6F,EAAIkkC,EAAM,EAChEE,EAAW,MAAM,CAAG,SAASpkC,CAAC,EAAI,OAAOP,EAAOtF,EAAG6F,EAAI,EAEhDokC,CACT,EA3BgB,EACH,IA4BF,EAAe,AAAC,SAAS3kC,EAAOtF,CAAC,CAAE6F,CAAC,EAC7C,IAAI5C,EAAIjF,KAAK,IAAI,CAAC,EAAKgC,CAAAA,EAAIhC,KAAK,GAAG,CAAC,EAAGgC,EAAC,GAAO6F,CAAAA,GAAKkkC,CAAE,EAEtD,SAASG,EAAarsC,CAAC,EACrB,MAAO,AAAC,CAACA,CAAAA,EAAIA,AAAI,EAAJA,EAAQ,GAAK,EACpBmC,EAAI0oC,EAAK,CAAC7qC,GAAKG,KAAK,GAAG,CAAC,AAACiF,CAAAA,EAAIpF,CAAAA,EAAKgI,GAClC,EAAI7F,EAAI0oC,EAAK7qC,GAAKG,KAAK,GAAG,CAAC,AAACiF,CAAAA,EAAIpF,CAAAA,EAAKgI,EAAC,EAAK,CACnD,CAKA,OAHAqkC,EAAa,SAAS,CAAG,SAASlqC,CAAC,EAAI,OAAOsF,EAAOtF,EAAG6F,EAAIkkC,EAAM,EAClEG,EAAa,MAAM,CAAG,SAASrkC,CAAC,EAAI,OAAOP,EAAOtF,EAAG6F,EAAI,EAElDqkC,CACT,EA1CgB,EACH,6BCHFC,EAAAA,EAIT,EAH+DC,AAGxD,SAAUC,CAAO,EAAI,aAE5B,SAASC,EAAeC,CAAG,CAAEzsC,CAAC,EAC5B,OAAO0sC,AAGT,SAAyBD,CAAG,EAC1B,GAAI7sC,MAAM,OAAO,CAAC6sC,GAAM,OAAOA,CACjC,EALyBA,IAAQE,AAOjC,SAA+BF,CAAG,CAAEzsC,CAAC,EACnC,IAAI4sC,EAAO,EAAE,CACTC,EAAK,GACLC,EAAK,GACLC,EAAKpsC,KAAAA,EAET,GAAI,CACF,IAAK,IAAiCqsC,EAA7BC,EAAKR,CAAG,CAAC/pC,OAAO,QAAQ,CAAC,GAAQ,CAAEmqC,CAAAA,EAAK,AAACG,CAAAA,EAAKC,EAAG,IAAI,EAAC,EAAG,IAAI,AAAD,IACnEL,EAAK,IAAI,CAACI,EAAG,KAAK,EAEdhtC,CAAAA,GAAK4sC,EAAK,MAAM,GAAK5sC,GAH8C6sC,EAAK,IAKhF,CAAE,MAAO3X,EAAK,CACZ4X,EAAK,GACLC,EAAK7X,CACP,QAAU,CACR,GAAI,CACE,CAAC2X,GAAMI,AAAgB,MAAhBA,EAAG,MAAS,EAAUA,EAAG,MAAS,EAC/C,QAAU,CACR,GAAIH,EAAI,MAAMC,CAChB,CACF,CAEA,OAAOH,CACT,EA/BuDH,EAAKzsC,IAAMktC,AAiClE,WACE,MAAM,AAAInb,UAAU,uDACtB,GAlCA,CAuCA,SAASljB,EAAOpO,CAAI,CAAEd,CAAC,CAAEoD,CAAC,CAAEoqC,CAAI,EAC9B1sC,EAAOA,EAAK,MAAM,CAAC,SAAUY,CAAC,CAAErB,CAAC,EAC/B,IAAIotC,EAAIztC,EAAE0B,EAAGrB,GACTyE,EAAI1B,EAAE1B,EAAGrB,GACb,OAAOotC,AAAK,MAALA,GAAaC,SAASD,IAAM3oC,AAAK,MAALA,GAAa4oC,SAAS5oC,EAC3D,GAEI0oC,GACF1sC,EAAK,IAAI,CAAC,SAAUyB,CAAC,CAAEC,CAAC,EACtB,OAAOxC,EAAEuC,GAAKvC,EAAEwC,EAClB,GAaF,IAAK,IAVDnB,EAAIP,EAAK,MAAM,CACf6sC,EAAI,IAAIC,aAAavsC,GACrBwsC,EAAI,IAAID,aAAavsC,GAIrBysC,EACAC,EACArsC,EAJAssC,EAAK,EACLC,EAAK,EAKA5tC,EAAI,EAAGA,EAAIgB,GAClBK,EAAIZ,CAAI,CAACT,EAAE,CACXstC,CAAC,CAACttC,EAAE,CAAGytC,EAAK,CAAC9tC,EAAE0B,EAAGrB,EAAGS,GACrB+sC,CAAC,CAACxtC,EAAE,CAAG0tC,EAAK,CAAC3qC,EAAE1B,EAAGrB,EAAGS,GACrB,EAAET,EACF2tC,GAAM,AAACF,CAAAA,EAAKE,CAAC,EAAK3tC,EAClB4tC,GAAM,AAACF,CAAAA,EAAKE,CAAC,EAAK5tC,EAIpB,IAAK,IAAIitC,EAAK,EAAGA,EAAKjsC,EAAG,EAAEisC,EACzBK,CAAC,CAACL,EAAG,EAAIU,EACTH,CAAC,CAACP,EAAG,EAAIW,EAGX,MAAO,CAACN,EAAGE,EAAGG,EAAIC,EAAG,AACvB,CACA,SAASC,EAAYptC,CAAI,CAAEd,CAAC,CAAEoD,CAAC,CAAE+qC,CAAE,EAGjC,IAAK,IAFDC,EAAa,EAER/tC,EAAI,EAAGgB,EAAIP,EAAK,MAAM,CAAET,EAAIgB,EAAGhB,IAAK,CAC3C,IAAIqB,EAAIZ,CAAI,CAACT,EAAE,CACXiD,EAAK,CAACtD,EAAE0B,EAAGrB,EAAGS,GACdyC,EAAK,CAACH,EAAE1B,EAAGrB,EAAGS,EAER,OAANwC,GAAcoqC,SAASpqC,IAAOC,AAAM,MAANA,GAAcmqC,SAASnqC,IACvD4qC,EAAG7qC,EAAIC,EAAI6qC,IAEf,CACF,CAIA,SAASC,EAAcvtC,CAAI,CAAEd,CAAC,CAAEoD,CAAC,CAAEkrC,CAAE,CAAEC,CAAO,EAC5C,IAAIC,EAAM,EACNC,EAAM,EAOV,OANAP,EAAYptC,EAAMd,EAAGoD,EAAG,SAAUE,CAAE,CAAEC,CAAE,EACtC,IAAImrC,EAAMnrC,EAAKgrC,EAAQjrC,GACnBqrC,EAAMprC,EAAK+qC,EACfE,GAAOE,EAAMA,EACbD,GAAOE,EAAMA,CACf,GACO,EAAIH,EAAMC,CACnB,CAGA,SAASl9B,EAAMpC,CAAI,EACjB,OAAO5O,AAA+D,IAA/DA,KAAK,KAAK,CAAC4O,CAAI,CAAC,EAAE,CAAC,EAAE,CAAGA,CAAI,CAAC,EAAE,CAAC,EAAE,CAAEA,CAAI,CAAC,EAAE,CAAC,EAAE,CAAGA,CAAI,CAAC,EAAE,CAAC,EAAE,EAAU5O,KAAK,EAAE,AACrF,CAQA,SAASquC,EAAUC,CAAI,CAAEC,CAAI,CAAEP,CAAO,EAOpC,IALA,IAAIQ,EAAY,EAAIxuC,KAAK,GAAG,CAAC,GAAI,CADzBA,CAAAA,KAAK,GAAG,CAACuuC,EAAOD,GAAQtuC,KAAK,MAAM,CAAG,EAAI,GACZ,EAAI,GAEtC2O,EAAS,CAAC8/B,AAQd,SAAYhvC,CAAC,EACX,MAAO,CAACA,EAAGuuC,EAAQvuC,GAAG,AACxB,EAViB6uC,GAAOG,AAQxB,SAAYhvC,CAAC,EACX,MAAO,CAACA,EAAGuuC,EAAQvuC,GAAG,AACxB,EAV2B8uC,GAAM,CAC7BG,EAAO,EAEJC,AASP,SAAchgC,CAAM,EAClB+/B,IAIA,IAAK,IAHD5tC,EAAI6N,EAAO,MAAM,CACjBmX,EAAQ,GAEHhmB,EAAI,EAAGA,EAAIgB,EAAI,EAAGhB,IAAK,CAC9B,IA5BY8O,EAkBJnP,EAUJmmC,EAAKj3B,CAAM,CAAC7O,EAAE,CAEdC,EA7BD,CAAC,AAAC6O,CAAAA,CADOA,EA8BK,CAACg3B,EADTj3B,CAAM,CAAC7O,EAAI,EAAE,CACG,CA7BhB,CAAC,EAAE,CAAC,EAAE,CAAG8O,CAAI,CAAC,EAAE,CAAC,EAAE,AAAD,EAAK,EAAG,AAACA,CAAAA,CAAI,CAAC,EAAE,CAAC,EAAE,CAAGA,CAAI,CAAC,EAAE,CAAC,EAAE,AAAD,EAAK,EAAE,CA8B7DggC,EAZC,CADGnvC,EAaIM,CAAC,CAAC,EAAE,CAZPiuC,EAAQvuC,GAAG,CAeZO,KAAK,GAAG,CAACgiC,AAFRhxB,EAAM,CAAC40B,EAAI7lC,EAAE,EACbiR,EAAM,CAAC40B,EAAIgJ,EAAG,GAGfJ,IACN7/B,EAAO,MAAM,CAAC7O,EAAI,EAAG,EAAG8uC,GACxB9oB,EAAQ,GAEZ,CAEA,OAAOA,CACT,EA9BYnX,IAAW+/B,EAJT,MAOd,OAAO//B,EAEP,SAAS8/B,EAAGhvC,CAAC,EACX,MAAO,CAACA,EAAGuuC,EAAQvuC,GAAG,AACxB,CAwBF,CAKA,SAASovC,EAAIC,CAAE,CAAEf,CAAE,CAAEgB,CAAG,CAAEC,CAAG,EAC3B,IAAI7lB,EAAQ6lB,EAAMF,EAAKA,EACnBG,EAAQjvC,AAAkB,MAAlBA,KAAK,GAAG,CAACmpB,GAAiB,EAAI,AAAC4lB,CAAAA,EAAMD,EAAKf,CAAC,EAAK5kB,EAE5D,MAAO,CADS4kB,EAAKkB,EAAQH,EACVG,EAAM,AAC3B,CAsEA,SAAStF,IACP,IAMIuF,EANAzvC,EAAI,SAAW0B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACI0B,EAAI,SAAW1B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EAGA,SAASwoC,EAAOppC,CAAI,EAClB,IAAIO,EAAI,EACJssC,EAAI,EAERE,EAAI,EAEJ6B,EAAK,EAELC,EAAK,EAELd,EAAOY,EAAS,CAACA,CAAM,CAAC,EAAE,CAAGnoB,IACzBwnB,EAAOW,EAAS,CAACA,CAAM,CAAC,EAAE,CAAG,CAACnoB,IAClC4mB,EAAYptC,EAAMd,EAAGoD,EAAG,SAAUE,CAAE,CAAEC,CAAE,EACtC,EAAElC,EACFssC,GAAK,AAACrqC,CAAAA,EAAKqqC,CAAAA,EAAKtsC,EAChBwsC,GAAK,AAACtqC,CAAAA,EAAKsqC,CAAAA,EAAKxsC,EAChBquC,GAAM,AAACpsC,CAAAA,EAAKC,EAAKmsC,CAAC,EAAKruC,EACvBsuC,GAAM,AAACrsC,CAAAA,EAAKA,EAAKqsC,CAAC,EAAKtuC,EAEnB,CAACouC,IACCnsC,EAAKurC,GAAMA,CAAAA,EAAOvrC,CAAC,EACnBA,EAAKwrC,GAAMA,CAAAA,EAAOxrC,CAAC,EAE3B,GAEA,IACIssC,EAAQ/C,EADDuC,EAAIzB,EAAGE,EAAG6B,EAAIC,GACQ,GAC7BE,EAAYD,CAAK,CAAC,EAAE,CACpBJ,EAAQI,CAAK,CAAC,EAAE,CAChB9qB,EAAK,SAAY9kB,CAAC,EACpB,OAAOwvC,EAAQxvC,EAAI6vC,CACrB,EACIrX,EAAM,CAAC,CAACqW,EAAM/pB,EAAG+pB,GAAM,CAAE,CAACC,EAAMhqB,EAAGgqB,GAAM,CAAC,CAM9C,OAJAtW,EAAI,CAAC,CAAGgX,EACRhX,EAAI,CAAC,CAAGqX,EACRrX,EAAI,OAAO,CAAG1T,EACd0T,EAAI,QAAQ,CAAG6V,EAAcvtC,EAAMd,EAAGoD,EAAGyqC,EAAG/oB,GACrC0T,CACT,CAcA,OAZA0R,EAAO,MAAM,CAAG,SAAU4C,CAAG,EAC3B,OAAO7oC,UAAU,MAAM,CAAIwrC,CAAAA,EAAS3C,EAAK5C,CAAK,EAAKuF,CACrD,EAEAvF,EAAO,CAAC,CAAG,SAAUplB,CAAE,EACrB,OAAO7gB,UAAU,MAAM,CAAIjE,CAAAA,EAAI8kB,EAAIolB,CAAK,EAAKlqC,CAC/C,EAEAkqC,EAAO,CAAC,CAAG,SAAUplB,CAAE,EACrB,OAAO7gB,UAAU,MAAM,CAAIb,CAAAA,EAAI0hB,EAAIolB,CAAK,EAAK9mC,CAC/C,EAEO8mC,CACT,CA8NA,SAAS4F,IACP,IAMIL,EANAzvC,EAAI,SAAW0B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACI0B,EAAI,SAAW1B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EAGA,SAASquC,EAAUjvC,CAAI,EACrB,IACIkvC,EAAWnD,EADD39B,EAAOpO,EAAMd,EAAGoD,GACS,GACnC0qC,EAAKkC,CAAQ,CAAC,EAAE,CAChBjC,EAAKiC,CAAQ,CAAC,EAAE,CAChBhC,EAAKgC,CAAQ,CAAC,EAAE,CAChB/B,EAAK+B,CAAQ,CAAC,EAAE,CAChB3uC,EAAIysC,EAAG,MAAM,CAObztC,EACAiD,EACAC,EACA0F,EARA0mC,EAAK,EACLM,EAAK,EACLC,EAAK,EACLR,EAAK,EACLS,EAAM,EAMV,IAAK9vC,EAAI,EAAGA,EAAIgB,GACdiC,EAAKwqC,CAAE,CAACztC,EAAE,CACVkD,EAAKwqC,CAAE,CAAC1tC,IAAI,CACZ4I,EAAK3F,EAAKA,EACVqsC,GAAM,AAAC1mC,CAAAA,EAAK0mC,CAAC,EAAKtvC,EAClB4vC,GAAM,AAAChnC,CAAAA,EAAK3F,EAAK2sC,CAAC,EAAK5vC,EACvB6vC,GAAM,AAACjnC,CAAAA,EAAKA,EAAKinC,CAAC,EAAK7vC,EACvBqvC,GAAM,AAACpsC,CAAAA,EAAKC,EAAKmsC,CAAC,EAAKrvC,EACvB8vC,GAAO,AAAClnC,CAAAA,EAAK1F,EAAK4sC,CAAE,EAAK9vC,EAG3B,IAAIwtC,EAAI,EACJuC,EAAK,EACLvB,EAAOY,EAAS,CAACA,CAAM,CAAC,EAAE,CAAGnoB,IAC7BwnB,EAAOW,EAAS,CAACA,CAAM,CAAC,EAAE,CAAG,CAACnoB,IAClC4mB,EAAYptC,EAAMd,EAAGoD,EAAG,SAAUE,CAAE,CAAEC,CAAE,EACtC6sC,IACAvC,GAAK,AAACtqC,CAAAA,EAAKsqC,CAAAA,EAAKuC,EAEZ,CAACX,IACCnsC,EAAKurC,GAAMA,CAAAA,EAAOvrC,CAAC,EACnBA,EAAKwrC,GAAMA,CAAAA,EAAOxrC,CAAC,EAE3B,GAEA,IAAI+sC,EAAOH,EAAKP,EAAKA,EACjBjuC,EAAIiuC,EAAKU,EAAOJ,EAAKA,EACrB1tC,EAAI,AAAC4tC,CAAAA,EAAMR,EAAKD,EAAKO,CAAC,EAAKvuC,EAC3Bc,EAAI,AAACktC,CAAAA,EAAKW,EAAOF,EAAMF,CAAC,EAAKvuC,EAC7BiB,EAAI,CAACJ,EAAIotC,EACT7qB,EAAK,SAAY9kB,CAAC,EAEpB,OAAOuC,EADPvC,CAAAA,GAAQguC,CAAC,EACMhuC,EAAIwC,EAAIxC,EAAI2C,EAAIsrC,CACjC,EAEIzV,EAAMoW,EAAUC,EAAMC,EAAMhqB,GAMhC,OALA0T,EAAI,CAAC,CAAGj2B,EACRi2B,EAAI,CAAC,CAAGh2B,EAAI,EAAID,EAAIyrC,EACpBxV,EAAI,CAAC,CAAG71B,EAAIH,EAAIwrC,EAAKzrC,EAAIyrC,EAAKA,EAAKC,EACnCzV,EAAI,OAAO,CAAG1T,EACd0T,EAAI,QAAQ,CAAG6V,EAAcvtC,EAAMd,EAAGoD,EAAGyqC,EAAG/oB,GACrC0T,CACT,CAcA,OAZAuX,EAAU,MAAM,CAAG,SAAUjD,CAAG,EAC9B,OAAO7oC,UAAU,MAAM,CAAIwrC,CAAAA,EAAS3C,EAAKiD,CAAQ,EAAKN,CACxD,EAEAM,EAAU,CAAC,CAAG,SAAUjrB,CAAE,EACxB,OAAO7gB,UAAU,MAAM,CAAIjE,CAAAA,EAAI8kB,EAAIirB,CAAQ,EAAK/vC,CAClD,EAEA+vC,EAAU,CAAC,CAAG,SAAUjrB,CAAE,EACxB,OAAO7gB,UAAU,MAAM,CAAIb,CAAAA,EAAI0hB,EAAIirB,CAAQ,EAAK3sC,CAClD,EAEO2sC,CACT,CAmQAnD,EAAQ,aAAa,CAzrBrB,WACE,IAMI6C,EANAzvC,EAAI,SAAW0B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACI0B,EAAI,SAAW1B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EAGA,SAAS4uC,EAAYxvC,CAAI,EACvB,IAAIO,EAAI,EACJwsC,EAAI,EACJ0C,EAAK,EACLb,EAAK,EACLc,EAAM,EACNL,EAAM,EACNtB,EAAOY,EAAS,CAACA,CAAM,CAAC,EAAE,CAAGnoB,IAC7BwnB,EAAOW,EAAS,CAACA,CAAM,CAAC,EAAE,CAAG,CAACnoB,IAClC4mB,EAAYptC,EAAMd,EAAGoD,EAAG,SAAUE,CAAE,CAAEC,CAAE,EACtC,IAAIktC,EAAKlwC,KAAK,GAAG,CAACgD,GACdmtC,EAAKptC,EAAKC,CACd,GAAElC,EACFwsC,GAAK,AAACtqC,CAAAA,EAAKsqC,CAAAA,EAAKxsC,EAChBquC,GAAM,AAACgB,CAAAA,EAAKhB,CAAC,EAAKruC,EAClB8uC,GAAO,AAAC7sC,CAAAA,EAAKotC,EAAKP,CAAE,EAAK9uC,EACzBkvC,GAAM,AAAChtC,CAAAA,EAAKktC,EAAKF,CAAC,EAAKlvC,EACvBmvC,GAAO,AAACE,CAAAA,EAAKD,EAAKD,CAAE,EAAKnvC,EAErB,CAACouC,IACCnsC,EAAKurC,GAAMA,CAAAA,EAAOvrC,CAAC,EACnBA,EAAKwrC,GAAMA,CAAAA,EAAOxrC,CAAC,EAE3B,GAEA,IACIssC,EAAQ/C,EADDuC,EAAIM,EAAK7B,EAAG0C,EAAK1C,EAAG2C,EAAM3C,EAAGsC,EAAMtC,GACb,GAC7BtrC,EAAIqtC,CAAK,CAAC,EAAE,CACZptC,EAAIotC,CAAK,CAAC,EAAE,CAEhBrtC,EAAIhC,KAAK,GAAG,CAACgC,GAEb,IAAIuiB,EAAK,SAAY9kB,CAAC,EACpB,OAAOuC,EAAIhC,KAAK,GAAG,CAACiC,EAAIxC,EAC1B,EACIw4B,EAAMoW,EAAUC,EAAMC,EAAMhqB,GAMhC,OAJA0T,EAAI,CAAC,CAAGj2B,EACRi2B,EAAI,CAAC,CAAGh2B,EACRg2B,EAAI,OAAO,CAAG1T,EACd0T,EAAI,QAAQ,CAAG6V,EAAcvtC,EAAMd,EAAGoD,EAAGyqC,EAAG/oB,GACrC0T,CACT,CAcA,OAZA8X,EAAY,MAAM,CAAG,SAAUxD,CAAG,EAChC,OAAO7oC,UAAU,MAAM,CAAIwrC,CAAAA,EAAS3C,EAAKwD,CAAU,EAAKb,CAC1D,EAEAa,EAAY,CAAC,CAAG,SAAUxrB,CAAE,EAC1B,OAAO7gB,UAAU,MAAM,CAAIjE,CAAAA,EAAI8kB,EAAIwrB,CAAU,EAAKtwC,CACpD,EAEAswC,EAAY,CAAC,CAAG,SAAUxrB,CAAE,EAC1B,OAAO7gB,UAAU,MAAM,CAAIb,CAAAA,EAAI0hB,EAAIwrB,CAAU,EAAKltC,CACpD,EAEOktC,CACT,EAwnBA1D,EAAQ,gBAAgB,CAAG1C,EAC3B0C,EAAQ,eAAe,CA3iBvB,WACE,IAAI5sC,EAAI,SAAW0B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACI0B,EAAI,SAAW1B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACIivC,EAAY,GAEhB,SAASC,EAAM9vC,CAAI,EAajB,IAAK,IAXDkvC,EAAWnD,EADD39B,EAAOpO,EAAMd,EAAGoD,EAAG,IACM,GACnC0qC,EAAKkC,CAAQ,CAAC,EAAE,CAChBjC,EAAKiC,CAAQ,CAAC,EAAE,CAChBhC,EAAKgC,CAAQ,CAAC,EAAE,CAChB/B,EAAK+B,CAAQ,CAAC,EAAE,CAChB3uC,EAAIysC,EAAG,MAAM,CACb+C,EAAKtwC,KAAK,GAAG,CAAC,EAAG,CAAC,CAAEowC,CAAAA,EAAYtvC,CAAAA,GAChCyvC,EAAO,IAAIlD,aAAavsC,GACxB0vC,EAAY,IAAInD,aAAavsC,GAC7B2vC,EAAgB,IAAIpD,aAAavsC,GAAG,IAAI,CAAC,GAEpC4tC,EAAO,GAAI,EAAEA,GAxBX,GAwB8B,CAGvC,IAAK,IAFDgC,EAAW,CAAC,EAAGJ,EAAK,EAAE,CAEjBxwC,EAAI,EAAGA,EAAIgB,EAAG,EAAEhB,EAAG,CAY1B,IAAK,IAXDiD,EAAKwqC,CAAE,CAACztC,EAAE,CACV2M,EAAKikC,CAAQ,CAAC,EAAE,CAChBhkC,EAAKgkC,CAAQ,CAAC,EAAE,CAChBC,EAAO5tC,EAAKwqC,CAAE,CAAC9gC,EAAG,CAAG8gC,CAAE,CAAC7gC,EAAG,CAAG3J,EAAK0J,EAAKC,EACxCkkC,EAAI,EACJxD,EAAI,EACJE,EAAI,EACJ6B,EAAK,EACLC,EAAK,EACLyB,EAAQ,EAAI7wC,KAAK,GAAG,CAACutC,CAAE,CAACoD,EAAK,CAAG5tC,GAAM,GAEjCV,EAAIoK,EAAIpK,GAAKqK,EAAI,EAAErK,EAAG,CAC7B,IAAI6E,EAAKqmC,CAAE,CAAClrC,EAAE,CACV8E,EAAKqmC,CAAE,CAACnrC,EAAE,CACViD,EAAIwrC,AAqDlB,SAAiBrxC,CAAC,EAChB,MAAO,AAACA,CAAAA,EAAI,EAAIA,EAAIA,EAAIA,CAAAA,EAAKA,EAAIA,CACnC,EAvD0BO,KAAK,GAAG,CAAC+C,EAAKmE,GAAM2pC,GAASJ,CAAa,CAACpuC,EAAE,CACzD0uC,EAAM7pC,EAAK5B,EACfsrC,GAAKtrC,EACL8nC,GAAK2D,EACLzD,GAAKnmC,EAAK7B,EACV6pC,GAAMhoC,EAAK4pC,EACX3B,GAAMloC,EAAK6pC,CACb,CArBA,IAyBI1B,EAAQ/C,EADDuC,EAAIzB,EAAIwD,EAAGtD,EAAIsD,EAAGzB,EAAKyB,EAAGxB,EAAKwB,GACT,GAC7B5uC,EAAIqtC,CAAK,CAAC,EAAE,CACZptC,EAAIotC,CAAK,CAAC,EAAE,AAEhBkB,CAAAA,CAAI,CAACzwC,EAAE,CAAGkC,EAAIC,EAAIc,EAClBytC,CAAS,CAAC1wC,EAAE,CAAGE,KAAK,GAAG,CAACwtC,CAAE,CAAC1tC,EAAE,CAAGywC,CAAI,CAACzwC,EAAE,EACvCkxC,AAyCR,SAAwBzD,CAAE,CAAEztC,CAAC,CAAE4wC,CAAQ,EACrC,IAAIryB,EAAMkvB,CAAE,CAACztC,EAAE,CACXsD,EAAOstC,CAAQ,CAAC,EAAE,CAClBptC,EAAQotC,CAAQ,CAAC,EAAE,CAAG,EAC1B,IAAIptC,CAAAA,GAASiqC,EAAG,MAAM,AAAD,EAGrB,KAAOztC,EAAIsD,GAAQmqC,CAAE,CAACjqC,EAAM,CAAG+a,GAAOA,EAAMkvB,CAAE,CAACnqC,EAAK,EAClDstC,CAAQ,CAAC,EAAE,CAAG,EAAEttC,EAChBstC,CAAQ,CAAC,EAAE,CAAGptC,EACd,EAAEA,CAEN,EArDuBiqC,EAAIztC,EAAI,EAAG4wC,EAC5B,CAEA,GAAIhC,AA9DK,IA8DLA,EACF,MAGF,IAAIuC,EAAiBC,AA1E3B,SAAgB3E,CAAG,EACjBA,EAAI,IAAI,CAAC,SAAUvqC,CAAC,CAAEC,CAAC,EACrB,OAAOD,EAAIC,CACb,GACA,IAAInC,EAAIysC,EAAI,MAAM,CAAG,EACrB,OAAOzsC,EAAI,GAAM,EAAI,AAACysC,CAAAA,CAAG,CAACzsC,EAAI,EAAE,CAAGysC,CAAG,CAACzsC,EAAE,AAAD,EAAK,EAAIysC,CAAG,CAACvsC,KAAK,KAAK,CAACF,GAAG,AACrE,EAoEkC0wC,GAC5B,GAAIxwC,AAlEI,MAkEJA,KAAK,GAAG,CAACixC,GAA2B,MAExC,IAAK,IAAYE,EAAKC,EAAbrE,EAAK,EAAYA,EAAKjsC,EAAG,EAAEisC,EAClCoE,EAAMX,CAAS,CAACzD,EAAG,CAAI,GAAIkE,CAAa,EAGxCR,CAAa,CAAC1D,EAAG,CAAGoE,GAAO,EAxErB,MAwEmC,AAACC,CAAAA,EAAK,EAAID,EAAMA,CAAE,EAAKC,CAEpE,CAEA,OAAOC,AAuCX,SAAgB9D,CAAE,CAAEgD,CAAI,CAAE9C,CAAE,CAAEC,CAAE,EAQ9B,IAPA,IAAI5sC,EAAIysC,EAAG,MAAM,CACbtV,EAAM,EAAE,CAIR1zB,EAHAzE,EAAI,EACJwxC,EAAM,EACNzP,EAAO,EAAE,CAGN/hC,EAAIgB,EAAG,EAAEhB,EACdyE,EAAIgpC,CAAE,CAACztC,EAAE,CAAG2tC,EAER5L,CAAI,CAAC,EAAE,GAAKt9B,EAEds9B,CAAI,CAAC,EAAE,EAAI,AAAC0O,CAAAA,CAAI,CAACzwC,EAAE,CAAG+hC,CAAI,CAAC,EAAE,AAAD,EAAK,EAAEyP,GAGnCA,EAAM,EACNzP,CAAI,CAAC,EAAE,EAAI6L,EACX7L,EAAO,CAACt9B,EAAGgsC,CAAI,CAACzwC,EAAE,CAAC,CACnBm4B,EAAI,IAAI,CAAC4J,IAKb,OADAA,CAAI,CAAC,EAAE,EAAI6L,EACJzV,CACT,EAhEkBsV,EAAIgD,EAAM9C,EAAIC,EAC9B,CAcA,OAZA2C,EAAM,SAAS,CAAG,SAAUC,CAAE,EAC5B,OAAO5sC,UAAU,MAAM,CAAI0sC,CAAAA,EAAYE,EAAID,CAAI,EAAKD,CACtD,EAEAC,EAAM,CAAC,CAAG,SAAU9rB,CAAE,EACpB,OAAO7gB,UAAU,MAAM,CAAIjE,CAAAA,EAAI8kB,EAAI8rB,CAAI,EAAK5wC,CAC9C,EAEA4wC,EAAM,CAAC,CAAG,SAAU9rB,CAAE,EACpB,OAAO7gB,UAAU,MAAM,CAAIb,CAAAA,EAAI0hB,EAAI8rB,CAAI,EAAKxtC,CAC9C,EAEOwtC,CACT,EAidAhE,EAAQ,aAAa,CA/ZrB,WACE,IAOI6C,EAPAzvC,EAAI,SAAW0B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACI0B,EAAI,SAAW1B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACIowC,EAAOvxC,KAAK,CAAC,CAGjB,SAASwxC,EAAYjxC,CAAI,EACvB,IAAIO,EAAI,EACJssC,EAAI,EACJE,EAAI,EACJ6B,EAAK,EACLC,EAAK,EACLd,EAAOY,EAAS,CAACA,CAAM,CAAC,EAAE,CAAGnoB,IAC7BwnB,EAAOW,EAAS,CAACA,CAAM,CAAC,EAAE,CAAG,CAACnoB,IAC9B0qB,EAAKzxC,KAAK,GAAG,CAACuxC,GAClB5D,EAAYptC,EAAMd,EAAGoD,EAAG,SAAUE,CAAE,CAAEC,CAAE,EACtC,IAAI0uC,EAAK1xC,KAAK,GAAG,CAAC+C,GAAM0uC,CACxB,GAAE3wC,EACFssC,GAAK,AAACsE,CAAAA,EAAKtE,CAAAA,EAAKtsC,EAChBwsC,GAAK,AAACtqC,CAAAA,EAAKsqC,CAAAA,EAAKxsC,EAChBquC,GAAM,AAACuC,CAAAA,EAAK1uC,EAAKmsC,CAAC,EAAKruC,EACvBsuC,GAAM,AAACsC,CAAAA,EAAKA,EAAKtC,CAAC,EAAKtuC,EAEnB,CAACouC,IACCnsC,EAAKurC,GAAMA,CAAAA,EAAOvrC,CAAC,EACnBA,EAAKwrC,GAAMA,CAAAA,EAAOxrC,CAAC,EAE3B,GAEA,IACIssC,EAAQ/C,EADDuC,EAAIzB,EAAGE,EAAG6B,EAAIC,GACQ,GAC7BE,EAAYD,CAAK,CAAC,EAAE,CACpBJ,EAAQI,CAAK,CAAC,EAAE,CAChB9qB,EAAK,SAAY9kB,CAAC,EACpB,OAAOwvC,EAAQjvC,KAAK,GAAG,CAACP,GAAKgyC,EAAKnC,CACpC,EACIrX,EAAMoW,EAAUC,EAAMC,EAAMhqB,GAMhC,OAJA0T,EAAI,CAAC,CAAGgX,EACRhX,EAAI,CAAC,CAAGqX,EACRrX,EAAI,OAAO,CAAG1T,EACd0T,EAAI,QAAQ,CAAG6V,EAAcvtC,EAAMd,EAAGoD,EAAGyqC,EAAG/oB,GACrC0T,CACT,CAkBA,OAhBAuZ,EAAY,MAAM,CAAG,SAAUjF,CAAG,EAChC,OAAO7oC,UAAU,MAAM,CAAIwrC,CAAAA,EAAS3C,EAAKiF,CAAU,EAAKtC,CAC1D,EAEAsC,EAAY,CAAC,CAAG,SAAUjtB,CAAE,EAC1B,OAAO7gB,UAAU,MAAM,CAAIjE,CAAAA,EAAI8kB,EAAIitB,CAAU,EAAK/xC,CACpD,EAEA+xC,EAAY,CAAC,CAAG,SAAUjtB,CAAE,EAC1B,OAAO7gB,UAAU,MAAM,CAAIb,CAAAA,EAAI0hB,EAAIitB,CAAU,EAAK3uC,CACpD,EAEA2uC,EAAY,IAAI,CAAG,SAAU1wC,CAAC,EAC5B,OAAO4C,UAAU,MAAM,CAAI6tC,CAAAA,EAAOzwC,EAAG0wC,CAAU,EAAKD,CACtD,EAEOC,CACT,EA8VAnF,EAAQ,cAAc,CA/PtB,WACE,IAOI6C,EAPAzvC,EAAI,SAAW0B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACI0B,EAAI,SAAW1B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACIwwC,EAAQ,EAGZ,SAASC,EAAWrxC,CAAI,EAEtB,GAAIoxC,AAAU,IAAVA,EAAa,CACf,IAyCE7xC,EAAG6G,EAAGqC,EAAGzE,EAAGnC,EAzCVuhB,EAAIgmB,IAAS,CAAC,CAAClqC,GAAG,CAAC,CAACoD,GAAG,MAAM,CAACqsC,GAAQ3uC,GAI1C,OAHAojB,EAAE,YAAY,CAAG,CAACA,EAAE,CAAC,CAAEA,EAAE,CAAC,CAAC,CAC3B,OAAOA,EAAE,CAAC,CACV,OAAOA,EAAE,CAAC,CACHA,CACT,CAEA,GAAIguB,AAAU,IAAVA,EAAa,CACf,IAAIE,EAAKtC,IAAO,CAAC,CAAC9vC,GAAG,CAAC,CAACoD,GAAG,MAAM,CAACqsC,GAAQ3uC,GAMzC,OAJAsxC,EAAG,YAAY,CAAG,CAACA,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAC,CACpC,OAAOA,EAAG,CAAC,CACX,OAAOA,EAAG,CAAC,CACX,OAAOA,EAAG,CAAC,CACJA,CACT,CAEA,IACIpC,EAAWnD,EADD39B,EAAOpO,EAAMd,EAAGoD,GACS,GACnC0qC,EAAKkC,CAAQ,CAAC,EAAE,CAChBjC,EAAKiC,CAAQ,CAAC,EAAE,CAChBhC,EAAKgC,CAAQ,CAAC,EAAE,CAChB/B,EAAK+B,CAAQ,CAAC,EAAE,CAChB3uC,EAAIysC,EAAG,MAAM,CACbuE,EAAM,EAAE,CACRC,EAAM,EAAE,CACR1vC,EAAIsvC,EAAQ,EAEZrE,EAAI,EACJuC,EAAK,EACLvB,EAAOY,EAAS,CAACA,CAAM,CAAC,EAAE,CAAGnoB,IAC7BwnB,EAAOW,EAAS,CAACA,CAAM,CAAC,EAAE,CAAG,CAACnoB,IAYlC,IAXA4mB,EAAYptC,EAAMd,EAAGoD,EAAG,SAAUE,CAAE,CAAEC,CAAE,EACtC,EAAE6sC,EACFvC,GAAK,AAACtqC,CAAAA,EAAKsqC,CAAAA,EAAKuC,EAEZ,CAACX,IACCnsC,EAAKurC,GAAMA,CAAAA,EAAOvrC,CAAC,EACnBA,EAAKwrC,GAAMA,CAAAA,EAAOxrC,CAAC,EAE3B,GAGKjD,EAAI,EAAGA,EAAIuC,EAAG,EAAEvC,EAAG,CACtB,IAAKkJ,EAAI,EAAGzE,EAAI,EAAGyE,EAAIlI,EAAG,EAAEkI,EAC1BzE,GAAKvE,KAAK,GAAG,CAACutC,CAAE,CAACvkC,EAAE,CAAElJ,GAAK0tC,CAAE,CAACxkC,EAAE,CAMjC,IAHA8oC,EAAI,IAAI,CAACvtC,GACTnC,EAAI,IAAIirC,aAAahrC,GAEhBsE,EAAI,EAAGA,EAAItE,EAAG,EAAEsE,EAAG,CACtB,IAAKqC,EAAI,EAAGzE,EAAI,EAAGyE,EAAIlI,EAAG,EAAEkI,EAC1BzE,GAAKvE,KAAK,GAAG,CAACutC,CAAE,CAACvkC,EAAE,CAAElJ,EAAI6G,EAG3BvE,CAAAA,CAAC,CAACuE,EAAE,CAAGpC,CACT,CAEAwtC,EAAI,IAAI,CAAC3vC,EACX,CAEA2vC,EAAI,IAAI,CAACD,GAET,IAAIE,EAAOC,AAkEf,SAA6BpvB,CAAM,EACjC,IAEI/iB,EAAG6G,EAAGtE,EAAG+H,EAAGvK,EAFZiB,EAAI+hB,EAAO,MAAM,CAAG,EACpBmvB,EAAO,EAAE,CAGb,IAAKlyC,EAAI,EAAGA,EAAIgB,EAAG,EAAEhB,EAAG,CAGtB,IAFAsK,EAAItK,EAEC6G,EAAI7G,EAAI,EAAG6G,EAAI7F,EAAG,EAAE6F,EACnB3G,KAAK,GAAG,CAAC6iB,CAAM,CAAC/iB,EAAE,CAAC6G,EAAE,EAAI3G,KAAK,GAAG,CAAC6iB,CAAM,CAAC/iB,EAAE,CAACsK,EAAE,GAChDA,CAAAA,EAAIzD,CAAAA,EAIR,IAAKtE,EAAIvC,EAAGuC,EAAIvB,EAAI,EAAG,EAAEuB,EACvBxC,EAAIgjB,CAAM,CAACxgB,EAAE,CAACvC,EAAE,CAChB+iB,CAAM,CAACxgB,EAAE,CAACvC,EAAE,CAAG+iB,CAAM,CAACxgB,EAAE,CAAC+H,EAAE,CAC3ByY,CAAM,CAACxgB,EAAE,CAAC+H,EAAE,CAAGvK,EAGjB,IAAK8G,EAAI7G,EAAI,EAAG6G,EAAI7F,EAAG,EAAE6F,EACvB,IAAKtE,EAAIvB,EAAGuB,GAAKvC,EAAGuC,IAClBwgB,CAAM,CAACxgB,EAAE,CAACsE,EAAE,EAAIkc,CAAM,CAACxgB,EAAE,CAACvC,EAAE,CAAG+iB,CAAM,CAAC/iB,EAAE,CAAC6G,EAAE,CAAGkc,CAAM,CAAC/iB,EAAE,CAACA,EAAE,AAGhE,CAEA,IAAK6G,EAAI7F,EAAI,EAAG6F,GAAK,EAAG,EAAEA,EAAG,CAG3B,IAFA9G,EAAI,EAECwC,EAAIsE,EAAI,EAAGtE,EAAIvB,EAAG,EAAEuB,EACvBxC,GAAKgjB,CAAM,CAACxgB,EAAE,CAACsE,EAAE,CAAGqrC,CAAI,CAAC3vC,EAAE,AAG7B2vC,CAAAA,CAAI,CAACrrC,EAAE,CAAG,AAACkc,CAAAA,CAAM,CAAC/hB,EAAE,CAAC6F,EAAE,CAAG9G,CAAAA,EAAKgjB,CAAM,CAAClc,EAAE,CAACA,EAAE,AAC7C,CAEA,OAAOqrC,CACT,EAxGmCD,GAC3BxtB,EAAK,SAAY9kB,CAAC,EACpBA,GAAKguC,EACL,IAAI5qC,EAAI6qC,EAAKsE,CAAI,CAAC,EAAE,CAAGA,CAAI,CAAC,EAAE,CAAGvyC,EAAIuyC,CAAI,CAAC,EAAE,CAAGvyC,EAAIA,EAEnD,IAAKK,EAAI,EAAGA,EAAIuC,EAAG,EAAEvC,EACnB+C,GAAKmvC,CAAI,CAAClyC,EAAE,CAAGE,KAAK,GAAG,CAACP,EAAGK,GAG7B,OAAO+C,CACT,EACIo1B,EAAMoW,EAAUC,EAAMC,EAAMhqB,GAKhC,OAHA0T,EAAI,YAAY,CAAGia,AAyBvB,SAAkB7vC,CAAC,CAAEL,CAAC,CAAEvC,CAAC,CAAEoD,CAAC,EAC1B,IACI/C,EAAG6G,EAAGpC,EAAGnC,EADT+vC,EAAIzyC,MAAM2C,GAGd,IAAKvC,EAAI,EAAGA,EAAIuC,EAAG,EAAEvC,EACnBqyC,CAAC,CAACryC,EAAE,CAAG,EAIT,IAAKA,EAAIuC,EAAI,EAAGvC,GAAK,EAAG,EAAEA,EAKxB,IAJAyE,EAAIvC,CAAC,CAAClC,EAAE,CACRsC,EAAI,EACJ+vC,CAAC,CAACryC,EAAE,EAAIyE,EAEHoC,EAAI,EAAGA,GAAK7G,EAAG,EAAE6G,EACpBvE,GAAK,AAACtC,CAAAA,EAAI,EAAI6G,CAAAA,EAAKA,EAEnBwrC,CAAC,CAACryC,EAAI6G,EAAE,EAAIpC,EAAIvE,KAAK,GAAG,CAACP,EAAGkH,GAAKvE,EAMrC,OADA+vC,CAAC,CAAC,EAAE,EAAItvC,EACDsvC,CACT,EAjDgC9vC,EAAG2vC,EAAM,CAACvE,EAAIC,GAC1CzV,EAAI,OAAO,CAAG1T,EACd0T,EAAI,QAAQ,CAAG6V,EAAcvtC,EAAMd,EAAGoD,EAAGyqC,EAAG/oB,GACrC0T,CACT,CAkBA,OAhBA2Z,EAAW,MAAM,CAAG,SAAUrF,CAAG,EAC/B,OAAO7oC,UAAU,MAAM,CAAIwrC,CAAAA,EAAS3C,EAAKqF,CAAS,EAAK1C,CACzD,EAEA0C,EAAW,CAAC,CAAG,SAAUrtB,CAAE,EACzB,OAAO7gB,UAAU,MAAM,CAAIjE,CAAAA,EAAI8kB,EAAIqtB,CAAS,EAAKnyC,CACnD,EAEAmyC,EAAW,CAAC,CAAG,SAAUrtB,CAAE,EACzB,OAAO7gB,UAAU,MAAM,CAAIb,CAAAA,EAAI0hB,EAAIqtB,CAAS,EAAK/uC,CACnD,EAEA+uC,EAAW,KAAK,CAAG,SAAU9wC,CAAC,EAC5B,OAAO4C,UAAU,MAAM,CAAIiuC,CAAAA,EAAQ7wC,EAAG8wC,CAAS,EAAKD,CACtD,EAEOC,CACT,EA+IAvF,EAAQ,aAAa,CAzErB,WACE,IAMI6C,EANAzvC,EAAI,SAAW0B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EACI0B,EAAI,SAAW1B,CAAC,EAClB,OAAOA,CAAC,CAAC,EAAE,AACb,EAGA,SAASixC,EAAM7xC,CAAI,EACjB,IAAIO,EAAI,EACJssC,EAAI,EACJE,EAAI,EACJ6B,EAAK,EACLC,EAAK,EACLiD,EAAK,EACL/D,EAAOY,EAAS,CAACA,CAAM,CAAC,EAAE,CAAGnoB,IAC7BwnB,EAAOW,EAAS,CAACA,CAAM,CAAC,EAAE,CAAG,CAACnoB,IAClC4mB,EAAYptC,EAAMd,EAAGoD,EAAG,SAAUE,CAAE,CAAEC,CAAE,EACtC,IAAI0uC,EAAK1xC,KAAK,GAAG,CAAC+C,GACdmtC,EAAKlwC,KAAK,GAAG,CAACgD,EAClB,GAAElC,EACFssC,GAAK,AAACsE,CAAAA,EAAKtE,CAAAA,EAAKtsC,EAChBwsC,GAAK,AAAC4C,CAAAA,EAAK5C,CAAAA,EAAKxsC,EAChBquC,GAAM,AAACuC,CAAAA,EAAKxB,EAAKf,CAAC,EAAKruC,EACvBsuC,GAAM,AAACsC,CAAAA,EAAKA,EAAKtC,CAAC,EAAKtuC,EACvBuxC,GAAM,AAACrvC,CAAAA,EAAKqvC,CAAC,EAAKvxC,EAEd,CAACouC,IACCnsC,EAAKurC,GAAMA,CAAAA,EAAOvrC,CAAC,EACnBA,EAAKwrC,GAAMA,CAAAA,EAAOxrC,CAAC,EAE3B,GAEA,IACIssC,EAAQ/C,EADDuC,EAAIzB,EAAGE,EAAG6B,EAAIC,GACQ,GAC7BptC,EAAIqtC,CAAK,CAAC,EAAE,CACZptC,EAAIotC,CAAK,CAAC,EAAE,CAEhBrtC,EAAIhC,KAAK,GAAG,CAACgC,GAEb,IAAIuiB,EAAK,SAAY9kB,CAAC,EACpB,OAAOuC,EAAIhC,KAAK,GAAG,CAACP,EAAGwC,EACzB,EACIg2B,EAAMoW,EAAUC,EAAMC,EAAMhqB,GAMhC,OAJA0T,EAAI,CAAC,CAAGj2B,EACRi2B,EAAI,CAAC,CAAGh2B,EACRg2B,EAAI,OAAO,CAAG1T,EACd0T,EAAI,QAAQ,CAAG6V,EAAcvtC,EAAMd,EAAGoD,EAAGwvC,EAAI9tB,GACtC0T,CACT,CAcA,OAZAma,EAAM,MAAM,CAAG,SAAU7F,CAAG,EAC1B,OAAO7oC,UAAU,MAAM,CAAIwrC,CAAAA,EAAS3C,EAAK6F,CAAI,EAAKlD,CACpD,EAEAkD,EAAM,CAAC,CAAG,SAAU7tB,CAAE,EACpB,OAAO7gB,UAAU,MAAM,CAAIjE,CAAAA,EAAI8kB,EAAI6tB,CAAI,EAAK3yC,CAC9C,EAEA2yC,EAAM,CAAC,CAAG,SAAU7tB,CAAE,EACpB,OAAO7gB,UAAU,MAAM,CAAIb,CAAAA,EAAI0hB,EAAI6tB,CAAI,EAAKvvC,CAC9C,EAEOuvC,CACT,EAQA/F,EAAQ,cAAc,CAAGkD,EAEzB7qC,OAAO,cAAc,CAAC2nC,EAAS,aAAc,CAAE,MAAO,EAAK,EAE7D,EAl3ByEA,wECFzE,IAIIiG,EACAC,EALAC,EAAQ,EACRC,EAAU,EACV/B,EAAW,EAIXgC,EAAY,EACZC,EAAW,EACXC,EAAY,EACZC,EAAQ,AAAuB,UAAvB,OAAOC,aAA4BA,YAAY,GAAG,CAAGA,YAAcC,KAC3EC,EAAW,AAAkB,UAAlB,OAAO3R,QAAuBA,OAAO,qBAAqB,CAAGA,OAAO,qBAAqB,CAAC,IAAI,CAACA,QAAU,SAAS/hC,CAAC,EAAI2zC,WAAW3zC,EAAG,GAAK,EAElJ,SAAS4zC,IACd,OAAOP,GAAaK,CAAAA,EAASG,GAAWR,EAAWE,EAAM,GAAG,GAAKD,CAAQ,CAC3E,CAEA,SAASO,IACPR,EAAW,CACb,CAEO,SAASS,IACd,IAAI,CAAC,KAAK,CACV,IAAI,CAAC,KAAK,CACV,IAAI,CAAC,KAAK,CAAG,IACf,CAyBO,SAASC,EAAM/xC,CAAQ,CAAEgyC,CAAK,CAAEC,CAAI,EACzC,IAAI1zC,EAAI,IAAIuzC,EAEZ,OADAvzC,EAAE,OAAO,CAACyB,EAAUgyC,EAAOC,GACpB1zC,CACT,CA3BAuzC,EAAM,SAAS,CAAGC,EAAM,SAAS,CAAG,CAClC,YAAaD,EACb,QAAS,SAAS9xC,CAAQ,CAAEgyC,CAAK,CAAEC,CAAI,EACrC,GAAI,AAAoB,YAApB,OAAOjyC,EAAyB,MAAM,AAAIuwB,UAAU,8BACxD0hB,EAAO,AAACA,CAAAA,AAAQ,MAARA,EAAeL,IAAQ,CAACK,CAAG,EAAMD,CAAAA,AAAS,MAATA,EAAgB,EAAI,CAACA,CAAI,EAC9D,CAAC,IAAI,CAAC,KAAK,EAAIf,IAAa,IAAI,GAC9BA,EAAUA,EAAS,KAAK,CAAG,IAAI,CAC9BD,EAAW,IAAI,CACpBC,EAAW,IAAI,EAEjB,IAAI,CAAC,KAAK,CAAGjxC,EACb,IAAI,CAAC,KAAK,CAAGiyC,EACbC,GACF,EACA,KAAM,WACA,IAAI,CAAC,KAAK,GACZ,IAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,KAAK,CAAGzsB,IACbysB,IAEJ,CACF,EAmBA,SAASC,IACPd,EAAW,AAACD,CAAAA,EAAYG,EAAM,GAAG,EAAC,EAAKD,EACvCJ,EAAQC,EAAU,EAClB,GAAI,EACFiB,AAfG,WACLR,IACA,EAAEV,EAEF,IADA,IAAkB1qC,EAAdjI,EAAIyyC,EACDzyC,GACAiI,CAAAA,EAAI6qC,EAAW9yC,EAAE,KAAK,AAAD,GAAM,GAAGA,EAAE,KAAK,CAAC,IAAI,CAAC,KAAMiI,GACtDjI,EAAIA,EAAE,KAAK,AAEb,GAAE2yC,CACJ,GAOE,QAAU,CACRA,EAAQ,EACRmB,AAUJ,WAEE,IADA,IAAIC,EAAmBC,EAAfC,EAAKxB,EAAciB,EAAOxsB,IAC3B+sB,GACDA,EAAG,KAAK,EACNP,EAAOO,EAAG,KAAK,EAAEP,CAAAA,EAAOO,EAAG,KAAK,AAAD,EACnCF,EAAKE,EAAIA,EAAKA,EAAG,KAAK,GAEtBD,EAAKC,EAAG,KAAK,CAAEA,EAAG,KAAK,CAAG,KAC1BA,EAAKF,EAAKA,EAAG,KAAK,CAAGC,EAAKvB,EAAWuB,GAGzCtB,EAAWqB,EACXJ,EAAMD,EACR,IAtBIZ,EAAW,CACb,CACF,CAEA,SAASoB,IACP,IAAIb,EAAML,EAAM,GAAG,GAAIS,EAAQJ,EAAMR,EACjCY,EA7EU,KA6ESV,CAAAA,GAAaU,EAAOZ,EAAYQ,CAAE,CAC3D,CAiBA,SAASM,EAAMD,CAAI,GACbf,IACAC,GAASA,CAAAA,EAAUuB,aAAavB,EAAO,EAEvCa,AADQC,EAAOZ,EACP,IACNY,EAAOxsB,KAAU0rB,CAAAA,EAAUQ,WAAWQ,EAAMF,EAAOV,EAAM,GAAG,GAAKD,EAAS,EAC1ElC,GAAUA,CAAAA,EAAWuD,cAAcvD,EAAQ,IAE3C,CAACA,GAAUgC,CAAAA,EAAYG,EAAM,GAAG,GAAInC,EAAWwD,YAAYH,EAvGnD,IAuGkE,EAC9EvB,EAAQ,EAAGQ,EAASS,IAExB,mGCuC0BvmC,EAAMinC,wBAjJhC,IAAMC,EAAsB,QAC5B,SAASC,EAAahiC,CAAG,CAAE3Q,CAAK,EACxB,AAAe,YAAf,OAAO2Q,EACPA,EAAI3Q,GACG2Q,GACPA,CAAAA,EAAI,OAAO,CAAG3Q,CAAI,CAE1B,CAMA,SAAS4yC,EAAUC,CAAW,CAAEC,CAAU,EACtCD,EAAY,MAAM,CAAGC,CACzB,CACA,SAASC,EAAYF,CAAW,CAAEG,CAAY,CAAEC,EAAeP,CAAmB,EAC9E,IAAMQ,EAAgB,EAAE,AACxBL,CAAAA,EAAY,QAAQ,CAAGG,EAAa,GAAG,CAAC,AAACG,IAErC,IAAMC,EAAiBP,EAAY,QAAQ,CAAC,IAAI,CAAC,AAACzM,GAAUA,CAAO,CAAC6M,EAAa,GAAKE,CAAW,CAACF,EAAa,QAG/G,AAAI,CAACG,GAAkB,CAACD,EAAY,IAAI,EAAID,EAAc,QAAQ,CAACE,GACxD,CACH,GAAGD,CAAW,AAClB,GAEJD,EAAc,IAAI,CAACE,GACnBpwC,OAAO,MAAM,CAACowC,EAAgBD,GACvBC,EACX,EACJ,CA+GA,IAAMC,EAAsB,iBAtE5B,SAAwB,CAAE1zC,OAAAA,EAAQ,GAAG,CAAG0R,MAAAA,EAAO,GAAG,CAAGiiC,OAAAA,EAAQ,EAAK,CAAGL,aAAAA,CAAY,CAAGznC,KAAAA,CAAI,CAAG3M,KAAAA,CAAI,CAAG6R,QAAAA,CAAO,CAAG6iC,QAAAA,EAAS,EAAE,CAAGC,gBAAAA,CAAe,CAAG,GAAG9mB,EAAO,CAAE/b,CAAG,EACvJ,IAAM8iC,EAAY,aAAO,MACnBC,EAAW,eACXC,EAAc,KACXF,EAAU,OAAO,GACtBC,EAAS,OAAO,CAAG,IAAI,IAAO,CAACD,EAAU,OAAO,CAAE,CAC9CjoC,KAAAA,EACA,KAAMooC,AA/ClB,SAAmB/0C,CAAI,CAAEo0C,EAAeP,CAAmB,MApBxCG,EAAaC,EAqB5B,IAAMe,EAAW,CACb,OAAQ,EAAE,CACV,SAAU,EAAE,AAChB,EAGA,OA3BehB,EAyBLgB,EAzBkBf,EAyBRj0C,EAAK,MAAM,CAxB/Bg0C,EAAY,MAAM,CAAGC,EAyBrBC,EAAYc,EAAUh1C,EAAK,QAAQ,CAAEo0C,GAC9BY,CACX,EAuC4Bh1C,EAAMo0C,GACtBviC,QAAAA,EACA6iC,QAAAA,CACJ,GACAZ,EAAahiC,EAAK+iC,EAAS,OAAO,EACtC,EACMI,EAAe,KACjBnB,EAAahiC,EAAK,MACd+iC,EAAS,OAAO,GAChBA,EAAS,OAAO,CAAC,OAAO,GACxBA,EAAS,OAAO,CAAG,KAE3B,EA4CA,MA3CA,gBAAU,KACN,GAAI,CAACJ,GAAUI,EAAS,OAAO,EAAIhjC,EAAS,KAtFhC8xB,EAAOuR,EAAPvR,EAuFGkR,EAAS,OAAO,CAvFZK,EAuFcrjC,EAtFrC8xB,EAAM,OAAO,CAAG,CACZ,GAAGuR,CAAW,AAClB,CAqFI,CACJ,EAAG,CACCT,EACA5iC,EACH,EACD,gBAAU,KACN,GAAI,CAAC4iC,GAAUI,EAAS,OAAO,CAAE,KAzFtBb,EAAaC,EAAbD,EA0FGa,EAAS,OAAO,CAAC,MAAM,CAAC,IAAI,CA1FlBZ,EA0FoBj0C,EAAK,MAAM,CAzF3Dg0C,EAAY,MAAM,CAAGC,CA0FjB,CACJ,EAAG,CACCQ,EACAz0C,EAAK,MAAM,CACd,EACD,gBAAU,KACF,CAACy0C,GAAUI,EAAS,OAAO,EAAI70C,EAAK,QAAQ,EAC5Ck0C,EAAYW,EAAS,OAAO,CAAC,MAAM,CAAC,IAAI,CAAE70C,EAAK,QAAQ,CAAEo0C,EAEjE,EAAG,CACCK,EACAz0C,EAAK,QAAQ,CAChB,EACD,gBAAU,KACD60C,EAAS,OAAO,GACjBJ,GACAQ,IACAvC,WAAWoC,IAEXD,EAAS,OAAO,CAAC,MAAM,GAE/B,EAAG,CACCJ,EACA5iC,EACA7R,EAAK,MAAM,CACXA,EAAK,QAAQ,CAChB,EACD,gBAAU,KACN80C,IACO,IAAIG,KAEZ,EAAE,EACgB,eAAmB,CAAC,SAAU9wC,OAAO,MAAM,CAAC,CAC7D,IAAKywC,EACL,KAAM,MACN,OAAQ9zC,EACR,MAAO0R,CACX,EAAGqb,GAAQ8mB,EACf,GAeA,IAAMQ,GAZoBxoC,EAYwB,WAZlBinC,EAY8B,IAAkB,CAX5E,aAAgB,CAACA,GACI,iBAAW,CAAC/lB,EAAO/b,IAAoB,eAAmB,CAAC0iC,EAAOrwC,OAAO,MAAM,CAAC,CACjG,EAAG0pB,EAAO,CACN,IAAK/b,EACL,KAAMnF,CACV,2HCvJO,WAASlL,CAAC,CAAEC,CAAC,EAC1B,MAAO,AAAC,SAAcA,GAAK,GAAW,CAAG0zC,CAAW,EAAG3zC,EAAGC,EAC5D,CAEO,SAAS0zC,EAAa3zC,CAAC,CAAEC,CAAC,EAC/B,IAIInC,EAJA81C,EAAK3zC,EAAIA,EAAE,MAAM,CAAG,EACpB4zC,EAAK7zC,EAAIhC,KAAK,GAAG,CAAC41C,EAAI5zC,EAAE,MAAM,EAAI,EAClCvC,EAAI,AAAIC,MAAMm2C,GACdzzC,EAAI,AAAI1C,MAAMk2C,GAGlB,IAAK91C,EAAI,EAAGA,EAAI+1C,EAAI,EAAE/1C,EAAGL,CAAC,CAACK,EAAE,CAAG,QAAMkC,CAAC,CAAClC,EAAE,CAAEmC,CAAC,CAACnC,EAAE,EAChD,KAAOA,EAAI81C,EAAI,EAAE91C,EAAGsC,CAAC,CAACtC,EAAE,CAAGmC,CAAC,CAACnC,EAAE,CAE/B,OAAO,SAASD,CAAC,EACf,IAAKC,EAAI,EAAGA,EAAI+1C,EAAI,EAAE/1C,EAAGsC,CAAC,CAACtC,EAAE,CAAGL,CAAC,CAACK,EAAE,CAACD,GACrC,OAAOuC,CACT,CACF,sCCrBe,WAASJ,CAAC,CAAEC,CAAC,EACtB,CAACA,GAAGA,CAAAA,EAAI,EAAE,AAAD,EACb,IAEInC,EAFAgB,EAAIkB,EAAIhC,KAAK,GAAG,CAACiC,EAAE,MAAM,CAAED,EAAE,MAAM,EAAI,EACvCI,EAAIH,EAAE,KAAK,GAEf,OAAO,SAASpC,CAAC,EACf,IAAKC,EAAI,EAAGA,EAAIgB,EAAG,EAAEhB,EAAGsC,CAAC,CAACtC,EAAE,CAAGkC,CAAC,CAAClC,EAAE,CAAI,GAAID,CAAAA,EAAKoC,CAAC,CAACnC,EAAE,CAAGD,EACvD,OAAOuC,CACT,CACF,CAEO,SAAS0zC,EAAcr2C,CAAC,EAC7B,OAAOs2C,YAAY,MAAM,CAACt2C,IAAM,CAAEA,CAAAA,aAAau2C,QAAO,CACxD,4FCbe,WAASC,CAAW,CAAE7J,CAAO,CAAE/d,CAAS,EACrD4nB,EAAY,SAAS,CAAG7J,EAAQ,SAAS,CAAG/d,EAC5CA,EAAU,WAAW,CAAG4nB,CAC1B,CAEO,SAASC,EAAOhyC,CAAM,CAAEiM,CAAU,EACvC,IAAIke,EAAY3pB,OAAO,MAAM,CAACR,EAAO,SAAS,EAC9C,IAAK,IAAIsT,KAAOrH,EAAYke,CAAS,CAAC7W,EAAI,CAAGrH,CAAU,CAACqH,EAAI,CAC5D,OAAO6W,CACT,CCPO,SAAS8nB,IAAS,iCAGlB,IAAIC,EAAW,mBAElBC,EAAM,sBACNC,EAAM,oDACNC,EAAM,qDACNC,EAAQ,qBACRC,EAAe,AAAIC,OAAO,CAAC,OAAO,EAAEL,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,IAAI,CAAC,EAC3DM,EAAe,AAAID,OAAO,CAAC,OAAO,EAAEH,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,IAAI,CAAC,EAC3DK,EAAgB,AAAIF,OAAO,CAAC,QAAQ,EAAEL,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEC,EAAI,IAAI,CAAC,EACpEO,EAAgB,AAAIH,OAAO,CAAC,QAAQ,EAAEH,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAED,EAAI,IAAI,CAAC,EACpEQ,EAAe,AAAIJ,OAAO,CAAC,OAAO,EAAEJ,EAAI,CAAC,EAAEC,EAAI,CAAC,EAAEA,EAAI,IAAI,CAAC,EAC3DQ,EAAgB,AAAIL,OAAO,CAAC,QAAQ,EAAEJ,EAAI,CAAC,EAAEC,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAED,EAAI,IAAI,CAAC,EAEpEU,EAAQ,CACV,UAAW,SACX,aAAc,SACd,KAAM,MACN,WAAY,QACZ,MAAO,SACP,MAAO,SACP,OAAQ,SACR,MAAO,EACP,eAAgB,SAChB,KAAM,IACN,WAAY,QACZ,MAAO,SACP,UAAW,SACX,UAAW,QACX,WAAY,QACZ,UAAW,SACX,MAAO,SACP,eAAgB,QAChB,SAAU,SACV,QAAS,SACT,KAAM,MACN,SAAU,IACV,SAAU,MACV,cAAe,SACf,SAAU,SACV,UAAW,MACX,SAAU,SACV,UAAW,SACX,YAAa,QACb,eAAgB,QAChB,WAAY,SACZ,WAAY,SACZ,QAAS,QACT,WAAY,SACZ,aAAc,QACd,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,MACf,WAAY,QACZ,SAAU,SACV,YAAa,MACb,QAAS,QACT,QAAS,QACT,WAAY,QACZ,UAAW,SACX,YAAa,SACb,YAAa,QACb,QAAS,SACT,UAAW,SACX,WAAY,SACZ,KAAM,SACN,UAAW,SACX,KAAM,QACN,MAAO,MACP,YAAa,SACb,KAAM,QACN,SAAU,SACV,QAAS,SACT,UAAW,SACX,OAAQ,QACR,MAAO,SACP,MAAO,SACP,SAAU,SACV,cAAe,SACf,UAAW,QACX,aAAc,SACd,UAAW,SACX,WAAY,SACZ,UAAW,SACX,qBAAsB,SACtB,UAAW,SACX,WAAY,QACZ,UAAW,SACX,UAAW,SACX,YAAa,SACb,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,eAAgB,QAChB,eAAgB,SAChB,YAAa,SACb,KAAM,MACN,UAAW,QACX,MAAO,SACP,QAAS,SACT,OAAQ,QACR,iBAAkB,QAClB,WAAY,IACZ,aAAc,SACd,aAAc,QACd,eAAgB,QAChB,gBAAiB,QACjB,kBAAmB,MACnB,gBAAiB,QACjB,gBAAiB,SACjB,aAAc,QACd,UAAW,SACX,UAAW,SACX,SAAU,SACV,YAAa,SACb,KAAM,IACN,QAAS,SACT,MAAO,QACP,UAAW,QACX,OAAQ,SACR,UAAW,SACX,OAAQ,SACR,cAAe,SACf,UAAW,SACX,cAAe,SACf,cAAe,SACf,WAAY,SACZ,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,WAAY,SACZ,OAAQ,QACR,cAAe,QACf,IAAK,SACL,UAAW,SACX,UAAW,QACX,YAAa,QACb,OAAQ,SACR,WAAY,SACZ,SAAU,QACV,SAAU,SACV,OAAQ,SACR,OAAQ,SACR,QAAS,QACT,UAAW,QACX,UAAW,QACX,UAAW,QACX,KAAM,SACN,YAAa,MACb,UAAW,QACX,IAAK,SACL,KAAM,MACN,QAAS,SACT,OAAQ,SACR,UAAW,QACX,OAAQ,SACR,MAAO,SACP,MAAO,SACP,WAAY,SACZ,OAAQ,SACR,YAAa,QACf,EAiBA,SAASC,IACP,OAAO,IAAI,CAAC,GAAG,GAAG,SAAS,EAC7B,CAjBA,EAAOd,EAAO,EAAO,CACnB,KAAKe,CAAQ,EACX,OAAOxyC,OAAO,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAE,IAAI,CAAEwyC,EACnD,EACA,cACE,OAAO,IAAI,CAAC,GAAG,GAAG,WAAW,EAC/B,EACA,IAAKD,EACL,UAAWA,EACX,WAUF,WACE,OAAO,IAAI,CAAC,GAAG,GAAG,UAAU,EAC9B,EAXE,UAaF,WACE,OAAOE,EAAW,IAAI,EAAE,SAAS,EACnC,EAdE,UAAWC,EACX,SAAUA,CACZ,GAcA,SAASA,IACP,OAAO,IAAI,CAAC,GAAG,GAAG,SAAS,EAC7B,CAEe,SAAS,EAAMlf,CAAM,EAClC,IAAIn4B,EAAGiJ,EAEP,OADAkvB,EAAS,AAACA,CAAAA,EAAS,EAAC,EAAG,IAAI,GAAG,WAAW,GAClC,AAACn4B,CAAAA,EAAIy2C,EAAM,IAAI,CAACte,EAAM,EAAMlvB,CAAAA,EAAIjJ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAEA,EAAIkP,SAASlP,CAAC,CAAC,EAAE,CAAE,IAAKiJ,AAAM,IAANA,EAAUquC,EAAKt3C,GACrFiJ,AAAM,IAANA,EAAU,IAAIsuC,EAAI,AAACv3C,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAO,AAACA,GAAK,EAAI,GAAQA,AAAI,IAAJA,EAAW,AAAEA,CAAAA,AAAI,GAAJA,CAAM,GAAM,EAAMA,AAAI,GAAJA,EAAU,GAC/GiJ,AAAM,IAANA,EAAUuuC,EAAKx3C,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAM,AAACA,CAAAA,AAAI,IAAJA,CAAO,EAAK,KAC3EiJ,AAAM,IAANA,EAAUuuC,EAAK,AAACx3C,GAAK,GAAK,GAAQA,GAAK,EAAI,IAAO,AAACA,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAO,AAACA,GAAK,EAAI,GAAQA,AAAI,IAAJA,EAAW,AAAC,CAAEA,CAAAA,AAAI,GAAJA,CAAM,GAAM,EAAMA,AAAI,GAAJA,CAAO,EAAK,KAClJ,IAAG,EACH,AAACA,CAAAA,EAAI02C,EAAa,IAAI,CAACve,EAAM,EAAK,IAAIof,EAAIv3C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAE,GAC5D,AAACA,CAAAA,EAAI42C,EAAa,IAAI,CAACze,EAAM,EAAK,IAAIof,EAAIv3C,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAK,GAChG,AAACA,CAAAA,EAAI62C,EAAc,IAAI,CAAC1e,EAAM,EAAKqf,EAAKx3C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,EAC9D,AAACA,CAAAA,EAAI82C,EAAc,IAAI,CAAC3e,EAAM,EAAKqf,EAAKx3C,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,CAAC,CAAC,EAAE,EAClG,AAACA,CAAAA,EAAI+2C,EAAa,IAAI,CAAC5e,EAAM,EAAKsf,EAAKz3C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAG,IAAKA,CAAC,CAAC,EAAE,CAAG,IAAK,GACrE,AAACA,CAAAA,EAAIg3C,EAAc,IAAI,CAAC7e,EAAM,EAAKsf,EAAKz3C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAG,IAAKA,CAAC,CAAC,EAAE,CAAG,IAAKA,CAAC,CAAC,EAAE,EAC1Ei3C,EAAM,cAAc,CAAC9e,GAAUmf,EAAKL,CAAK,CAAC9e,EAAO,EACjDA,AAAW,gBAAXA,EAA2B,IAAIof,EAAIG,IAAKA,IAAKA,IAAK,GAClD,IACR,CAEA,SAASJ,EAAKv2C,CAAC,EACb,OAAO,IAAIw2C,EAAIx2C,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAMA,AAAI,IAAJA,EAAU,EAC1D,CAEA,SAASy2C,EAAKntC,CAAC,CAAEstC,CAAC,CAAEz1C,CAAC,CAAED,CAAC,EAEtB,OADIA,GAAK,GAAGoI,CAAAA,EAAIstC,EAAIz1C,EAAIw1C,GAAE,EACnB,IAAIH,EAAIltC,EAAGstC,EAAGz1C,EAAGD,EAC1B,CASO,SAAS,EAAIoI,CAAC,CAAEstC,CAAC,CAAEz1C,CAAC,CAAE01C,CAAO,MAPTh0B,EAQzB,OAAOjgB,AAAqB,GAArBA,UAAU,MAAM,CANvB,CADI,CAAEigB,CAAAA,CADmBA,EAQkBvZ,aAPxB+rC,CAAI,GAAIxyB,CAAAA,EAAI,EAAMA,EAAC,EACjCA,GAEE,IAAI2zB,EAAI3zB,AADfA,CAAAA,EAAIA,EAAE,GAAG,EAAC,EACO,CAAC,CAAEA,EAAE,CAAC,CAAEA,EAAE,CAAC,CAAEA,EAAE,OAAO,EAFxB,IAAI2zB,EAM6B,IAAIA,EAAIltC,EAAGstC,EAAGz1C,EAAG01C,AAAW,MAAXA,EAAkB,EAAIA,EACzF,CAEO,SAASL,EAAIltC,CAAC,CAAEstC,CAAC,CAAEz1C,CAAC,CAAE01C,CAAO,EAClC,IAAI,CAAC,CAAC,CAAG,CAACvtC,EACV,IAAI,CAAC,CAAC,CAAG,CAACstC,EACV,IAAI,CAAC,CAAC,CAAG,CAACz1C,EACV,IAAI,CAAC,OAAO,CAAG,CAAC01C,CAClB,CA8BA,SAASC,IACP,MAAO,CAAC,CAAC,EAAEC,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,IAAI,CAAC,CAAC,EAAE,CAAC,AACtD,CA9BA,EAAOP,EAAK,EAAKpB,EAAOC,EAAO,CAC7B,SAAS9zC,CAAC,EAER,OADAA,EAAIA,AAAK,MAALA,EAAY+zC,EAAWp2C,KAAK,GAAG,CAACo2C,EAAU/zC,GACvC,IAAIi1C,EAAI,IAAI,CAAC,CAAC,CAAGj1C,EAAG,IAAI,CAAC,CAAC,CAAGA,EAAG,IAAI,CAAC,CAAC,CAAGA,EAAG,IAAI,CAAC,OAAO,CACjE,EACA,OAAOA,CAAC,EAEN,OADAA,EAAIA,AAAK,MAALA,EAxPY,GAwPSrC,KAAK,GAAG,CAxPjB,GAwP0BqC,GACnC,IAAIi1C,EAAI,IAAI,CAAC,CAAC,CAAGj1C,EAAG,IAAI,CAAC,CAAC,CAAGA,EAAG,IAAI,CAAC,CAAC,CAAGA,EAAG,IAAI,CAAC,OAAO,CACjE,EACA,MACE,OAAO,IAAI,AACb,EACA,QACE,OAAO,IAAIi1C,EAAIQ,EAAO,IAAI,CAAC,CAAC,EAAGA,EAAO,IAAI,CAAC,CAAC,EAAGA,EAAO,IAAI,CAAC,CAAC,EAAGC,EAAO,IAAI,CAAC,OAAO,EACpF,EACA,cACE,OAAO,AAAC,KAAQ,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,CAAG,OAC3B,KAAQ,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,CAAG,OAC3B,KAAQ,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,CAAG,OAC3B,GAAK,IAAI,CAAC,OAAO,EAAI,IAAI,CAAC,OAAO,EAAI,CAC/C,EACA,IAAKH,EACL,UAAWA,EACX,WASF,WACE,MAAO,CAAC,CAAC,EAAEC,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,AAACG,CAAAA,MAAM,IAAI,CAAC,OAAO,EAAI,EAAI,IAAI,CAAC,OAAO,AAAD,EAAK,KAAK,CAAC,AAC5G,EAVE,UAAWC,EACX,SAAUA,CACZ,IAUA,SAASA,IACP,IAAMj2C,EAAI+1C,EAAO,IAAI,CAAC,OAAO,EAC7B,MAAO,CAAC,EAAE/1C,AAAM,IAANA,EAAU,OAAS,QAAQ,EAAE81C,EAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAEA,EAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAEA,EAAO,IAAI,CAAC,CAAC,EAAE,EAAE91C,AAAM,IAANA,EAAU,IAAM,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,AAC3H,CAEA,SAAS+1C,EAAOJ,CAAO,EACrB,OAAOK,MAAML,GAAW,EAAI33C,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAAC,EAAG23C,GACtD,CAEA,SAASG,EAAOp2C,CAAK,EACnB,OAAO1B,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAAC,IAAKA,KAAK,KAAK,CAAC0B,IAAU,GACxD,CAEA,SAASm2C,EAAIn2C,CAAK,EAEhB,MAAO,AAACA,CAAAA,AADRA,CAAAA,EAAQo2C,EAAOp2C,EAAK,EACJ,GAAK,IAAM,EAAC,EAAKA,EAAM,QAAQ,CAAC,GAClD,CAEA,SAAS81C,EAAKjT,CAAC,CAAEt/B,CAAC,CAAE+D,CAAC,CAAEhH,CAAC,EAItB,OAHIA,GAAK,EAAGuiC,EAAIt/B,EAAI+D,EAAIyuC,IACfzuC,GAAK,GAAKA,GAAK,EAAGu7B,EAAIt/B,EAAIwyC,IAC1BxyC,GAAK,GAAGs/B,CAAAA,EAAIkT,GAAE,EAChB,IAAIS,EAAI3T,EAAGt/B,EAAG+D,EAAGhH,EAC1B,CAEO,SAASm1C,EAAWxzB,CAAC,EAC1B,GAAIA,aAAau0B,EAAK,OAAO,IAAIA,EAAIv0B,EAAE,CAAC,CAAEA,EAAE,CAAC,CAAEA,EAAE,CAAC,CAAEA,EAAE,OAAO,EAE7D,GADI,CAAEA,CAAAA,aAAawyB,CAAI,GAAIxyB,CAAAA,EAAI,EAAMA,EAAC,EAClC,CAACA,EAAG,OAAO,IAAIu0B,EACnB,GAAIv0B,aAAau0B,EAAK,OAAOv0B,EAE7B,IAAIvZ,EAAIuZ,AADRA,CAAAA,EAAIA,EAAE,GAAG,EAAC,EACA,CAAC,CAAG,IACV+zB,EAAI/zB,EAAE,CAAC,CAAG,IACV1hB,EAAI0hB,EAAE,CAAC,CAAG,IACVme,EAAM9hC,KAAK,GAAG,CAACoK,EAAGstC,EAAGz1C,GACrB8/B,EAAM/hC,KAAK,GAAG,CAACoK,EAAGstC,EAAGz1C,GACrBsiC,EAAIkT,IACJxyC,EAAI88B,EAAMD,EACV94B,EAAI,AAAC+4B,CAAAA,EAAMD,CAAE,EAAK,EAUtB,OATI78B,GACas/B,EAAXn6B,IAAM23B,EAAS,AAAC2V,CAAAA,EAAIz1C,CAAAA,EAAKgD,EAAI,AAACyyC,CAAAA,EAAIz1C,CAAAA,EAAK,EAClCy1C,IAAM3V,EAAS,AAAC9/B,CAAAA,EAAImI,CAAAA,EAAKnF,EAAI,EAC7B,AAACmF,CAAAA,EAAIstC,CAAAA,EAAKzyC,EAAI,EACvBA,GAAK+D,EAAI,GAAM+4B,EAAMD,EAAM,EAAIC,EAAMD,EACrCyC,GAAK,IAELt/B,EAAI+D,EAAI,GAAKA,EAAI,EAAI,EAAIu7B,EAEpB,IAAI2T,EAAI3T,EAAGt/B,EAAG+D,EAAG2a,EAAE,OAAO,CACnC,CAMA,SAASu0B,EAAI3T,CAAC,CAAEt/B,CAAC,CAAE+D,CAAC,CAAE2uC,CAAO,EAC3B,IAAI,CAAC,CAAC,CAAG,CAACpT,EACV,IAAI,CAAC,CAAC,CAAG,CAACt/B,EACV,IAAI,CAAC,CAAC,CAAG,CAAC+D,EACV,IAAI,CAAC,OAAO,CAAG,CAAC2uC,CAClB,CAsCA,SAASQ,EAAOz2C,CAAK,EAEnB,MAAOA,AADPA,CAAAA,EAAQ,AAACA,CAAAA,GAAS,GAAK,GAAE,EACV,EAAIA,EAAQ,IAAMA,CACnC,CAEA,SAAS02C,EAAO12C,CAAK,EACnB,OAAO1B,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAAC,EAAG0B,GAAS,GAC1C,CAGA,SAAS22C,EAAQ9T,CAAC,CAAE+T,CAAE,CAAEC,CAAE,EACxB,MAAO,AAAChU,CAAAA,EAAI,GAAK+T,EAAK,AAACC,CAAAA,EAAKD,CAAC,EAAK/T,EAAI,GAChCA,EAAI,IAAMgU,EACVhU,EAAI,IAAM+T,EAAK,AAACC,CAAAA,EAAKD,CAAC,EAAM,KAAM/T,CAAAA,EAAK,GACvC+T,CAAC,EAAK,GACd,CC3YO,SAASE,EAAM1E,CAAE,CAAE2E,CAAE,CAAEC,CAAE,CAAEC,CAAE,CAAEC,CAAE,EACtC,IAAI/E,EAAKC,EAAKA,EAAI+E,EAAKhF,EAAKC,EAC5B,MAAO,AAAC,CAAC,GAAI,EAAIA,EAAK,EAAID,EAAKgF,CAAC,EAAKJ,EAC/B,AAAC,GAAI,EAAI5E,EAAK,EAAIgF,CAAC,EAAKH,EACxB,AAAC,GAAI,EAAI5E,EAAK,EAAID,EAAK,EAAIgF,CAAC,EAAKF,EACjCE,EAAKD,CAAC,EAAK,CACnB,CDkVA,EAAOV,EAXA,SAAa3T,CAAC,CAAEt/B,CAAC,CAAE+D,CAAC,CAAE2uC,CAAO,EAClC,OAAOj0C,AAAqB,GAArBA,UAAU,MAAM,CAASyzC,EAAW5S,GAAK,IAAI2T,EAAI3T,EAAGt/B,EAAG+D,EAAG2uC,AAAW,MAAXA,EAAkB,EAAIA,EACzF,EASiBzB,EAAOC,EAAO,CAC7B,SAAS9zC,CAAC,EAER,OADAA,EAAIA,AAAK,MAALA,EAAY+zC,EAAWp2C,KAAK,GAAG,CAACo2C,EAAU/zC,GACvC,IAAI61C,EAAI,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAG71C,EAAG,IAAI,CAAC,OAAO,CACzD,EACA,OAAOA,CAAC,EAEN,OADAA,EAAIA,AAAK,MAALA,EA1VY,GA0VSrC,KAAK,GAAG,CA1VjB,GA0V0BqC,GACnC,IAAI61C,EAAI,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAG71C,EAAG,IAAI,CAAC,OAAO,CACzD,EACA,MACE,IAAIkiC,EAAI,IAAI,CAAC,CAAC,CAAG,IAAM,AAAC,KAAI,CAAC,CAAC,CAAG,GAAK,IAClCt/B,EAAI+yC,MAAMzT,IAAMyT,MAAM,IAAI,CAAC,CAAC,EAAI,EAAI,IAAI,CAAC,CAAC,CAC1ChvC,EAAI,IAAI,CAAC,CAAC,CACVuvC,EAAKvvC,EAAI,AAACA,CAAAA,EAAI,GAAMA,EAAI,EAAIA,CAAAA,EAAK/D,EACjCqzC,EAAK,EAAItvC,EAAIuvC,EACjB,OAAO,IAAIjB,EACTe,EAAQ9T,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAK+T,EAAIC,GAC1CF,EAAQ9T,EAAG+T,EAAIC,GACfF,EAAQ9T,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAK+T,EAAIC,GACzC,IAAI,CAAC,OAAO,CAEhB,EACA,QACE,OAAO,IAAIL,EAAIC,EAAO,IAAI,CAAC,CAAC,EAAGC,EAAO,IAAI,CAAC,CAAC,EAAGA,EAAO,IAAI,CAAC,CAAC,EAAGL,EAAO,IAAI,CAAC,OAAO,EACpF,EACA,cACE,MAAO,AAAC,IAAK,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,EAAI,GAAKC,MAAM,IAAI,CAAC,CAAC,IAC1C,GAAK,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,EAAI,GACzB,GAAK,IAAI,CAAC,OAAO,EAAI,IAAI,CAAC,OAAO,EAAI,CAC/C,EACA,YACE,IAAMh2C,EAAI+1C,EAAO,IAAI,CAAC,OAAO,EAC7B,MAAO,CAAC,EAAE/1C,AAAM,IAANA,EAAU,OAAS,QAAQ,EAAEm2C,EAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAEC,AAAiB,IAAjBA,EAAO,IAAI,CAAC,CAAC,EAAQ,GAAG,EAAEA,AAAiB,IAAjBA,EAAO,IAAI,CAAC,CAAC,EAAQ,CAAC,EAAEp2C,AAAM,IAANA,EAAU,IAAM,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,AACzI,CACF,IE1XA,MAAevC,GAAK,IAAMA,ECyBX,SAASq5C,EAAQ92C,CAAC,CAAEC,CAAC,EAClC,IAxBcD,EAAGb,EAwBbA,EAAIc,EAAID,EACZ,OAAOb,GAzBOa,EAyBIA,EAzBDb,EAyBIA,EAxBd,SAAStB,CAAC,EACf,OAAOmC,EAAInC,EAAIsB,CACjB,GAsB0B,EAAS62C,MAAMh2C,GAAKC,EAAID,EACpD,CCvBA,MAAe,AAAC,SAAS+2C,EAASl2C,CAAC,EACjC,IDaoBA,ECbhB6gC,EDcG,AAAa,GAAZ7gC,CAAAA,EAAI,EADQA,ECbFA,EDcLA,EAAWi2C,EAAU,SAAS92C,CAAC,CAAEC,CAAC,MAZ5BD,EAAGC,EAAGY,EAavB,OAAOZ,EAAID,GAbMA,EAaUA,EAbPC,EAaUA,EAZzBD,EAAIhC,KAAK,GAAG,CAACgC,EADKa,EAaUA,GAZRZ,EAAIjC,KAAK,GAAG,CAACiC,EAAGY,GAAKb,EAAGa,EAAI,EAAIA,EAAG,SAAShD,CAAC,EACtE,OAAOG,KAAK,GAAG,CAACgC,EAAInC,EAAIoC,EAAGY,EAC7B,GAUwC,EAASm1C,MAAMh2C,GAAKC,EAAID,EAChE,ECdA,SAASg3C,EAAIn3C,CAAK,CAAED,CAAG,EACrB,IAAIwI,EAAIs5B,EAAM,AAAC7hC,CAAAA,EAAQ,EAASA,EAAK,EAAG,CAAC,CAAE,AAACD,CAAAA,EAAM,EAASA,EAAG,EAAG,CAAC,EAC9D81C,EAAIhU,EAAM7hC,EAAM,CAAC,CAAED,EAAI,CAAC,EACxBK,EAAIyhC,EAAM7hC,EAAM,CAAC,CAAED,EAAI,CAAC,EACxB+1C,EAAUmB,EAAQj3C,EAAM,OAAO,CAAED,EAAI,OAAO,EAChD,OAAO,SAAS/B,CAAC,EAKf,OAJAgC,EAAM,CAAC,CAAGuI,EAAEvK,GACZgC,EAAM,CAAC,CAAG61C,EAAE73C,GACZgC,EAAM,CAAC,CAAGI,EAAEpC,GACZgC,EAAM,OAAO,CAAG81C,EAAQ93C,GACjBgC,EAAQ,EACjB,CACF,CAIA,OAFAm3C,EAAI,KAAK,CAAGD,EAELC,CACT,EAAG,GAEH,SAASC,EAAUC,CAAM,EACvB,OAAO,SAASC,CAAM,EACpB,IAIIr5C,EAAG4jC,EAJH5iC,EAAIq4C,EAAO,MAAM,CACjB/uC,EAAI,AAAI1K,MAAMoB,GACd42C,EAAI,AAAIh4C,MAAMoB,GACdmB,EAAI,AAAIvC,MAAMoB,GAElB,IAAKhB,EAAI,EAAGA,EAAIgB,EAAG,EAAEhB,EACnB4jC,EAAQ,EAASyV,CAAM,CAACr5C,EAAE,EAC1BsK,CAAC,CAACtK,EAAE,CAAG4jC,EAAM,CAAC,EAAI,EAClBgU,CAAC,CAAC53C,EAAE,CAAG4jC,EAAM,CAAC,EAAI,EAClBzhC,CAAC,CAACnC,EAAE,CAAG4jC,EAAM,CAAC,EAAI,EAMpB,OAJAt5B,EAAI8uC,EAAO9uC,GACXstC,EAAIwB,EAAOxB,GACXz1C,EAAIi3C,EAAOj3C,GACXyhC,EAAM,OAAO,CAAG,EACT,SAAS7jC,CAAC,EAIf,OAHA6jC,EAAM,CAAC,CAAGt5B,EAAEvK,GACZ6jC,EAAM,CAAC,CAAGgU,EAAE73C,GACZ6jC,EAAM,CAAC,CAAGzhC,EAAEpC,GACL6jC,EAAQ,EACjB,CACF,CACF,CAEsBuV,EH7CP,SAAShlB,CAAM,EAC5B,IAAInzB,EAAImzB,EAAO,MAAM,CAAG,EACxB,OAAO,SAASp0B,CAAC,EACf,IAAIC,EAAID,GAAK,EAAKA,EAAI,EAAKA,GAAK,EAAKA,CAAAA,EAAI,EAAGiB,EAAI,GAAKd,KAAK,KAAK,CAACH,EAAIiB,GAChE43C,EAAKzkB,CAAM,CAACn0B,EAAE,CACd64C,EAAK1kB,CAAM,CAACn0B,EAAI,EAAE,CAClB24C,EAAK34C,EAAI,EAAIm0B,CAAM,CAACn0B,EAAI,EAAE,CAAG,EAAI44C,EAAKC,EACtCC,EAAK94C,EAAIgB,EAAI,EAAImzB,CAAM,CAACn0B,EAAI,EAAE,CAAG,EAAI64C,EAAKD,EAC9C,OAAOF,EAAM,AAAC34C,CAAAA,EAAIC,EAAIgB,CAAAA,EAAKA,EAAG23C,EAAIC,EAAIC,EAAIC,EAC5C,CACF,GGoC4BK,ECpDb,SAAShlB,CAAM,EAC5B,IAAInzB,EAAImzB,EAAO,MAAM,CACrB,OAAO,SAASp0B,CAAC,EACf,IAAIC,EAAIE,KAAK,KAAK,CAAC,AAAC,CAACH,CAAAA,GAAK,GAAK,EAAI,EAAEA,EAAIA,CAAAA,EAAKiB,GAC1C23C,EAAKxkB,CAAM,CAAC,AAACn0B,CAAAA,EAAIgB,EAAI,GAAKA,EAAE,CAC5B43C,EAAKzkB,CAAM,CAACn0B,EAAIgB,EAAE,CAClB63C,EAAK1kB,CAAM,CAAC,AAACn0B,CAAAA,EAAI,GAAKgB,EAAE,CACxB83C,EAAK3kB,CAAM,CAAC,AAACn0B,CAAAA,EAAI,GAAKgB,EAAE,CAC5B,OAAO03C,EAAM,AAAC34C,CAAAA,EAAIC,EAAIgB,CAAAA,EAAKA,EAAG23C,EAAIC,EAAIC,EAAIC,EAC5C,CACF,oBCZe,WAAS52C,CAAC,CAAEC,CAAC,EAC1B,OAAOD,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAG,SAASpC,CAAC,EAC/B,OAAOmC,EAAK,GAAInC,CAAAA,EAAKoC,EAAIpC,CAC3B,CACF,CCFA,IAAIu5C,EAAM,8CACNC,EAAM,AAAI3C,OAAO0C,EAAI,MAAM,CAAE,kBCOlB,WAASp3C,CAAC,CAAEC,CAAC,EAC1B,IAAkBG,EAAdvC,EAAI,OAAOoC,EACf,OAAOA,AAAK,MAALA,GAAapC,AAAM,YAANA,EAAkB,EAASoC,GACzC,AAACpC,CAAAA,AAAM,WAANA,EAAiB+nB,EAClB/nB,AAAM,WAANA,EAAkB,AAACuC,CAAAA,EAAI,EAAMH,EAAC,EAAMA,CAAAA,EAAIG,EAAG,GDGpC,SAASJ,CAAC,CAAEC,CAAC,EAC1B,IAPWA,EANCA,EAcRq3C,EACAC,EACAC,EAHAC,EAAKL,EAAI,SAAS,CAAGC,EAAI,SAAS,CAAG,EAIrCv5C,EAAI,GACJmF,EAAI,EAAE,CACNy0C,EAAI,EAAE,CAMV,IAHA13C,GAAQ,GAAIC,GAAQ,GAGb,AAACq3C,CAAAA,EAAKF,EAAI,IAAI,CAACp3C,EAAC,GACfu3C,CAAAA,EAAKF,EAAI,IAAI,CAACp3C,EAAC,GAChBu3C,CAAAA,EAAKD,EAAG,KAAK,AAAD,EAAKE,IACpBD,EAAKv3C,EAAE,KAAK,CAACw3C,EAAID,GACbv0C,CAAC,CAACnF,EAAE,CAAEmF,CAAC,CAACnF,EAAE,EAAI05C,EACbv0C,CAAC,CAAC,EAAEnF,EAAE,CAAG05C,GAEZ,AAACF,CAAAA,EAAKA,CAAE,CAAC,EAAE,AAAD,IAAQC,CAAAA,EAAKA,CAAE,CAAC,EAAE,AAAD,EACzBt0C,CAAC,CAACnF,EAAE,CAAEmF,CAAC,CAACnF,EAAE,EAAIy5C,EACbt0C,CAAC,CAAC,EAAEnF,EAAE,CAAGy5C,GAEdt0C,CAAC,CAAC,EAAEnF,EAAE,CAAG,KACT45C,EAAE,IAAI,CAAC,CAAC,EAAG55C,EAAG,EAAG8nB,EAAO0xB,EAAIC,EAAG,IAEjCE,EAAKJ,EAAI,SAAS,CAYpB,OARII,EAAKx3C,EAAE,MAAM,GACfu3C,EAAKv3C,EAAE,KAAK,CAACw3C,GACTx0C,CAAC,CAACnF,EAAE,CAAEmF,CAAC,CAACnF,EAAE,EAAI05C,EACbv0C,CAAC,CAAC,EAAEnF,EAAE,CAAG05C,GAKTv0C,EAAE,MAAM,CAAG,EAAKy0C,CAAC,CAAC,EAAE,EA7ChBz3C,EA8CDy3C,CAAC,CAAC,EAAE,CAAC,CAAC,CA7CT,SAAS75C,CAAC,EACf,OAAOoC,EAAEpC,GAAK,EAChB,IATYoC,EAqDDA,EApDJ,WACL,OAAOA,CACT,GAmDOA,CAAAA,EAAIy3C,EAAE,MAAM,CAAE,SAAS75C,CAAC,EACvB,IAAK,IAAW8jB,EAAP7jB,EAAI,EAAMA,EAAImC,EAAG,EAAEnC,EAAGmF,CAAC,CAAC,AAAC0e,CAAAA,EAAI+1B,CAAC,CAAC55C,EAAE,AAAD,EAAG,CAAC,CAAC,CAAG6jB,EAAE,CAAC,CAAC9jB,GACrD,OAAOoF,EAAE,IAAI,CAAC,GAChB,EACR,EChDQhD,aAAa,EAAQ,EACrBA,aAAa8wC,KChBN,SAAS/wC,CAAC,CAAEC,CAAC,EAC1B,IAAId,EAAI,IAAI4xC,KACZ,OAAO/wC,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAG,SAASpC,CAAC,EAC/B,OAAOsB,EAAE,OAAO,CAACa,EAAK,GAAInC,CAAAA,EAAKoC,EAAIpC,GAAIsB,CACzC,CACF,EDYQ,QAAcc,GAAK03C,EAAA,CAAW,CAC9Bj6C,MAAM,OAAO,CAACuC,GAAK,GAAY,CAC/B,AAAqB,YAArB,OAAOA,EAAE,OAAO,EAAmB,AAAsB,YAAtB,OAAOA,EAAE,QAAQ,EAAmB+1C,MAAM/1C,GEjBtE,SAASD,CAAC,CAAEC,CAAC,EAC1B,IAEII,EAFAvC,EAAI,CAAC,EACLsC,EAAI,CAAC,EAMT,IAAKC,IAHDL,CAAAA,AAAM,OAANA,GAAc,AAAa,UAAb,OAAOA,CAAa,GAAGA,CAAAA,EAAI,CAAC,GAC1CC,CAAAA,AAAM,OAANA,GAAc,AAAa,UAAb,OAAOA,CAAa,GAAGA,CAAAA,EAAI,CAAC,GAEpCA,EACJI,KAAKL,EACPlC,CAAC,CAACuC,EAAE,CAAG,EAAML,CAAC,CAACK,EAAE,CAAEJ,CAAC,CAACI,EAAE,EAEvBD,CAAC,CAACC,EAAE,CAAGJ,CAAC,CAACI,EAAE,CAIf,OAAO,SAASxC,CAAC,EACf,IAAKwC,KAAKvC,EAAGsC,CAAC,CAACC,EAAE,CAAGvC,CAAC,CAACuC,EAAE,CAACxC,GACzB,OAAOuC,CACT,CACF,EFFQwlB,CAAK,EAAG5lB,EAAGC,EACnB,sCGrBe,WAASg0C,CAAW,CAAE7J,CAAO,CAAE/d,CAAS,EACrD4nB,EAAY,SAAS,CAAG7J,EAAQ,SAAS,CAAG/d,EAC5CA,EAAU,WAAW,CAAG4nB,CAC1B,CAEO,SAASC,EAAOhyC,CAAM,CAAEiM,CAAU,EACvC,IAAIke,EAAY3pB,OAAO,MAAM,CAACR,EAAO,SAAS,EAC9C,IAAK,IAAIsT,KAAOrH,EAAYke,CAAS,CAAC7W,EAAI,CAAGrH,CAAU,CAACqH,EAAI,CAC5D,OAAO6W,CACT,CCPO,SAAS8nB,IAAS,0DAGlB,IAAIC,EAAW,mBAElBC,EAAM,sBACNC,EAAM,oDACNC,EAAM,qDACNC,EAAQ,qBACRC,EAAe,AAAIC,OAAO,CAAC,OAAO,EAAEL,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,IAAI,CAAC,EAC3DM,EAAe,AAAID,OAAO,CAAC,OAAO,EAAEH,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,IAAI,CAAC,EAC3DK,EAAgB,AAAIF,OAAO,CAAC,QAAQ,EAAEL,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEC,EAAI,IAAI,CAAC,EACpEO,EAAgB,AAAIH,OAAO,CAAC,QAAQ,EAAEH,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAED,EAAI,IAAI,CAAC,EACpEQ,EAAe,AAAIJ,OAAO,CAAC,OAAO,EAAEJ,EAAI,CAAC,EAAEC,EAAI,CAAC,EAAEA,EAAI,IAAI,CAAC,EAC3DQ,EAAgB,AAAIL,OAAO,CAAC,QAAQ,EAAEJ,EAAI,CAAC,EAAEC,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAED,EAAI,IAAI,CAAC,EAEpEU,EAAQ,CACV,UAAW,SACX,aAAc,SACd,KAAM,MACN,WAAY,QACZ,MAAO,SACP,MAAO,SACP,OAAQ,SACR,MAAO,EACP,eAAgB,SAChB,KAAM,IACN,WAAY,QACZ,MAAO,SACP,UAAW,SACX,UAAW,QACX,WAAY,QACZ,UAAW,SACX,MAAO,SACP,eAAgB,QAChB,SAAU,SACV,QAAS,SACT,KAAM,MACN,SAAU,IACV,SAAU,MACV,cAAe,SACf,SAAU,SACV,UAAW,MACX,SAAU,SACV,UAAW,SACX,YAAa,QACb,eAAgB,QAChB,WAAY,SACZ,WAAY,SACZ,QAAS,QACT,WAAY,SACZ,aAAc,QACd,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,MACf,WAAY,QACZ,SAAU,SACV,YAAa,MACb,QAAS,QACT,QAAS,QACT,WAAY,QACZ,UAAW,SACX,YAAa,SACb,YAAa,QACb,QAAS,SACT,UAAW,SACX,WAAY,SACZ,KAAM,SACN,UAAW,SACX,KAAM,QACN,MAAO,MACP,YAAa,SACb,KAAM,QACN,SAAU,SACV,QAAS,SACT,UAAW,SACX,OAAQ,QACR,MAAO,SACP,MAAO,SACP,SAAU,SACV,cAAe,SACf,UAAW,QACX,aAAc,SACd,UAAW,SACX,WAAY,SACZ,UAAW,SACX,qBAAsB,SACtB,UAAW,SACX,WAAY,QACZ,UAAW,SACX,UAAW,SACX,YAAa,SACb,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,eAAgB,QAChB,eAAgB,SAChB,YAAa,SACb,KAAM,MACN,UAAW,QACX,MAAO,SACP,QAAS,SACT,OAAQ,QACR,iBAAkB,QAClB,WAAY,IACZ,aAAc,SACd,aAAc,QACd,eAAgB,QAChB,gBAAiB,QACjB,kBAAmB,MACnB,gBAAiB,QACjB,gBAAiB,SACjB,aAAc,QACd,UAAW,SACX,UAAW,SACX,SAAU,SACV,YAAa,SACb,KAAM,IACN,QAAS,SACT,MAAO,QACP,UAAW,QACX,OAAQ,SACR,UAAW,SACX,OAAQ,SACR,cAAe,SACf,UAAW,SACX,cAAe,SACf,cAAe,SACf,WAAY,SACZ,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,WAAY,SACZ,OAAQ,QACR,cAAe,QACf,IAAK,SACL,UAAW,SACX,UAAW,QACX,YAAa,QACb,OAAQ,SACR,WAAY,SACZ,SAAU,QACV,SAAU,SACV,OAAQ,SACR,OAAQ,SACR,QAAS,QACT,UAAW,QACX,UAAW,QACX,UAAW,QACX,KAAM,SACN,YAAa,MACb,UAAW,QACX,IAAK,SACL,KAAM,MACN,QAAS,SACT,OAAQ,SACR,UAAW,QACX,OAAQ,SACR,MAAO,SACP,MAAO,SACP,WAAY,SACZ,OAAQ,SACR,YAAa,QACf,EAiBA,SAASC,IACP,OAAO,IAAI,CAAC,GAAG,GAAG,SAAS,EAC7B,CAjBA,EAAOd,EAAOzS,EAAO,CACnB,KAAKwT,CAAQ,EACX,OAAOxyC,OAAO,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAE,IAAI,CAAEwyC,EACnD,EACA,cACE,OAAO,IAAI,CAAC,GAAG,GAAG,WAAW,EAC/B,EACA,IAAKD,EACL,UAAWA,EACX,WAUF,WACE,OAAO,IAAI,CAAC,GAAG,GAAG,UAAU,EAC9B,EAXE,UAaF,WACE,OAAOE,EAAW,IAAI,EAAE,SAAS,EACnC,EAdE,UAAWC,EACX,SAAUA,CACZ,GAcA,SAASA,IACP,OAAO,IAAI,CAAC,GAAG,GAAG,SAAS,EAC7B,CAEe,SAAS1T,EAAMxL,CAAM,EAClC,IAAIn4B,EAAGiJ,EAEP,OADAkvB,EAAS,AAACA,CAAAA,EAAS,EAAC,EAAG,IAAI,GAAG,WAAW,GAClC,AAACn4B,CAAAA,EAAIy2C,EAAM,IAAI,CAACte,EAAM,EAAMlvB,CAAAA,EAAIjJ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAEA,EAAIkP,SAASlP,CAAC,CAAC,EAAE,CAAE,IAAKiJ,AAAM,IAANA,EAAUquC,EAAKt3C,GACrFiJ,AAAM,IAANA,EAAU,IAAIsuC,EAAI,AAACv3C,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAO,AAACA,GAAK,EAAI,GAAQA,AAAI,IAAJA,EAAW,AAAEA,CAAAA,AAAI,GAAJA,CAAM,GAAM,EAAMA,AAAI,GAAJA,EAAU,GAC/GiJ,AAAM,IAANA,EAAUuuC,EAAKx3C,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAM,AAACA,CAAAA,AAAI,IAAJA,CAAO,EAAK,KAC3EiJ,AAAM,IAANA,EAAUuuC,EAAK,AAACx3C,GAAK,GAAK,GAAQA,GAAK,EAAI,IAAO,AAACA,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAO,AAACA,GAAK,EAAI,GAAQA,AAAI,IAAJA,EAAW,AAAC,CAAEA,CAAAA,AAAI,GAAJA,CAAM,GAAM,EAAMA,AAAI,GAAJA,CAAO,EAAK,KAClJ,IAAG,EACH,AAACA,CAAAA,EAAI02C,EAAa,IAAI,CAACve,EAAM,EAAK,IAAIof,EAAIv3C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAE,GAC5D,AAACA,CAAAA,EAAI42C,EAAa,IAAI,CAACze,EAAM,EAAK,IAAIof,EAAIv3C,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAK,GAChG,AAACA,CAAAA,EAAI62C,EAAc,IAAI,CAAC1e,EAAM,EAAKqf,EAAKx3C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,EAC9D,AAACA,CAAAA,EAAI82C,EAAc,IAAI,CAAC3e,EAAM,EAAKqf,EAAKx3C,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,AAAO,IAAPA,CAAC,CAAC,EAAE,CAAS,IAAKA,CAAC,CAAC,EAAE,EAClG,AAACA,CAAAA,EAAI+2C,EAAa,IAAI,CAAC5e,EAAM,EAAKsf,EAAKz3C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAG,IAAKA,CAAC,CAAC,EAAE,CAAG,IAAK,GACrE,AAACA,CAAAA,EAAIg3C,EAAc,IAAI,CAAC7e,EAAM,EAAKsf,EAAKz3C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAG,IAAKA,CAAC,CAAC,EAAE,CAAG,IAAKA,CAAC,CAAC,EAAE,EAC1Ei3C,EAAM,cAAc,CAAC9e,GAAUmf,EAAKL,CAAK,CAAC9e,EAAO,EACjDA,AAAW,gBAAXA,EAA2B,IAAIof,EAAIG,IAAKA,IAAKA,IAAK,GAClD,IACR,CAEA,SAASJ,EAAKv2C,CAAC,EACb,OAAO,IAAIw2C,EAAIx2C,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAMA,AAAI,IAAJA,EAAU,EAC1D,CAEA,SAASy2C,EAAKntC,CAAC,CAAEstC,CAAC,CAAEz1C,CAAC,CAAED,CAAC,EAEtB,OADIA,GAAK,GAAGoI,CAAAA,EAAIstC,EAAIz1C,EAAIw1C,GAAE,EACnB,IAAIH,EAAIltC,EAAGstC,EAAGz1C,EAAGD,EAC1B,CASO,SAASg3C,EAAI5uC,CAAC,CAAEstC,CAAC,CAAEz1C,CAAC,CAAE01C,CAAO,MAPTh0B,EAQzB,OAAOjgB,AAAqB,GAArBA,UAAU,MAAM,CANvB,CADI,CAAEigB,CAAAA,CADmBA,EAQkBvZ,aAPxB+rC,CAAI,GAAIxyB,CAAAA,EAAI+f,EAAM/f,EAAC,EACjCA,GAEE,IAAI2zB,EAAI3zB,AADfA,CAAAA,EAAIA,EAAE,GAAG,EAAC,EACO,CAAC,CAAEA,EAAE,CAAC,CAAEA,EAAE,CAAC,CAAEA,EAAE,OAAO,EAFxB,IAAI2zB,EAM6B,IAAIA,EAAIltC,EAAGstC,EAAGz1C,EAAG01C,AAAW,MAAXA,EAAkB,EAAIA,EACzF,CAEO,SAASL,EAAIltC,CAAC,CAAEstC,CAAC,CAAEz1C,CAAC,CAAE01C,CAAO,EAClC,IAAI,CAAC,CAAC,CAAG,CAACvtC,EACV,IAAI,CAAC,CAAC,CAAG,CAACstC,EACV,IAAI,CAAC,CAAC,CAAG,CAACz1C,EACV,IAAI,CAAC,OAAO,CAAG,CAAC01C,CAClB,CA8BA,SAASC,IACP,MAAO,CAAC,CAAC,EAAEC,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,IAAI,CAAC,CAAC,EAAE,CAAC,AACtD,CA9BA,EAAOP,EAAK0B,EAAK9C,EAAOC,EAAO,CAC7B,SAAS9zC,CAAC,EAER,OADAA,EAAIA,AAAK,MAALA,EAAY+zC,EAAWp2C,KAAK,GAAG,CAACo2C,EAAU/zC,GACvC,IAAIi1C,EAAI,IAAI,CAAC,CAAC,CAAGj1C,EAAG,IAAI,CAAC,CAAC,CAAGA,EAAG,IAAI,CAAC,CAAC,CAAGA,EAAG,IAAI,CAAC,OAAO,CACjE,EACA,OAAOA,CAAC,EAEN,OADAA,EAAIA,AAAK,MAALA,EAxPY,GAwPSrC,KAAK,GAAG,CAxPjB,GAwP0BqC,GACnC,IAAIi1C,EAAI,IAAI,CAAC,CAAC,CAAGj1C,EAAG,IAAI,CAAC,CAAC,CAAGA,EAAG,IAAI,CAAC,CAAC,CAAGA,EAAG,IAAI,CAAC,OAAO,CACjE,EACA,MACE,OAAO,IAAI,AACb,EACA,QACE,OAAO,IAAIi1C,EAAIQ,EAAO,IAAI,CAAC,CAAC,EAAGA,EAAO,IAAI,CAAC,CAAC,EAAGA,EAAO,IAAI,CAAC,CAAC,EAAGC,EAAO,IAAI,CAAC,OAAO,EACpF,EACA,cACE,OAAO,AAAC,KAAQ,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,CAAG,OAC3B,KAAQ,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,CAAG,OAC3B,KAAQ,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,CAAG,OAC3B,GAAK,IAAI,CAAC,OAAO,EAAI,IAAI,CAAC,OAAO,EAAI,CAC/C,EACA,IAAKH,EACL,UAAWA,EACX,WASF,WACE,MAAO,CAAC,CAAC,EAAEC,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,IAAI,CAAC,CAAC,EAAE,EAAEA,EAAI,AAACG,CAAAA,MAAM,IAAI,CAAC,OAAO,EAAI,EAAI,IAAI,CAAC,OAAO,AAAD,EAAK,KAAK,CAAC,AAC5G,EAVE,UAAWC,EACX,SAAUA,CACZ,IAUA,SAASA,IACP,IAAMj2C,EAAI+1C,EAAO,IAAI,CAAC,OAAO,EAC7B,MAAO,CAAC,EAAE/1C,AAAM,IAANA,EAAU,OAAS,QAAQ,EAAE81C,EAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAEA,EAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAEA,EAAO,IAAI,CAAC,CAAC,EAAE,EAAE91C,AAAM,IAANA,EAAU,IAAM,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,AAC3H,CAEA,SAAS+1C,EAAOJ,CAAO,EACrB,OAAOK,MAAML,GAAW,EAAI33C,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAAC,EAAG23C,GACtD,CAEA,SAASG,EAAOp2C,CAAK,EACnB,OAAO1B,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAAC,IAAKA,KAAK,KAAK,CAAC0B,IAAU,GACxD,CAEA,SAASm2C,EAAIn2C,CAAK,EAEhB,MAAO,AAACA,CAAAA,AADRA,CAAAA,EAAQo2C,EAAOp2C,EAAK,EACJ,GAAK,IAAM,EAAC,EAAKA,EAAM,QAAQ,CAAC,GAClD,CAEA,SAAS81C,EAAKjT,CAAC,CAAEt/B,CAAC,CAAE+D,CAAC,CAAEhH,CAAC,EAItB,OAHIA,GAAK,EAAGuiC,EAAIt/B,EAAI+D,EAAIyuC,IACfzuC,GAAK,GAAKA,GAAK,EAAGu7B,EAAIt/B,EAAIwyC,IAC1BxyC,GAAK,GAAGs/B,CAAAA,EAAIkT,GAAE,EAChB,IAAIS,EAAI3T,EAAGt/B,EAAG+D,EAAGhH,EAC1B,CAEO,SAASm1C,EAAWxzB,CAAC,EAC1B,GAAIA,aAAau0B,EAAK,OAAO,IAAIA,EAAIv0B,EAAE,CAAC,CAAEA,EAAE,CAAC,CAAEA,EAAE,CAAC,CAAEA,EAAE,OAAO,EAE7D,GADI,CAAEA,CAAAA,aAAawyB,CAAI,GAAIxyB,CAAAA,EAAI+f,EAAM/f,EAAC,EAClC,CAACA,EAAG,OAAO,IAAIu0B,EACnB,GAAIv0B,aAAau0B,EAAK,OAAOv0B,EAE7B,IAAIvZ,EAAIuZ,AADRA,CAAAA,EAAIA,EAAE,GAAG,EAAC,EACA,CAAC,CAAG,IACV+zB,EAAI/zB,EAAE,CAAC,CAAG,IACV1hB,EAAI0hB,EAAE,CAAC,CAAG,IACVme,EAAM9hC,KAAK,GAAG,CAACoK,EAAGstC,EAAGz1C,GACrB8/B,EAAM/hC,KAAK,GAAG,CAACoK,EAAGstC,EAAGz1C,GACrBsiC,EAAIkT,IACJxyC,EAAI88B,EAAMD,EACV94B,EAAI,AAAC+4B,CAAAA,EAAMD,CAAE,EAAK,EAUtB,OATI78B,GACas/B,EAAXn6B,IAAM23B,EAAS,AAAC2V,CAAAA,EAAIz1C,CAAAA,EAAKgD,EAAI,AAACyyC,CAAAA,EAAIz1C,CAAAA,EAAK,EAClCy1C,IAAM3V,EAAS,AAAC9/B,CAAAA,EAAImI,CAAAA,EAAKnF,EAAI,EAC7B,AAACmF,CAAAA,EAAIstC,CAAAA,EAAKzyC,EAAI,EACvBA,GAAK+D,EAAI,GAAM+4B,EAAMD,EAAM,EAAIC,EAAMD,EACrCyC,GAAK,IAELt/B,EAAI+D,EAAI,GAAKA,EAAI,EAAI,EAAIu7B,EAEpB,IAAI2T,EAAI3T,EAAGt/B,EAAG+D,EAAG2a,EAAE,OAAO,CACnC,CAMA,SAASu0B,EAAI3T,CAAC,CAAEt/B,CAAC,CAAE+D,CAAC,CAAE2uC,CAAO,EAC3B,IAAI,CAAC,CAAC,CAAG,CAACpT,EACV,IAAI,CAAC,CAAC,CAAG,CAACt/B,EACV,IAAI,CAAC,CAAC,CAAG,CAAC+D,EACV,IAAI,CAAC,OAAO,CAAG,CAAC2uC,CAClB,CAsCA,SAASQ,EAAOz2C,CAAK,EAEnB,MAAOA,AADPA,CAAAA,EAAQ,AAACA,CAAAA,GAAS,GAAK,GAAE,EACV,EAAIA,EAAQ,IAAMA,CACnC,CAEA,SAAS02C,EAAO12C,CAAK,EACnB,OAAO1B,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAAC,EAAG0B,GAAS,GAC1C,CAGA,SAAS22C,EAAQ9T,CAAC,CAAE+T,CAAE,CAAEC,CAAE,EACxB,MAAO,AAAChU,CAAAA,EAAI,GAAK+T,EAAK,AAACC,CAAAA,EAAKD,CAAC,EAAK/T,EAAI,GAChCA,EAAI,IAAMgU,EACVhU,EAAI,IAAM+T,EAAK,AAACC,CAAAA,EAAKD,CAAC,EAAM,KAAM/T,CAAAA,EAAK,GACvC+T,CAAC,EAAK,GACd,CAnDA,EAAOJ,EAXA,SAAa3T,CAAC,CAAEt/B,CAAC,CAAE+D,CAAC,CAAE2uC,CAAO,EAClC,OAAOj0C,AAAqB,GAArBA,UAAU,MAAM,CAASyzC,EAAW5S,GAAK,IAAI2T,EAAI3T,EAAGt/B,EAAG+D,EAAG2uC,AAAW,MAAXA,EAAkB,EAAIA,EACzF,EASiBzB,EAAOC,EAAO,CAC7B,SAAS9zC,CAAC,EAER,OADAA,EAAIA,AAAK,MAALA,EAAY+zC,EAAWp2C,KAAK,GAAG,CAACo2C,EAAU/zC,GACvC,IAAI61C,EAAI,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAG71C,EAAG,IAAI,CAAC,OAAO,CACzD,EACA,OAAOA,CAAC,EAEN,OADAA,EAAIA,AAAK,MAALA,EA1VY,GA0VSrC,KAAK,GAAG,CA1VjB,GA0V0BqC,GACnC,IAAI61C,EAAI,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAG71C,EAAG,IAAI,CAAC,OAAO,CACzD,EACA,MACE,IAAIkiC,EAAI,IAAI,CAAC,CAAC,CAAG,IAAM,AAAC,KAAI,CAAC,CAAC,CAAG,GAAK,IAClCt/B,EAAI+yC,MAAMzT,IAAMyT,MAAM,IAAI,CAAC,CAAC,EAAI,EAAI,IAAI,CAAC,CAAC,CAC1ChvC,EAAI,IAAI,CAAC,CAAC,CACVuvC,EAAKvvC,EAAI,AAACA,CAAAA,EAAI,GAAMA,EAAI,EAAIA,CAAAA,EAAK/D,EACjCqzC,EAAK,EAAItvC,EAAIuvC,EACjB,OAAO,IAAIjB,EACTe,EAAQ9T,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAK+T,EAAIC,GAC1CF,EAAQ9T,EAAG+T,EAAIC,GACfF,EAAQ9T,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAK+T,EAAIC,GACzC,IAAI,CAAC,OAAO,CAEhB,EACA,QACE,OAAO,IAAIL,EAAIC,EAAO,IAAI,CAAC,CAAC,EAAGC,EAAO,IAAI,CAAC,CAAC,EAAGA,EAAO,IAAI,CAAC,CAAC,EAAGL,EAAO,IAAI,CAAC,OAAO,EACpF,EACA,cACE,MAAO,AAAC,IAAK,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,EAAI,GAAKC,MAAM,IAAI,CAAC,CAAC,IAC1C,GAAK,IAAI,CAAC,CAAC,EAAI,IAAI,CAAC,CAAC,EAAI,GACzB,GAAK,IAAI,CAAC,OAAO,EAAI,IAAI,CAAC,OAAO,EAAI,CAC/C,EACA,YACE,IAAMh2C,EAAI+1C,EAAO,IAAI,CAAC,OAAO,EAC7B,MAAO,CAAC,EAAE/1C,AAAM,IAANA,EAAU,OAAS,QAAQ,EAAEm2C,EAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAEC,AAAiB,IAAjBA,EAAO,IAAI,CAAC,CAAC,EAAQ,GAAG,EAAEA,AAAiB,IAAjBA,EAAO,IAAI,CAAC,CAAC,EAAQ,CAAC,EAAEp2C,AAAM,IAANA,EAAU,IAAM,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,AACzI,CACF,wmGCtSIR,EAAqBkD,OAAO,MAAM,CAAC,CACtC,UAAW,KACX,UA3DD,WACE,GAAI,CACF,UAAWk1C,CAAiB,CAC7B,CAAGl2C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,EACrEm2C,EAAS,CACX,OAAQ,KACR,gBAAiB,GACjB,YAAa,GACb,UAAWD,EAEX,cAAa7mC,EAAO1R,IACX,IAAIy4C,gBAAgB/mC,EAAO1R,GAGpC,YAAY04C,GACH,EAAkB,YACvB,IAAIC,EAAW,MAAMC,MAAMF,GACvBG,EAAO,MAAMF,EAAS,IAAI,GAE9B,OADU,MAAMG,kBAAkBD,EAEpC,IAGJ,EAMA,MAJI,CAAqB,aAArB,OAAOE,WAA6B,AAA6B,SAAtBR,CAAgC,GAC7ES,QAAQ,cAAc,CAACR,EAAQ,aAG1BA,CACT,EA8BC,KApBD,SAAcS,CAAI,EAChB,GAAI,CACFF,UAAAA,CAAS,CACT1oC,OAAAA,CAAM,CACNuoC,MAAAA,CAAK,CACN,CAAGK,EACJ,MAAO,CACL,OAAQ,KACR,gBAAiB,GACjB,YAAa,GACbF,UAAAA,EACAH,MAAAA,EACA,aAAcvoC,EAAO,YAAY,CACjC,YAAaA,EAAO,SAAS,AAC/B,CACF,CAMA,GAOA,SAAS6oC,EAAe9nC,CAAG,EACzB,OAAOA,EAAI,OAAO,CAAC,kBAAmB,IACxC,CAOA,SAAS+nC,EAAS/nC,CAAG,EACnB,OAAOA,EAAI,OAAO,CAAC,YAAa,GAClC,CAOA,SAASgoC,EAAUhoC,CAAG,EACpB,OAAOA,EAAI,OAAO,CAAC,YAAa,GAClC,CAOA,SAASioC,EAAUjoC,CAAG,EAEpB,MAAOkoC,AADO,CAACloC,CAAAA,GAAO,EAAC,EAAG,KAAK,CAAC,uDAAyD,EAAE,AAAD,EAC3E,GAAG,CAACgc,WACrB,CAEA,IAAImsB,EAAe,YAOnB,SAASC,EAAuB9jC,CAAI,SAClC,AAAI6jC,EAAa,IAAI,CAAC7jC,GACbA,EAAK,WAAW,GAGlBA,CACT,CAOA,SAAS+jC,EAAiBf,CAAG,EAK3B,IAAIgB,EAAW,yCAAyC,IAAI,CAAChB,IAAQ,EAAE,CACvE,OAAOgB,CAAQ,CAAC,EAAE,EAAIA,CAAQ,CAAC,EAAE,EAAIA,CAAQ,CAAC,EAAE,AAClD,CAOA,SAASC,EAAetX,CAAK,EAC3B,GAAI,CAACA,EAAM,UAAU,CAAC,OACpB,OAAOA,EAGT,IAAIuX,EAAW,EAEf,OADsBvX,EAAM,OAAO,CAAC,eAAgB,CAACwX,EAAKC,IAAYF,KAAcE,EAAUtsC,OAAO7O,KAAK,KAAK,CAACyuB,WAAWysB,KAASA,EAEtI,CAGA,IAAIE,EAAiB,gBACjBC,EAAU,mBACVC,EAAa,oBACbC,EAAqB,8DACrBC,EAA+B,uBAC/BC,EAAmB,mBACnBC,EAAe,kBAEnB,SAASC,EAAkBC,CAAQ,CAAEC,CAAK,EACxC,IAAIlB,EAAUkB,EAAM,IAAI,CAACD,UAEzB,AAAKjB,EAIE,CAACiB,EAAS,OAAO,CAACC,EAAO,KAAMlB,EAAQ,MAAM,CAAC,CAH5C,CAACiB,EAAU,EAAE,AAIxB,CAQA,SAASE,EAAuBF,CAAQ,EACtC,IAAIG,EAAc,CAAC,EAAG,EAAG,EAAE,CACvBC,EAAkBJ,EAAS,OAAO,CAAC,mBAAoB,YAAY,OAAO,CAAC,aAAc,KACzFzyB,EAAQ,EAiBZ,MAhBA,CAAC6yB,EAAiB7yB,EAAM,CAAGwyB,EAAkBK,EAAiBZ,GAC9DW,CAAW,CAAC,EAAE,EAAI5yB,EAClB,CAAC6yB,EAAiB7yB,EAAM,CAAGwyB,EAAkBK,EAAiBX,GAC9DU,CAAW,CAAC,EAAE,EAAI5yB,EAClB,CAAC6yB,EAAiB7yB,EAAM,CAAGwyB,EAAkBK,EAAiBV,GAC9DS,CAAW,CAAC,EAAE,EAAI5yB,EAClB,CAAC6yB,EAAiB7yB,EAAM,CAAGwyB,EAAkBK,EAAiBT,GAC9DQ,CAAW,CAAC,EAAE,EAAI5yB,EAClB,CAAC6yB,EAAiB7yB,EAAM,CAAGwyB,EAAkBK,EAAiBR,GAC9DO,CAAW,CAAC,EAAE,EAAI5yB,EAClB,CAAC6yB,EAAiB7yB,EAAM,CAAGwyB,EAAkBK,EAAiBP,GAC9DM,CAAW,CAAC,EAAE,EAAI5yB,EAClB6yB,EAAkBA,EAAgB,OAAO,CAAC,YAAa,KAAK,OAAO,CAAC,QAAS,KAC7E,CAACA,EAAiB7yB,EAAM,CAAGwyB,EAAkBK,EAAiBN,GAE9DK,CAAW,CAAC,EAAE,EAAI5yB,EACX4yB,EAAY,IAAI,CAAC,GAC1B,CAEA,IAAIE,EAAc,KAOlB,SAASC,EAAgB33C,CAAC,EACxB,OAAOvE,KAAK,IAAI,CAACA,KAAK,GAAG,CAACuE,CAAC,CAAC,EAAE,CAAE,GAAKvE,KAAK,GAAG,CAACuE,CAAC,CAAC,EAAE,CAAE,GACtD,CAQA,SAAS43C,EAAajP,CAAC,CAAE3oC,CAAC,EACxB,MAAO,AAAC2oC,CAAAA,CAAC,CAAC,EAAE,CAAG3oC,CAAC,CAAC,EAAE,CAAG2oC,CAAC,CAAC,EAAE,CAAG3oC,CAAC,CAAC,EAAE,AAAD,EAAM23C,CAAAA,EAAgBhP,GAAKgP,EAAgB33C,EAAC,CAC9E,CAQA,SAAS63C,EAAalP,CAAC,CAAE3oC,CAAC,EACxB,MAAO,AAAC2oC,CAAAA,CAAC,CAAC,EAAE,CAAG3oC,CAAC,CAAC,EAAE,CAAG2oC,CAAC,CAAC,EAAE,CAAG3oC,CAAC,CAAC,EAAE,CAAG,GAAK,GAAKvE,KAAK,IAAI,CAACm8C,EAAajP,EAAG3oC,GAC1E,CACA,SAAS83C,EAAIx8C,CAAC,EACZ,OAAOA,EAAIA,EAAIA,CACjB,CACA,SAASy8C,EAAIz8C,CAAC,EACZ,OAAO,EAAIA,EAAIA,EAAK,GAAIA,CAAAA,CAC1B,CACA,SAAS08C,EAAI18C,CAAC,EACZ,OAAO,EAAIA,EAAK,GAAIA,CAAAA,EAAM,GAAIA,CAAAA,CAChC,CACA,SAAS28C,EAAI38C,CAAC,EACZ,MAAO,AAAC,GAAIA,CAAAA,EAAM,GAAIA,CAAAA,EAAM,GAAIA,CAAAA,CAClC,CACA,SAAS48C,EAAI58C,CAAC,EACZ,OAAOA,EAAIA,CACb,CACA,SAAS68C,EAAI78C,CAAC,EACZ,OAAO,EAAIA,EAAK,GAAIA,CAAAA,CACtB,CACA,SAAS88C,EAAI98C,CAAC,EACZ,MAAO,AAAC,GAAIA,CAAAA,EAAM,GAAIA,CAAAA,CACxB,CAEA,MAAM+8C,EACJ,YAAYlkC,CAAQ,CAAE3B,CAAI,CAAErV,CAAK,CAAE,CACjC,IAAI,CAAC,QAAQ,CAAGgX,EAChB,IAAI,CAAC,IAAI,CAAG3B,EACZ,IAAI,CAAC,KAAK,CAAGrV,EACb,IAAI,CAAC,iBAAiB,CAAG,EAC3B,CAEA,OAAO,MAAMgX,CAAQ,CAAE,CACrB,OAAO,IAAIkkC,EAASlkC,EAAU,QAAS,GACzC,CAEA,OAAQ,CACN,IAAImkC,EAAYn5C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,IAChF,CACFgV,SAAAA,CAAQ,CACR3B,KAAAA,CAAI,CACL,CAAG,IAAI,CACR,OAAOwjC,EAAe,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,KAAK,CAACsC,GAAW,GAAG,CAACn7C,GAAS,IAAIk7C,EAASlkC,EAAU3B,EAAMrV,GAC5G,CAEA,SAASo7C,CAAW,CAAE,CACpB,GAAI,CACFp7C,MAAAA,CAAK,CACN,CAAG,IAAI,CACR,OAAOA,AAAU,OAAVA,GAAkBA,AAAU,KAAVA,GAAiBo7C,CAAAA,GAAep7C,AAAU,IAAVA,CAAU,GAAM,AAAiB,SAAVA,CAClF,CAEA,SAASq7C,CAAM,CAAE,CACf,GAAI,CACFr7C,MAAAA,CAAK,CACN,CAAG,IAAI,CACJyqB,EAAS,AAAiB,UAAjB,OAAOzqB,SAEpB,AAAI,AAACyqB,GAAW4wB,EAITA,EAAO,IAAI,CAACr7C,GAHVyqB,CAIX,CAEA,iBAAkB,CAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SACvB,CAEA,UAAW,CACT,GAAI,CAAC,IAAI,CAAC,QAAQ,GAChB,MAAO,GAGT,IAAI6wB,EAAW,IAAI,CAAC,SAAS,GAE7B,OAAQ,IACN,KAAKA,EAAS,QAAQ,CAAC,MACvB,IAAK,WAAW,IAAI,CAACA,GACnB,MAAO,EAET,SACE,MAAO,EACX,CACF,CAEA,SAASt7C,CAAK,CAAE,CAEd,OADA,IAAI,CAAC,KAAK,CAAGA,EACN,IAAI,AACb,CAEA,SAASu7C,CAAG,CAAE,QACZ,AAAI,AAAe,SAARA,GAAuB,IAAI,CAAC,QAAQ,GACtC,IAAI,CAAC,KAAK,CAGZA,CACT,CAEA,UAAUA,CAAG,CAAE,CACb,GAAI,CAAC,IAAI,CAAC,QAAQ,UAChB,AAAI,AAAe,SAARA,EACF,EAGFxuB,WAAWwuB,GAGpB,GAAI,CACFv7C,MAAAA,CAAK,CACN,CAAG,IAAI,CACJZ,EAAI2tB,WAAW/sB,GAMnB,OAJI,IAAI,CAAC,QAAQ,CAAC,OAChBZ,CAAAA,GAAK,GAAI,EAGJA,CACT,CAEA,UAAUm8C,CAAG,CAAE,QACb,AAAI,AAAe,SAARA,GAAuB,IAAI,CAAC,QAAQ,GACtC,AAAsB,SAAf,IAAI,CAAC,KAAK,CAAmB,GAAKpuC,OAAO,IAAI,CAAC,KAAK,EAG5DA,OAAOouC,EAChB,CAEA,SAASA,CAAG,CAAE,CACZ,IAAIvZ,EAAQ,IAAI,CAAC,SAAS,CAACuZ,UAE3B,AAAI,IAAI,CAAC,iBAAiB,CACjBvZ,GAGT,IAAI,CAAC,iBAAiB,CAAG,GACzBA,EAAQsX,EAAetX,GACvB,IAAI,CAAC,KAAK,CAAGA,EACNA,EACT,CAEA,QAAS,CACP,OAAO,EACT,CAEA,QAAS,CACP,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,AACjC,CAEA,OAAQ,CACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,AAC7B,CAEA,UAAW,CACT,OAAO,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAY,GAC9C,CAEA,UAAUwZ,CAAgB,CAAE,CAC1B,IAAIC,EAAiBz5C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CAEtF,GAAI,CAAC,IAAI,CAAC,QAAQ,GAChB,OAAO,EAGT,GAAI,CAAC8hC,EAAM4X,EAAW,CAAG,AAA4B,WAA5B,OAAOF,EAAiC,CAACz8C,KAAAA,EAAWy8C,EAAiB,CAAG,CAACA,EAAiB,CAC/G,CACFG,SAAAA,CAAQ,CACT,CAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAExB,OAAQ,IACN,KAAK,IAAI,CAAC,QAAQ,CAAC,SACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAQr9C,KAAK,GAAG,CAACq9C,EAAS,WAAW,CAAC,KAAMA,EAAS,WAAW,CAAC,KAE7F,MAAK,IAAI,CAAC,QAAQ,CAAC,SACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAQr9C,KAAK,GAAG,CAACq9C,EAAS,WAAW,CAAC,KAAMA,EAAS,WAAW,CAAC,KAE7F,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAQA,EAAS,WAAW,CAAC,IAEzD,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAQA,EAAS,WAAW,CAAC,IAEzD,MAAK,IAAI,CAAC,QAAQ,CAAC,QACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAI,CAAC,MAAM,EAEvC,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAI,CAAC,KAAK,EAEtC,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAI,CAAC,KAAK,GAAK,CAE3C,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,EAEvB,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAI,CAAC,MAAM,GAAM,GAAM,EAAG,CAEtD,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,AAAmB,GAAnB,IAAI,CAAC,SAAS,EAEvB,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAI,CAAC,MAAM,GAAK,IAE5C,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAI,CAAC,MAAM,GAAK,IAE5C,MAAK,IAAI,CAAC,QAAQ,CAAC,OACjB,OAAO,IAAI,CAAC,SAAS,GAAK,IAAI,CAAC,MAAM,EAEvC,MAAK,IAAI,CAAC,QAAQ,CAAC,OAASD,EAC1B,OAAO,IAAI,CAAC,SAAS,GAAK,IAAI,CAAC,KAAK,EAEtC,MAAK,IAAI,CAAC,QAAQ,CAAC,MACjB,OAAO,IAAI,CAAC,SAAS,GAAKC,EAAS,WAAW,CAAC7X,EAEjD,SAEI,IAAI1kC,EAAI,IAAI,CAAC,SAAS,GAEtB,GAAIq8C,GAAkBr8C,EAAI,EACxB,OAAOA,EAAIu8C,EAAS,WAAW,CAAC7X,GAGlC,OAAO1kC,CAEb,CACF,CAEA,iBAAkB,QAChB,AAAK,IAAI,CAAC,QAAQ,GAId,IAAI,CAAC,QAAQ,CAAC,OACT,IAAI,CAAC,SAAS,GAGhB,AAAmB,IAAnB,IAAI,CAAC,SAAS,GAPZ,CAQX,CAEA,YAAa,CACX,GAAI,CAAC,IAAI,CAAC,QAAQ,GAChB,OAAO,EAGT,OAAQ,IACN,KAAK,IAAI,CAAC,QAAQ,CAAC,QACjB,OAAO,IAAI,CAAC,SAAS,GAAMd,CAAAA,KAAK,EAAE,CAAG,GAAI,CAE3C,MAAK,IAAI,CAAC,QAAQ,CAAC,SACjB,OAAO,IAAI,CAAC,SAAS,GAAMA,CAAAA,KAAK,EAAE,CAAG,GAAI,CAE3C,MAAK,IAAI,CAAC,QAAQ,CAAC,QACjB,OAAO,IAAI,CAAC,SAAS,EAEvB,SACE,OAAO,IAAI,CAAC,SAAS,GAAMA,CAAAA,KAAK,EAAE,CAAG,GAAI,CAC7C,CACF,CAEA,eAAgB,CACd,IAAIg9C,EAAW,IAAI,CAAC,SAAS,GACzBjmC,EAAO,aAAa,IAAI,CAACimC,GAU7B,OARIjmC,GACFA,CAAAA,EAAOA,CAAI,CAAC,EAAE,AAAD,EAGX,CAACA,GACHA,CAAAA,EAAOimC,CAAO,EAGT,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACjmC,EAAK,AACxC,CAEA,uBAAuB5J,CAAO,CAAEwqC,CAAO,CAAE,CACvC,IAAIsF,EAAM,IAAI,CAAC,aAAa,GAE5B,GAAI,CAACA,EACH,OAAO,KAIT,GAAI,AAA8B,YAA9B,OAAOA,EAAI,cAAc,CAC3B,OAAOA,EAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE9vC,EAASwqC,GAIxD,GAAI,AAA6B,YAA7B,OAAOsF,EAAI,aAAa,CAAiB,CAC3C,GAAIA,EAAI,gBAAgB,GAAG,QAAQ,GAAI,CACrC,IAAIK,EAAmBL,EAAI,YAAY,CAAC,oBACxCA,EAAMA,EAAI,gBAAgB,GAAG,aAAa,GAEtCK,EAAiB,QAAQ,IAC3BL,EAAI,YAAY,CAAC,mBAAoB,IAAM,QAAQ,CAACK,EAAiB,KAAK,CAE9E,CAEA,OAAOL,EAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE9vC,EAASwqC,EACvD,CAEA,OAAO,IACT,CAEA,iBAAkB,QAChB,AAAK,IAAI,CAAC,QAAQ,GAIXiF,EAAS,mBAAmB,CAAC,IAAI,CAAC,SAAS,GAAG,CAH5C,IAIX,CAEA,WAAWjF,CAAO,CAAE,CAKlB,IAAK,IAJDj2C,EAAQ,IAAI,CAAC,QAAQ,GACrB67C,EAAM77C,EAAM,MAAM,CAClB87C,EAAS,EAEJ19C,EAAI,EAAGA,EAAIy9C,IACD,MAAb77C,CAAK,CAAC5B,EAAE,EACV09C,IAGEA,AAAW,IAAXA,GALmB19C,KAUzB,GAAI63C,EAAQ,QAAQ,IAAM,IAAI,CAAC,QAAQ,IAAM6F,AAAW,IAAXA,EAAc,CACzD,IAAI9Z,EAAQ,IAAI,EAAShiC,EAErBgiC,CAAAA,EAAM,EAAE,GACVA,EAAM,KAAK,CAAGiU,EAAQ,SAAS,GAC/Bj2C,EAAQgiC,EAAM,MAAM,GAExB,CAEA,OAAO,IAAIkZ,EAAS,IAAI,CAAC,QAAQ,CAAE,IAAI,CAAC,IAAI,CAAEl7C,EAChD,CAEF,CACAk7C,EAAS,mBAAmB,CAAG,CAC7B,SAAY,aACZ,cAAe,MACf,mBAAoB,MACpB,OAAU,SACV,QAAW,SACX,aAAc,SACd,kBAAmB,SACnB,YAAe,cACf,WAAc,aACd,QAAW,UACX,aAAgB,YAClB,CAEA,OAAMa,EACJ,aAAc,CACZ,IAAI,CAAC,SAAS,CAAG,EAAE,AACrB,CAEA,OAAQ,CACN,IAAI,CAAC,SAAS,CAAG,EAAE,AACrB,CAEA,WAAW1qC,CAAK,CAAE1R,CAAM,CAAE,CACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAClB0R,MAAAA,EACA1R,OAAAA,CACF,EACF,CAEA,eAAgB,CACd,IAAI,CAAC,SAAS,CAAC,GAAG,EACpB,CAEA,YAAa,CACX,GAAI,CACFq8C,UAAAA,CAAS,CACV,CAAG,IAAI,CACR,OAAOA,CAAS,CAACA,EAAU,MAAM,CAAG,EAAE,AACxC,CAEA,IAAI,OAAQ,CACV,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,AAChC,CAEA,IAAI,QAAS,CACX,OAAO,IAAI,CAAC,UAAU,GAAG,MAAM,AACjC,CAEA,YAAYv8C,CAAC,CAAE,OACb,AAAI,AAAa,UAAb,OAAOA,EACFA,EAGLA,AAAM,MAANA,EACK,IAAI,CAAC,KAAK,CAGfA,AAAM,MAANA,EACK,IAAI,CAAC,MAAM,CAGbnB,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAE,GAAKA,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE,IAAMA,KAAK,IAAI,CAAC,EACnF,CAEF,CAEA,MAAM29C,EACJ,YAAYl+C,CAAC,CAAEoD,CAAC,CAAE,CAChB,IAAI,CAAC,CAAC,CAAGpD,EACT,IAAI,CAAC,CAAC,CAAGoD,CACX,CAEA,OAAO,MAAMsL,CAAK,CAAE,CAClB,IAAIyvC,EAAel6C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,EACnF,CAACjE,EAAIm+C,CAAY,CAAE/6C,EAAI+6C,CAAY,CAAC,CAAGlD,EAAUvsC,GACrD,OAAO,IAAIwvC,EAAMl+C,EAAGoD,EACtB,CAEA,OAAO,WAAWuO,CAAK,CAAE,CACvB,IAAIwsC,EAAel6C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,EACnF,CAACjE,EAAIm+C,CAAY,CAAE/6C,EAAIpD,CAAC,CAAC,CAAGi7C,EAAUtpC,GAC1C,OAAO,IAAIusC,EAAMl+C,EAAGoD,EACtB,CAEA,OAAO,UAAU0M,CAAI,CAAE,CAKrB,IAAK,IAJDZ,EAAS+rC,EAAUnrC,GACnBguC,EAAM5uC,EAAO,MAAM,CACnBkvC,EAAa,EAAE,CAEV/9C,EAAI,EAAGA,EAAIy9C,EAAKz9C,GAAK,EAC5B+9C,EAAW,IAAI,CAAC,IAAIF,EAAMhvC,CAAM,CAAC7O,EAAE,CAAE6O,CAAM,CAAC7O,EAAI,EAAE,GAGpD,OAAO+9C,CACT,CAEA,QAAQ1vC,CAAK,CAAE,CACb,OAAOnO,KAAK,KAAK,CAACmO,EAAM,CAAC,CAAG,IAAI,CAAC,CAAC,CAAEA,EAAM,CAAC,CAAG,IAAI,CAAC,CAAC,CACtD,CAEA,eAAeuV,CAAS,CAAE,CACxB,GAAI,CACFjkB,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CACJi7C,EAAKr+C,EAAIikB,CAAS,CAAC,EAAE,CAAG7gB,EAAI6gB,CAAS,CAAC,EAAE,CAAGA,CAAS,CAAC,EAAE,CACvDq6B,EAAKt+C,EAAIikB,CAAS,CAAC,EAAE,CAAG7gB,EAAI6gB,CAAS,CAAC,EAAE,CAAGA,CAAS,CAAC,EAAE,AAC3D,KAAI,CAAC,CAAC,CAAGo6B,EACT,IAAI,CAAC,CAAC,CAAGC,CACX,CAEF,CAEA,MAAMC,EACJ,YAAY1c,CAAM,CAAE,CAClB,IAAI,CAAC,MAAM,CAAGA,EACd,IAAI,CAAC,OAAO,CAAG,GACf,IAAI,CAAC,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC,aAAa,CAAG,EAAE,CAEvB,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAErC,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAC/C,CAEA,WAAY,CACV,OAAO,IAAI,CAAC,OAAO,AACrB,CAEA,OAAQ,CACN,IAAI,IAAI,CAAC,OAAO,EAIhB,GAAI,CACFA,OAAAA,CAAM,CACN2c,QAAAA,CAAO,CACPC,YAAAA,CAAW,CACZ,CAAG,IAAI,CACJxsC,EAAS4vB,EAAO,GAAG,CAAC,MAAM,AAC9B5vB,CAAAA,EAAO,OAAO,CAAGusC,EACjBvsC,EAAO,WAAW,CAAGwsC,EACrB,IAAI,CAAC,OAAO,CAAG,GACjB,CAEA,MAAO,CACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAIjB,IAAIxsC,EAAS,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,AACnC,KAAI,CAAC,OAAO,CAAG,GACfA,EAAO,OAAO,CAAG,KACjBA,EAAO,WAAW,CAAG,KACvB,CAEA,WAAY,CACV,OAAO,IAAI,CAAC,OAAO,EAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAG,CAC9C,CAEA,WAAY,CACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAIjB,GAAI,CACF,OAAQgH,CAAQ,CAChBwL,OAAAA,CAAM,CACNi6B,cAAAA,CAAa,CACd,CAAG,IAAI,CACJ,CACFjmC,MAAAA,CAAK,CACN,CAAGQ,EAAS,GAAG,CAAC,MAAM,CAEnBR,GACFA,CAAAA,EAAM,MAAM,CAAG,EAAC,EAGlBgM,EAAO,OAAO,CAAC,CAACo2B,EAAMx6C,KAMpB,IALA,GAAI,CACFs+C,IAAAA,CAAG,CACJ,CAAG9D,EACAntC,EAAUgxC,CAAa,CAACr+C,EAAE,CAEvBqN,GACLixC,EAAIjxC,GACJA,EAAUA,EAAQ,MAAM,AAE5B,GAEA,IAAI,CAAC,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC,aAAa,CAAG,EAAE,CACzB,CAEA,UAAUA,CAAO,CAAE+nB,CAAG,CAAE,CACtB,GAAI,EAAC,IAAI,CAAC,OAAO,GAAI,CAACA,GAItB,GAAI,CACFhR,OAAAA,CAAM,CACNi6B,cAAAA,CAAa,CACd,CAAG,IAAI,CACRj6B,EAAO,OAAO,CAAC,CAACm6B,EAAOv+C,KACrB,GAAI,CACFL,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAGw7C,CAEA,EAACF,CAAa,CAACr+C,EAAE,EAAIo1B,EAAI,aAAa,EAAIA,EAAI,aAAa,CAACz1B,EAAGoD,IACjEs7C,CAAAA,CAAa,CAACr+C,EAAE,CAAGqN,CAAM,CAE7B,GACF,CAEA,iBAAiBA,CAAO,CAAEmxC,CAAW,CAAE,CACrC,GAAI,EAAC,IAAI,CAAC,OAAO,GAAI,CAACA,GAItB,GAAI,CACFp6B,OAAAA,CAAM,CACNi6B,cAAAA,CAAa,CACd,CAAG,IAAI,CACRj6B,EAAO,OAAO,CAAC,CAACq6B,EAAOz+C,KACrB,GAAI,CACFL,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG07C,CAEA,EAACJ,CAAa,CAACr+C,EAAE,EAAIw+C,EAAY,YAAY,CAAC7+C,EAAGoD,IACnDs7C,CAAAA,CAAa,CAACr+C,EAAE,CAAGqN,CAAM,CAE7B,GACF,CAEA,MAAM1N,CAAC,CAAEoD,CAAC,CAAE,CAQV,IAPA,GAAI,CACFw+B,OAAAA,CAAM,CACNnM,IAAAA,CAAG,CACJ,CAAG,IAAI,CAAC,MAAM,CACX/mB,EAAQ,IAAIwvC,EAAMl+C,EAAGoD,GACrBsK,EAAU+nB,EAAI,MAAM,CAEjB/nB,GACLgB,EAAM,CAAC,EAAIhB,EAAQ,UAAU,CAC7BgB,EAAM,CAAC,EAAIhB,EAAQ,SAAS,CAC5BA,EAAUA,EAAQ,YAAY,CAWhC,OARIk0B,EAAO,OAAO,EAChBlzB,CAAAA,EAAM,CAAC,EAAIkzB,EAAO,OAAO,AAAD,EAGtBA,EAAO,OAAO,EAChBlzB,CAAAA,EAAM,CAAC,EAAIkzB,EAAO,OAAO,AAAD,EAGnBlzB,CACT,CAEA,QAAQ8B,CAAK,CAAE,CACb,GAAI,CACFxQ,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CAAC,KAAK,CAACoN,EAAM,OAAO,CAAEA,EAAM,OAAO,EAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CACf,KAAM,UACNxQ,EAAAA,EACAoD,EAAAA,EAEA,IAAI27C,CAAW,EACTA,EAAY,OAAO,EACrBA,EAAY,OAAO,EAEvB,CAEF,EACF,CAEA,YAAYvuC,CAAK,CAAE,CACjB,GAAI,CACFxQ,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CAAC,KAAK,CAACoN,EAAM,OAAO,CAAEA,EAAM,OAAO,EAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CACf,KAAM,cACNxQ,EAAAA,EACAoD,EAAAA,EAEA,IAAI27C,CAAW,EACTA,EAAY,WAAW,EACzBA,EAAY,WAAW,EAE3B,CAEF,EACF,CAEF,CAEA,IAAIC,EAAgB,AAAkB,aAAlB,OAAOpd,OAAyBA,OAAS,KACzDqd,EAAiB,AAAiB,aAAjB,OAAOzE,MAAwBA,MAAM,IAAI,CAACx5C,KAAAA,GAC7D,IACF,OAAMk+C,EACJ,YAAYzpB,CAAG,CAAE,CACf,GAAI,CACF+kB,MAAAA,EAAQyE,CAAc,CACtBrd,OAAAA,EAASod,CAAa,CACvB,CAAG/6C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,CACzE,KAAI,CAAC,GAAG,CAAGwxB,EACX,IAAI,CAAC,SAAS,CAAG,GACjB,IAAI,CAAC,kBAAkB,CAAG,IAC1B,IAAI,CAAC,YAAY,CAAG,IACpB,IAAI,CAAC,aAAa,CAAG,IACrB,IAAI,CAAC,QAAQ,CAAG,IAAIuoB,EACpB,IAAI,CAAC,KAAK,CAAG,IAAIO,EAAM,IAAI,EAC3B,IAAI,CAAC,UAAU,CAAG,EAAE,CACpB,IAAI,CAAC,KAAK,CAAG,EAAE,CACf,IAAI,CAAC,aAAa,CAAG,EACrB,IAAI,CAAC,WAAW,CAAG,GACnB,IAAI,CAAC,aAAa,CAAG,GACrB,IAAI,CAAC,UAAU,CAAG,KAClB,IAAI,CAAC,MAAM,CAAG3c,EACd,IAAI,CAAC,KAAK,CAAG4Y,CACf,CAEA,KAAK2E,CAAO,CAAE,CACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAACA,EAClB,CAEA,OAAQ,QAEN,AAAK,IAAI,CAAC,YAAY,CAIf,IAAI,CAAC,YAAY,CAHfzoB,QAAQ,OAAO,EAI1B,CAEA,SAAU,CACR,GAAI,IAAI,CAAC,WAAW,CAClB,MAAO,GAGT,IAAI0oB,EAAc,IAAI,CAAC,KAAK,CAAC,KAAK,CAACnkC,GAAKA,KAWxC,OATImkC,IACF,IAAI,CAAC,KAAK,CAAG,EAAE,CAEX,IAAI,CAAC,YAAY,EACnB,IAAI,CAAC,YAAY,IAIrB,IAAI,CAAC,WAAW,CAAGA,EACZA,CACT,CAEA,YAAY3pB,CAAG,CAAE,CAEfA,EAAI,WAAW,CAAG,gBAClBA,EAAI,OAAO,CAAG,OACdA,EAAI,QAAQ,CAAG,QACfA,EAAI,UAAU,CAAG,CACnB,CAEA,WAAWolB,CAAI,CAAE,CACf,GAAI,CACF5hC,SAAAA,CAAQ,CACRwc,IAAAA,CAAG,CACH4pB,YAAAA,CAAW,CACX/rC,MAAAA,CAAK,CACLgsC,aAAAA,CAAY,CACZ19C,OAAAA,CAAM,CACN29C,cAAAA,CAAa,CACb5/B,KAAAA,EAAO,CAAC,CACRC,KAAAA,EAAO,CAAC,CACR4/B,KAAAA,CAAI,CACJC,KAAAA,CAAI,CACJC,KAAAA,EAAO,EAAK,CACZC,MAAAA,EAAQ,CAAC,CACTC,MAAAA,EAAQ,CAAC,CACV,CAAG/E,EAIA,CAACgF,EAAkBC,EAAuB,CAAGC,AAF1BjF,EAAeuE,GAAa,OAAO,CAAC,WAAY,IAEL,KAAK,CAAC,KACpEtqC,EAAQ8qC,GAAoB,WAC5BG,EAAcF,GAA0B,OAExCG,EAAS3sC,EAAQgsC,EACjBY,EAASt+C,EAAS29C,EAClBY,EAAW5/C,KAAK,GAAG,CAAC0/C,EAAQC,GAC5BE,EAAW7/C,KAAK,GAAG,CAAC0/C,EAAQC,GAC5BG,EAAoBf,EACpBgB,EAAqBf,CAEL,UAAhBS,IACFK,GAAqBF,EACrBG,GAAsBH,GAGJ,UAAhBH,IACFK,GAAqBD,EACrBE,GAAsBF,GAGxB,IAAIG,EAAW,IAAIpD,EAASlkC,EAAU,OAAQumC,GAC1CgB,EAAW,IAAIrD,EAASlkC,EAAU,OAAQwmC,GAC1CgB,EAAUF,EAAS,QAAQ,IAAMC,EAAS,QAAQ,GAMtD,GAJIC,GACFhrB,EAAI,SAAS,CAAC,CAAC0qB,EAAWI,EAAS,SAAS,CAAC,KAAM,CAACJ,EAAWK,EAAS,SAAS,CAAC,MAGhFd,EAAM,CACR,IAAIgB,EAAcP,EAAWR,EACzBgB,EAAcR,EAAWP,EAC7BnqB,EAAI,SAAS,GACbA,EAAI,MAAM,CAACirB,EAAaC,GACxBlrB,EAAI,MAAM,CAACniB,EAAOqtC,GAClBlrB,EAAI,MAAM,CAACniB,EAAO1R,GAClB6zB,EAAI,MAAM,CAACirB,EAAa9+C,GACxB6zB,EAAI,SAAS,GACbA,EAAI,IAAI,EACV,CAEA,GAAI,CAACgrB,EAAS,CACZ,IAAIG,EAAaZ,AAAgB,SAAhBA,GAA0BG,IAAaD,EACpDW,EAAcb,AAAgB,UAAhBA,GAA2BI,IAAaF,EACtDY,EAAad,AAAgB,SAAhBA,GAA0BG,IAAaF,EACpDc,EAAcf,AAAgB,UAAhBA,GAA2BI,IAAaH,EAEtDlrC,EAAM,UAAU,CAAC,SAAY6rC,CAAAA,GAAcC,CAAU,GACvDprB,EAAI,SAAS,CAACniB,EAAQ,EAAM+sC,EAAoB,EAAK,GAGnDtrC,EAAM,QAAQ,CAAC,SAAY+rC,CAAAA,GAAcC,CAAU,GACrDtrB,EAAI,SAAS,CAAC,EAAG7zB,EAAS,EAAM0+C,EAAqB,GAGnDvrC,EAAM,UAAU,CAAC,SAAY6rC,CAAAA,GAAcC,CAAU,GACvDprB,EAAI,SAAS,CAACniB,EAAQ+sC,EAAmB,GAGvCtrC,EAAM,QAAQ,CAAC,SAAY+rC,CAAAA,GAAcC,CAAU,GACrDtrB,EAAI,SAAS,CAAC,EAAG7zB,EAAS0+C,EAE9B,CAGA,OAAQ,IACN,IAAKvrC,AAAU,SAAVA,EACH0gB,EAAI,KAAK,CAACwqB,EAAQC,GAClB,KAEF,KAAKF,AAAgB,SAAhBA,EACHvqB,EAAI,KAAK,CAAC0qB,EAAUA,GACpB,KAEF,KAAKH,AAAgB,UAAhBA,EACHvqB,EAAI,KAAK,CAAC2qB,EAAUA,EAExB,CAGA3qB,EAAI,SAAS,CAAC,CAAC9V,EAAM,CAACC,EACxB,CAEA,MAAMlS,CAAO,CAAE,CACb,GAAI,CACFszC,aAAAA,EAAe,EAAK,CACpBC,YAAAA,EAAc,EAAK,CACnBC,gBAAAA,EAAkB,EAAK,CACvBC,iBAAAA,EAAmB,EAAK,CACxBC,YAAAA,EAAc,EAAK,CACnBC,YAAAA,CAAW,CACXC,WAAAA,CAAU,CACVC,YAAAA,CAAW,CACXC,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACR,CAAGx9C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,EACrE,CACFy9C,UAAAA,CAAS,CACTC,MAAAA,CAAK,CACN,CAAG,IAAI,CACJC,EAAgB,IAAOF,EAU3B,GATA,IAAI,CAAC,aAAa,CAAGE,EACrB,IAAI,CAAC,YAAY,CAAG,IAAIlrB,QAAQC,IAC9B,IAAI,CAAC,YAAY,CAAGA,CACtB,GAEI,IAAI,CAAC,OAAO,IACd,IAAI,CAAC,MAAM,CAACjpB,EAASyzC,EAAkBC,EAAaE,EAAYC,EAAaC,EAASC,IAGpF,CAACT,GAIL,IAAIvN,EAAMH,KAAK,GAAG,GACduO,EAAOpO,EACP/pB,EAAQ,EAERo4B,EAAO,KAETp4B,CAAAA,EAAQ+pB,AADRA,CAAAA,EAAMH,KAAK,GAAG,EAAC,EACDuO,CAAG,GAEJD,IACXC,EAAOpO,EAAM/pB,EAAQk4B,EAEjB,IAAI,CAAC,YAAY,CAACV,EAAiBG,KACrC,IAAI,CAAC,MAAM,CAAC3zC,EAASyzC,EAAkBC,EAAaE,EAAYC,EAAaC,EAASC,GACtFE,EAAM,SAAS,KAInB,IAAI,CAAC,UAAU,CAAG,EAAsBG,EAC1C,CAEI,EAACb,GACHU,EAAM,KAAK,GAGb,IAAI,CAAC,UAAU,CAAG,EAAsBG,GAC1C,CAEA,MAAO,CACD,IAAI,CAAC,UAAU,GACjB,QAA4B,CAAC,IAAI,CAAC,UAAU,EAC5C,IAAI,CAAC,UAAU,CAAG,MAGpB,IAAI,CAAC,KAAK,CAAC,IAAI,EACjB,CAEA,aAAaZ,CAAe,CAAEG,CAAW,CAAE,CAEzC,GAAI,CAACH,EAAiB,CACpB,GAAI,CACFU,cAAAA,CAAa,CACd,CAAG,IAAI,CAGR,GAFmB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAACG,EAAcC,IAAcA,EAAU,MAAM,CAACJ,IAAkBG,EAAc,IAGtH,MAAO,EAEX,OAGA,GAA2B,YAAvB,OAAOV,GAA8BA,KAIrC,CAAC,IAAI,CAAC,WAAW,EAAI,IAAI,CAAC,OAAO,IAKjC,IAAI,CAAC,KAAK,CAAC,SAAS,KAIjB,EACT,CAEA,OAAO3zC,CAAO,CAAEyzC,CAAgB,CAAEC,CAAW,CAAEE,CAAU,CAAEC,CAAW,CAAEC,CAAO,CAAEC,CAAO,CAAE,CACxF,GAAI,CACFQ,aAAAA,CAAY,CACZC,cAAAA,CAAa,CACbtE,SAAAA,CAAQ,CACRnoB,IAAAA,CAAG,CACH0sB,cAAAA,CAAa,CACd,CAAG,IAAI,CACJlwC,EAASwjB,EAAI,MAAM,CACvBmoB,EAAS,KAAK,GAEV3rC,EAAO,KAAK,EAAIA,EAAO,MAAM,CAC/B2rC,EAAS,UAAU,CAAC3rC,EAAO,KAAK,CAAEA,EAAO,MAAM,EAE/C2rC,EAAS,UAAU,CAACqE,EAAcC,GAGpC,IAAIE,EAAa10C,EAAQ,QAAQ,CAAC,SAC9B20C,EAAc30C,EAAQ,QAAQ,CAAC,SAE/B,EAACyzC,GAAqBgB,CAAAA,GAAiB,AAAsB,UAAtB,OAAOb,GAA2B,AAAuB,UAAvB,OAAOC,CAAuB,IAErGa,EAAW,QAAQ,KACrBnwC,EAAO,KAAK,CAAGmwC,EAAW,SAAS,CAAC,KAEhCnwC,EAAO,KAAK,EACdA,CAAAA,EAAO,KAAK,CAAC,KAAK,CAAG,GAAG,MAAM,CAACA,EAAO,KAAK,CAAE,KAAI,GAIjDowC,EAAY,QAAQ,KACtBpwC,EAAO,MAAM,CAAGowC,EAAY,SAAS,CAAC,KAElCpwC,EAAO,KAAK,EACdA,CAAAA,EAAO,KAAK,CAAC,MAAM,CAAG,GAAG,MAAM,CAACA,EAAO,MAAM,CAAE,KAAI,IAKzD,IAAIqwC,EAASrwC,EAAO,WAAW,EAAIA,EAAO,KAAK,CAC3CswC,EAAUtwC,EAAO,YAAY,EAAIA,EAAO,MAAM,CAiBlD,GAfIkvC,GAAoBiB,EAAW,QAAQ,IAAMC,EAAY,QAAQ,KACnEC,EAASF,EAAW,SAAS,CAAC,KAC9BG,EAAUF,EAAY,SAAS,CAAC,MAGlCzE,EAAS,UAAU,CAAC0E,EAAQC,GAEL,UAAnB,OAAOf,GACT9zC,EAAQ,YAAY,CAAC,IAAK,IAAM,QAAQ,CAAC8zC,GAGpB,UAAnB,OAAOC,GACT/zC,EAAQ,YAAY,CAAC,IAAK,IAAM,QAAQ,CAAC+zC,GAGvC,AAAsB,UAAtB,OAAOH,GAA2B,AAAuB,UAAvB,OAAOC,EAA0B,CACrE,IAAIiB,EAAUvH,EAAUvtC,EAAQ,YAAY,CAAC,WAAW,SAAS,IAC7D+0C,EAAS,EACTC,EAAS,EAEb,GAAI,AAAsB,UAAtB,OAAOpB,EAAyB,CAClC,IAAIqB,EAAcj1C,EAAQ,QAAQ,CAAC,SAE/Bi1C,EAAY,QAAQ,GACtBF,EAASE,EAAY,SAAS,CAAC,KAAOrB,EAC7B,CAAC/I,MAAMiK,CAAO,CAAC,EAAE,GAC1BC,CAAAA,EAASD,CAAO,CAAC,EAAE,CAAGlB,CAAS,CAEnC,CAEA,GAAI,AAAuB,UAAvB,OAAOC,EAA0B,CACnC,IAAIqB,EAAel1C,EAAQ,QAAQ,CAAC,UAEhCk1C,EAAa,QAAQ,GACvBF,EAASE,EAAa,SAAS,CAAC,KAAOrB,EAC9B,CAAChJ,MAAMiK,CAAO,CAAC,EAAE,GAC1BE,CAAAA,EAASF,CAAO,CAAC,EAAE,CAAGjB,CAAU,CAEpC,CAEI,CAACkB,GACHA,CAAAA,EAASC,CAAK,EAGZ,CAACA,GACHA,CAAAA,EAASD,CAAK,EAGhB/0C,EAAQ,YAAY,CAAC,QAAS,IAAM,QAAQ,CAAC4zC,GAC7C5zC,EAAQ,YAAY,CAAC,SAAU,IAAM,QAAQ,CAAC6zC,GAC9C,IAAIsB,EAAiBn1C,EAAQ,QAAQ,CAAC,YAAa,GAAM,IACzDm1C,EAAe,QAAQ,CAAC,GAAG,MAAM,CAACA,EAAe,SAAS,GAAI,WAAW,MAAM,CAAC,EAAMJ,EAAQ,MAAM,MAAM,CAAC,EAAMC,EAAQ,KAC3H,CAGI,CAACtB,GACH3rB,EAAI,SAAS,CAAC,EAAG,EAAG6sB,EAAQC,GAG9B70C,EAAQ,MAAM,CAAC+nB,GAEX0sB,GACF,KAAI,CAAC,aAAa,CAAG,EAAI,CAE7B,CAEF,CACAjD,EAAO,aAAa,CAAGF,EACvBE,EAAO,YAAY,CAAGD,EAEtB,GAAI,CACF6D,aAAAA,CAAY,CACb,CAAG5D,EACA6D,EAAmB,AAAqB,aAArB,OAAOpI,UAA4BA,UAAY,IACtE,OAAMqI,EACJ,aAAc,CACZ,GAAI,CACFxI,MAAAA,EAAQsI,CAAY,CACpBnI,UAAAA,EAAYoI,CAAgB,CAC7B,CAAG9+C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,CACzE,KAAI,CAAC,KAAK,CAAGu2C,EACb,IAAI,CAAC,SAAS,CAAGG,CACnB,CAEA,MAAMsI,CAAQ,CAAE,CACd,IAAIC,EAAQ,IAAI,CAEhB,OAAO,EAAkB,mBACvB,AAAID,EAAS,UAAU,CAAC,KACfC,EAAM,eAAe,CAACD,GAGxBC,EAAM,IAAI,CAACD,EACpB,IACF,CAEA,gBAAgBjuB,CAAG,CAAE,CACnB,IAAIb,EAAS,IAAI,IAAI,CAAC,SAAS,CAE/B,GAAI,CACF,OAAO,IAAI,CAAC,aAAa,CAACA,EAAO,eAAe,CAACa,EAAK,iBACxD,CAAE,MAAOO,EAAK,CACZ,OAAO,IAAI,CAAC,aAAa,CAACpB,EAAO,eAAe,CAACa,EAAK,YACxD,CACF,CAEA,cAAc/b,CAAQ,CAAE,CACtB,IAAIkqC,EAAclqC,EAAS,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAEjE,GAAIkqC,EACF,MAAM,AAAIpjD,MAAMojD,EAAY,WAAW,EAGzC,OAAOlqC,CACT,CAEA,KAAKqhC,CAAG,CAAE,CACR,IAAI8I,EAAS,IAAI,CAEjB,OAAO,EAAkB,YACvB,IAAI7I,EAAW,MAAM6I,EAAO,KAAK,CAAC9I,GAC9BtlB,EAAM,MAAMulB,EAAS,IAAI,GAC7B,OAAO6I,EAAO,eAAe,CAACpuB,EAChC,IACF,CAEF,CAEA,MAAMquB,EACJ,YAAYpoC,CAAC,CAAEvM,CAAK,CAAE,CACpB,IAAI,CAAC,IAAI,CAAG,YACZ,IAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,KAAK,CAAGwvC,EAAM,KAAK,CAACxvC,EAC3B,CAEA,MAAM+mB,CAAG,CAAE,CACT,GAAI,CACFz1B,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CAAC,KAAK,CACdqyB,EAAI,SAAS,CAACz1B,GAAK,EAAKoD,GAAK,EAC/B,CAEA,QAAQqyB,CAAG,CAAE,CACX,GAAI,CACFz1B,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CAAC,KAAK,CACdqyB,EAAI,SAAS,CAAC,GAAOz1B,GAAK,EAAK,GAAOoD,GAAK,EAC7C,CAEA,aAAasL,CAAK,CAAE,CAClB,GAAI,CACF1O,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CAAC,KAAK,CACdsL,EAAM,cAAc,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG1O,GAAK,EAAKoD,GAAK,EAAI,CACvD,CAEF,CAEA,MAAMkgD,EACJ,YAAYrqC,CAAQ,CAAEvH,CAAM,CAAE6xC,CAAe,CAAE,CAC7C,IAAI,CAAC,IAAI,CAAG,SACZ,IAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,EAAE,CAAG,EACV,IAAI,CAAC,EAAE,CAAG,EACV,IAAIC,EAAUvI,EAAUvpC,EACxB,KAAI,CAAC,KAAK,CAAG,IAAIyrC,EAASlkC,EAAU,QAASuqC,CAAO,CAAC,EAAE,EACvD,IAAI,CAAC,OAAO,CAAGD,CAAe,CAAC,EAAE,CACjC,IAAI,CAAC,OAAO,CAAGA,CAAe,CAAC,EAAE,CACjC,IAAI,CAAC,EAAE,CAAGC,CAAO,CAAC,EAAE,EAAI,EACxB,IAAI,CAAC,EAAE,CAAGA,CAAO,CAAC,EAAE,EAAI,CAC1B,CAEA,MAAM/tB,CAAG,CAAE,CACT,GAAI,CACFxd,GAAAA,CAAE,CACFC,GAAAA,CAAE,CACFurC,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACPnyC,MAAAA,CAAK,CACN,CAAG,IAAI,CACJ9L,EAAKwS,EAAKwrC,EAAQ,SAAS,CAAC,KAC5Blf,EAAKrsB,EAAKwrC,EAAQ,SAAS,CAAC,KAChCjuB,EAAI,SAAS,CAAChwB,EAAI8+B,GAClB9O,EAAI,MAAM,CAAClkB,EAAM,UAAU,IAC3BkkB,EAAI,SAAS,CAAC,CAAChwB,EAAI,CAAC8+B,EACtB,CAEA,QAAQ9O,CAAG,CAAE,CACX,GAAI,CACFxd,GAAAA,CAAE,CACFC,GAAAA,CAAE,CACFurC,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACPnyC,MAAAA,CAAK,CACN,CAAG,IAAI,CACJ9L,EAAKwS,EAAKwrC,EAAQ,SAAS,CAAC,KAC5Blf,EAAKrsB,EAAKwrC,EAAQ,SAAS,CAAC,KAChCjuB,EAAI,SAAS,CAAChwB,EAAI8+B,GAClB9O,EAAI,MAAM,CAAC,GAAOlkB,EAAM,UAAU,IAClCkkB,EAAI,SAAS,CAAC,CAAChwB,EAAI,CAAC8+B,EACtB,CAEA,aAAa71B,CAAK,CAAE,CAClB,GAAI,CACFuJ,GAAAA,CAAE,CACFC,GAAAA,CAAE,CACF3G,MAAAA,CAAK,CACN,CAAG,IAAI,CACJoyC,EAAMpyC,EAAM,UAAU,GAC1B7C,EAAM,cAAc,CAAC,CAAC,EAAG,EAAG,EAAG,EAAGuJ,GAAM,EAAKC,GAAM,EAClD,EACDxJ,EAAM,cAAc,CAAC,CAACnO,KAAK,GAAG,CAACojD,GAAMpjD,KAAK,GAAG,CAACojD,GAAM,CAACpjD,KAAK,GAAG,CAACojD,GAAMpjD,KAAK,GAAG,CAACojD,GAAM,EAAG,EAAE,EACxFj1C,EAAM,cAAc,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,CAACuJ,GAAM,EAAK,CAACC,GAAM,EACpD,CACH,CAEF,CAEA,MAAM0rC,EACJ,YAAY3oC,CAAC,CAAEtJ,CAAK,CAAE4xC,CAAe,CAAE,CACrC,IAAI,CAAC,IAAI,CAAG,QACZ,IAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,OAAO,CAAG,KACf,IAAIM,EAAY3F,EAAM,UAAU,CAACvsC,GAE7BkyC,CAAAA,AAAgB,IAAhBA,EAAU,CAAC,EAAUA,AAAgB,IAAhBA,EAAU,CAAC,AAAK,IACvCA,EAAU,CAAC,CAAGrH,EACdqH,EAAU,CAAC,CAAGrH,GAGhB,IAAI,CAAC,KAAK,CAAGqH,EACb,IAAI,CAAC,OAAO,CAAGN,CAAe,CAAC,EAAE,CACjC,IAAI,CAAC,OAAO,CAAGA,CAAe,CAAC,EAAE,AACnC,CAEA,MAAM9tB,CAAG,CAAE,CACT,GAAI,CACF,MAAO,CACLz1B,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CACDqgD,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACR,CAAG,IAAI,CACJj+C,EAAKg+C,EAAQ,SAAS,CAAC,KACvBlf,EAAKmf,EAAQ,SAAS,CAAC,KAC3BjuB,EAAI,SAAS,CAAChwB,EAAI8+B,GAClB9O,EAAI,KAAK,CAACz1B,EAAGoD,GAAKpD,GAClBy1B,EAAI,SAAS,CAAC,CAAChwB,EAAI,CAAC8+B,EACtB,CAEA,QAAQ9O,CAAG,CAAE,CACX,GAAI,CACF,MAAO,CACLz1B,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CACDqgD,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACR,CAAG,IAAI,CACJj+C,EAAKg+C,EAAQ,SAAS,CAAC,KACvBlf,EAAKmf,EAAQ,SAAS,CAAC,KAC3BjuB,EAAI,SAAS,CAAChwB,EAAI8+B,GAClB9O,EAAI,KAAK,CAAC,EAAMz1B,EAAG,EAAMoD,GAAKpD,GAC9By1B,EAAI,SAAS,CAAC,CAAChwB,EAAI,CAAC8+B,EACtB,CAEA,aAAa71B,CAAK,CAAE,CAClB,GAAI,CACF1O,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CAAC,KAAK,CACdsL,EAAM,cAAc,CAAC,CAAC1O,GAAK,EAAK,EAAG,EAAGoD,GAAK,EAAK,EAAG,EAAE,CACvD,CAEF,CAEA,MAAM0gD,EACJ,YAAY7oC,CAAC,CAAEmI,CAAM,CAAEmgC,CAAe,CAAE,CACtC,IAAI,CAAC,IAAI,CAAG,SACZ,IAAI,CAAC,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,MAAM,CAAGtI,EAAU73B,GACxB,IAAI,CAAC,OAAO,CAAGmgC,CAAe,CAAC,EAAE,CACjC,IAAI,CAAC,OAAO,CAAGA,CAAe,CAAC,EAAE,AACnC,CAEA,MAAM9tB,CAAG,CAAE,CACT,GAAI,CACFguB,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACPtgC,OAAAA,CAAM,CACP,CAAG,IAAI,CACJ3d,EAAKg+C,EAAQ,SAAS,CAAC,KACvBlf,EAAKmf,EAAQ,SAAS,CAAC,KAC3BjuB,EAAI,SAAS,CAAChwB,EAAI8+B,GAClB9O,EAAI,SAAS,CAACrS,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EAC9EqS,EAAI,SAAS,CAAC,CAAChwB,EAAI,CAAC8+B,EACtB,CAEA,QAAQ9O,CAAG,CAAE,CACX,GAAI,CACFguB,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACPtgC,OAAAA,CAAM,CACP,CAAG,IAAI,CACJ7gB,EAAI6gB,CAAM,CAAC,EAAE,CACb5gB,EAAI4gB,CAAM,CAAC,EAAE,CACbzgB,EAAIygB,CAAM,CAAC,EAAE,CACb1hB,EAAI0hB,CAAM,CAAC,EAAE,CACb/a,EAAI+a,CAAM,CAAC,EAAE,CACbvjB,EAAIujB,CAAM,CAAC,EAAE,CAIb2gC,EAAM,EAAKxhD,CAAAA,EAAK8F,CAAAA,AADZ,EACYA,EAAQxI,AAFpB,EAEoBA,CAAIilC,EAAKtiC,EAAKd,CAAAA,AADlC,EACkCA,EAAQ7B,AAH1C,EAG0CA,CAAIo4C,EAAKt1C,EAAKjB,CAAAA,AAFxD,EAEwDA,EAAQ2G,AAHhE,EAGgEA,CAAI4vC,CAAC,EACzExyC,EAAKg+C,EAAQ,SAAS,CAAC,KACvBlf,EAAKmf,EAAQ,SAAS,CAAC,KAC3BjuB,EAAI,SAAS,CAAChwB,EAAI8+B,GAClB9O,EAAI,SAAS,CAACsuB,EAAO17C,CAAAA,AALb,EAKaA,EAAQxI,AANrB,EAMqBA,CAAIilC,EAAIif,EAAOlkD,CAAAA,AAPpC,EAOoCA,EAAQ6B,AAL5C,EAK4CA,CAAIrB,EAAI0jD,EAAOphD,CAAAA,AAN3D,EAM2DA,EAAQH,AALnE,EAKmEA,CAAInC,EAAI0jD,EAAOxhD,CAAAA,AALlF,EAKkFA,EAAQI,AAP1F,EAO0FA,CAAIs1C,EAAI8L,EAAOvhD,CAAAA,EAAI3C,EAAI8C,EAAI0F,CAAAA,EAAI07C,EAAOphD,CAAAA,EAAIjB,EAAIa,EAAI1C,CAAAA,GACpJ41B,EAAI,SAAS,CAAC,CAAChwB,EAAI,CAAC8+B,EACtB,CAEA,aAAa71B,CAAK,CAAE,CAClBA,EAAM,cAAc,CAAC,IAAI,CAAC,MAAM,CAClC,CAEF,CAEA,MAAMs1C,UAAaF,EACjB,YAAY7qC,CAAQ,CAAEgrC,CAAI,CAAEV,CAAe,CAAE,CAC3C,KAAK,CAACtqC,EAAUgrC,EAAMV,GACtB,IAAI,CAAC,IAAI,CAAG,OACZ,IAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,KAAK,CAAG,IAAIpG,EAASlkC,EAAU,QAASgrC,EAC/C,CAEF,CAEA,MAAMC,UAAcF,EAClB,YAAY/qC,CAAQ,CAAEgrC,CAAI,CAAEV,CAAe,CAAE,CAC3C,KAAK,CAACtqC,EAAUgrC,EAAMV,GACtB,IAAI,CAAC,IAAI,CAAG,QACZ,IAAI,CAAC,MAAM,CAAG,CAAC,EAAG,EAAGhjD,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAK,EAAG,EAAG,EAAE,AAClE,CAEF,CAEA,MAAM4jD,WAAcH,EAClB,YAAY/qC,CAAQ,CAAEgrC,CAAI,CAAEV,CAAe,CAAE,CAC3C,KAAK,CAACtqC,EAAUgrC,EAAMV,GACtB,IAAI,CAAC,IAAI,CAAG,QACZ,IAAI,CAAC,MAAM,CAAG,CAAC,EAAGhjD,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAK,EAAG,EAAG,EAAG,EAAE,AAClE,CAEF,CAWA,MAAM6jD,GACJ,YAAYnrC,CAAQ,CAAEgL,CAAS,CAAEs/B,CAAe,CAAE,CAChD,IAAI,CAAC,QAAQ,CAAGtqC,EAChB,IAAI,CAAC,UAAU,CAAG,EAAE,CAEpBnY,AAbKg6C,EAYsB72B,GAZI,IAAI,GAAG,OAAO,CAAC,gBAAiB,QAAQ,OAAO,CAAC,eAAgB,MAAM,KAAK,CAAC,eAatG,OAAO,CAACA,IACX,GAAIA,AAAc,SAAdA,GAIJ,GAAI,CAACxW,EAAMxL,EAAM,CAAGoiD,AAf1B,SAAwBpgC,CAAS,EAC/B,GAAI,CAACxW,EAAMxL,EAAM,CAAGgiB,EAAU,KAAK,CAAC,KACpC,MAAO,CAACxW,EAAK,IAAI,GAAIxL,EAAM,IAAI,GAAG,OAAO,CAAC,IAAK,IAAI,AACrD,EAYyCgiB,GAC/BqgC,EAAgBF,GAAU,cAAc,CAAC32C,EAAK,AAErB,UAAlB62C,GACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAIA,EAAc,IAAI,CAAC,QAAQ,CAAEriD,EAAOshD,IAEjE,EACF,CAEA,OAAO,YAAYtqC,CAAQ,CAAEvL,CAAO,CAAE,CACpC,IAAIm1C,EAAiBn1C,EAAQ,QAAQ,CAAC,YAAa,GAAO,IACtD,CAAC62C,EAA0BC,EAA2BD,CAAwB,CAAC,CAAG72C,EAAQ,QAAQ,CAAC,mBAAoB,GAAO,IAAM,KAAK,UAG7I,AAAIm1C,EAAe,QAAQ,GAClB,IAAIuB,GAAUnrC,EAAU4pC,EAAe,SAAS,GAHnC,CAAC0B,EAA0BC,EAAyB,EAMnE,IACT,CAEA,MAAM/uB,CAAG,CAAE,CAMT,IAAK,GALD,CACFgvB,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ3G,EAAM2G,EAAW,MAAM,CAElBpkD,EAAI,EAAGA,EAAIy9C,EAAKz9C,IACvBokD,CAAU,CAACpkD,EAAE,CAAC,KAAK,CAACo1B,EAExB,CAEA,QAAQA,CAAG,CAAE,CAMX,IAAK,GALD,CACFgvB,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ3G,EAAM2G,EAAW,MAAM,CAElBpkD,EAAIy9C,EAAM,EAAGz9C,GAAK,EAAGA,IAC5BokD,CAAU,CAACpkD,EAAE,CAAC,OAAO,CAACo1B,EAE1B,CAGA,aAAa/mB,CAAK,CAAE,CAMlB,IAAK,GALD,CACF+1C,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ3G,EAAM2G,EAAW,MAAM,CAElBpkD,EAAI,EAAGA,EAAIy9C,EAAKz9C,IACvBokD,CAAU,CAACpkD,EAAE,CAAC,YAAY,CAACqO,EAE/B,CAEF,CACA01C,GAAU,cAAc,CAAG,CACzB,UAAWf,EACX,OAAQC,EACR,MAAOM,EACP,OAAQE,EACR,MAAOI,EACP,MAAOC,EACT,CAEA,OAAMO,GACJ,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAE,CAC1B,IAAIikD,EAAmB1gD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CAYxF,GAXA,IAAI,CAAC,QAAQ,CAAGgV,EAChB,IAAI,CAAC,IAAI,CAAGvY,EACZ,IAAI,CAAC,gBAAgB,CAAGikD,EACxB,IAAI,CAAC,UAAU,CAAG,CAAC,EACnB,IAAI,CAAC,MAAM,CAAG,CAAC,EACf,IAAI,CAAC,iBAAiB,CAAG,CAAC,EAC1B,IAAI,CAAC,eAAe,CAAG,GACvB,IAAI,CAAC,oBAAoB,CAAG,GAC5B,IAAI,CAAC,MAAM,CAAG,KACd,IAAI,CAAC,QAAQ,CAAG,EAAE,CAEd,CAACjkD,GAAQA,AAAkB,IAAlBA,EAAK,QAAQ,CAExB,OAIFT,MAAM,IAAI,CAACS,EAAK,UAAU,EAAE,OAAO,CAACkkD,IAClC,IAAIC,EAAWzJ,EAAuBwJ,EAAU,QAAQ,CACxD,KAAI,CAAC,UAAU,CAACC,EAAS,CAAG,IAAI1H,EAASlkC,EAAU4rC,EAAUD,EAAU,KAAK,CAC9E,GACA,IAAI,CAAC,4BAA4B,GAE7B,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ,IAErC7yC,AADa,IAAI,CAAC,YAAY,CAAC,SAAS,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,CAACkJ,GAAKA,EAAE,IAAI,IACvE,OAAO,CAACxC,IACb,IAAI,CAACA,GAIL,GAAI,CAACnB,EAAMrV,EAAM,CAAGwW,EAAM,KAAK,CAAC,KAAK,GAAG,CAACwC,GAAKA,EAAE,IAAI,GACpD,KAAI,CAAC,MAAM,CAAC3D,EAAK,CAAG,IAAI6lC,EAASlkC,EAAU3B,EAAMrV,GACnD,GAGF,GAAI,CACFukB,YAAAA,CAAW,CACZ,CAAGvN,EACA3U,EAAK,IAAI,CAAC,YAAY,CAAC,MAEvBA,EAAG,QAAQ,IACT,CAACkiB,CAAW,CAACliB,EAAG,SAAS,GAAG,EAC9BkiB,CAAAA,CAAW,CAACliB,EAAG,SAAS,GAAG,CAAG,IAAI,AAAD,EAIrCrE,MAAM,IAAI,CAACS,EAAK,UAAU,EAAE,OAAO,CAACokD,IAClC,GAAIA,AAAuB,IAAvBA,EAAU,QAAQ,CACpB,IAAI,CAAC,QAAQ,CAACA,QACT,GAAIH,GAAqBG,CAAAA,AAAuB,IAAvBA,EAAU,QAAQ,EAAUA,AAAuB,IAAvBA,EAAU,QAAQ,AAAK,EAAI,CACrF,IAAIC,EAAW9rC,EAAS,cAAc,CAAC6rC,EAEnCC,CAAAA,EAAS,OAAO,GAAG,MAAM,CAAG,GAC9B,IAAI,CAAC,QAAQ,CAACA,EAElB,CACF,EACF,CAEA,aAAaztC,CAAI,CAAE,CACjB,IAAI0tC,EAAoB/gD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CACrFqK,EAAO,IAAI,CAAC,UAAU,CAACgJ,EAAK,CAEhC,GAAI,CAAChJ,GAAQ02C,EAAmB,CAC9B,IAAIC,EAAQ,IAAI9H,EAAS,IAAI,CAAC,QAAQ,CAAE7lC,EAAM,IAG9C,OADA,IAAI,CAAC,UAAU,CAACA,EAAK,CAAG2tC,EACjBA,CACT,CAEA,OAAO32C,GAAQ6uC,EAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,CAC7C,CAEA,kBAAmB,CACjB,IAAK,IAAIplC,KAAO,IAAI,CAAC,UAAU,CAC7B,GAAIA,AAAQ,SAARA,GAAkBA,EAAI,QAAQ,CAAC,SACjC,OAAO,IAAI,CAAC,UAAU,CAACA,EAAI,CAI/B,OAAOolC,EAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,CACrC,CAEA,SAAS7lC,CAAI,CAAE,CACb,IAAI0tC,EAAoB/gD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CACrFihD,EAAgBjhD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CACjFwU,EAAQ,IAAI,CAAC,MAAM,CAACnB,EAAK,CAE7B,GAAImB,EACF,OAAOA,EAGT,IAAInK,EAAO,IAAI,CAAC,YAAY,CAACgJ,GAE7B,GAAIhJ,MAAAA,GAAoCA,EAAK,QAAQ,GAGnD,OAFA,IAAI,CAAC,MAAM,CAACgJ,EAAK,CAAGhJ,EAEbA,EAGT,GAAI,CAAC42C,EAAe,CAClB,GAAI,CACFzgD,OAAAA,CAAM,CACP,CAAG,IAAI,CAER,GAAIA,EAAQ,CACV,IAAI0gD,EAAc1gD,EAAO,QAAQ,CAAC6S,GAElC,GAAI6tC,MAAAA,GAAkDA,EAAY,QAAQ,GACxE,OAAOA,CAEX,CACF,CAEA,GAAIH,EAAmB,CACrB,IAAII,EAAS,IAAIjI,EAAS,IAAI,CAAC,QAAQ,CAAE7lC,EAAM,IAG/C,OADA,IAAI,CAAC,MAAM,CAACA,EAAK,CAAG8tC,EACbA,CACT,CAEA,OAAO3sC,GAAS0kC,EAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,CAC9C,CAEA,OAAO1nB,CAAG,CAAE,CAGV,GAAI,AAAyC,SAAzC,IAAI,CAAC,QAAQ,CAAC,WAAW,SAAS,IAAiB,AAA4C,WAA5C,IAAI,CAAC,QAAQ,CAAC,cAAc,SAAS,IAM5F,GAFAA,EAAI,IAAI,GAEJ,IAAI,CAAC,QAAQ,CAAC,QAAQ,QAAQ,GAAI,CAEpC,IAAI4vB,EAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,aAAa,GAE1CA,IACF,IAAI,CAAC,YAAY,CAAC5vB,GAClB4vB,EAAK,KAAK,CAAC5vB,EAAK,IAAI,EAExB,MAAO,GAAI,AAA6C,SAA7C,IAAI,CAAC,QAAQ,CAAC,UAAU,QAAQ,CAAC,QAAoB,CAE9D,IAAItX,EAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,aAAa,GAE9CA,IACF,IAAI,CAAC,YAAY,CAACsX,GAClBtX,EAAO,KAAK,CAACsX,EAAK,IAAI,EAE1B,MACE,IAAI,CAAC,UAAU,CAACA,GAChB,IAAI,CAAC,cAAc,CAACA,GACpB,IAAI,CAAC,YAAY,CAACA,GAGpBA,EAAI,OAAO,GACb,CAEA,WAAWxa,CAAC,CAAE,CACd,CAEA,aAAawa,CAAG,CAAE,CAEhB,IAAIxR,EAAYmgC,GAAU,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAE,IAAI,EAErDngC,GACFA,EAAU,KAAK,CAACwR,GAIlB,IAAI6vB,EAAoB,IAAI,CAAC,QAAQ,CAAC,YAAa,GAAO,IAE1D,GAAIA,EAAkB,QAAQ,GAAI,CAChC,IAAI5F,EAAO4F,EAAkB,aAAa,GAEtC5F,GACFA,EAAK,KAAK,CAACjqB,EAEf,CACF,CAEA,aAAaxa,CAAC,CAAE,CAChB,CAEA,eAAewa,CAAG,CAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACt0B,IACpBA,EAAM,MAAM,CAACs0B,EACf,EACF,CAEA,SAASqvB,CAAS,CAAE,CAClB,IAAI3jD,EAAQ2jD,aAAqBJ,GAAUI,EAAY,IAAI,CAAC,QAAQ,CAAC,aAAa,CAACA,EACnF3jD,CAAAA,EAAM,MAAM,CAAG,IAAI,CAEf,CAACujD,GAAQ,gBAAgB,CAAC,QAAQ,CAACvjD,EAAM,IAAI,GAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAACA,EAEvB,CAEA,gBAAgBg7C,CAAQ,CAAE,CAGxB,IAFIoJ,EAEA,CACF7kD,KAAAA,CAAI,CACL,CAAG,IAAI,CAER,GAAI,AAAwB,YAAxB,OAAOA,EAAK,OAAO,CACrB,OAAOA,EAAK,OAAO,CAACy7C,GAGtB,IAAIqJ,EAAe,AAA6C,OAA5CD,CAAAA,EAAqB7kD,EAAK,YAAY,AAAD,GAAe6kD,AAAuB,KAAK,IAA5BA,EAAgC,KAAK,EAAIA,EAAmB,IAAI,CAAC7kD,EAAM,eAE/I,EAAK8kD,GAAgBA,AAAiB,KAAjBA,GAIdA,EAAa,KAAK,CAAC,KAAK,IAAI,CAACC,GAAc,IAAI,MAAM,CAACA,KAAgBtJ,EAC/E,CAEA,8BAA+B,CAC7B,GAAI,CACFpqC,OAAAA,CAAM,CACN2zC,kBAAAA,CAAiB,CAClB,CAAG,IAAI,CAAC,QAAQ,CAEjB,IAAK,IAAIvJ,KAAYpqC,EACnB,GAAI,CAACoqC,EAAS,UAAU,CAAC,MAAQ,IAAI,CAAC,eAAe,CAACA,GAAW,CAC/D,IAAI1jC,EAAQ1G,CAAM,CAACoqC,EAAS,CACxBG,EAAcoJ,CAAiB,CAACvJ,EAAS,CAE7C,GAAI1jC,EACF,IAAK,IAAInB,KAAQmB,EAAO,CACtB,IAAIktC,EAAsB,IAAI,CAAC,iBAAiB,CAACruC,EAAK,AAEnB,UAAxBquC,GACTA,CAAAA,EAAsB,KAAI,EAGxBrJ,GAAeqJ,IACjB,IAAI,CAAC,MAAM,CAACruC,EAAK,CAAGmB,CAAK,CAACnB,EAAK,CAC/B,IAAI,CAAC,iBAAiB,CAACA,EAAK,CAAGglC,EAEnC,CAEJ,CAEJ,CAEA,aAAa5uC,CAAO,CAAEk4C,CAAY,CAAE,CAYlC,OAXgBA,EAAa,MAAM,CAAC,CAACC,EAAWvuC,KAC9C,IAAIwuC,EAAYp4C,EAAQ,QAAQ,CAAC4J,GAEjC,GAAI,CAACwuC,EAAU,QAAQ,GACrB,OAAOD,EAGT,IAAI5jD,EAAQ6jD,EAAU,SAAS,GAE/B,OADAA,EAAU,QAAQ,CAAC,IACZ,IAAID,EAAW,CAACvuC,EAAMrV,EAAM,CAAC,AACtC,EAAG,EAAE,CAEP,CAEA,cAAcyL,CAAO,CAAEqE,CAAM,CAAE,CAC7BA,EAAO,OAAO,CAAC8oC,IACb,GAAI,CAACvjC,EAAMrV,EAAM,CAAG44C,EACpBntC,EAAQ,QAAQ,CAAC4J,EAAM,IAAM,QAAQ,CAACrV,EACxC,EACF,CAEA,cAAe,CACb,IAAI8jD,EAEJ,MAAO,AAAC,CAAiC,OAAhCA,CAAAA,EAAe,IAAI,CAAC,MAAM,AAAD,GAAeA,AAAiB,KAAK,IAAtBA,EAA0B,KAAK,EAAIA,EAAa,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAO,CAC/H,CAEF,CACArB,GAAQ,gBAAgB,CAAG,CAAC,QAAQ,AAEpC,OAAMsB,WAAuBtB,GAC3B,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,EACxB,CAEF,CAEA,SAASsB,GAAeC,CAAU,EAChC,IAAIC,EAAUD,EAAW,IAAI,GAC7B,MAAO,SAAS,IAAI,CAACC,GAAWA,EAAU,IAAK,MAAM,CAACA,EAAS,IACjE,CAqEA,MAAMC,GACJ,YAAYC,CAAS,CAAEC,CAAW,CAAEC,CAAU,CAAE9rC,CAAQ,CAAEyrC,CAAU,CAAEM,CAAO,CAAE,CAC7E,IAAIC,EAAcD,EAAU,AAAmB,UAAnB,OAAOA,EAAuBJ,GAAK,KAAK,CAACI,GAAWA,EAAU,CAAC,CAC3F,KAAI,CAAC,UAAU,CAAGN,GAAcO,EAAY,UAAU,CACtD,IAAI,CAAC,QAAQ,CAAGhsC,GAAYgsC,EAAY,QAAQ,CAChD,IAAI,CAAC,SAAS,CAAGJ,GAAaI,EAAY,SAAS,CACnD,IAAI,CAAC,UAAU,CAAGF,GAAcE,EAAY,UAAU,CACtD,IAAI,CAAC,WAAW,CAAGH,GAAeG,EAAY,WAAW,AAC3D,CAEA,OAAO,OAAQ,CACb,IAAIxkB,EAAOh+B,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,GAC3EuiD,EAAUviD,UAAU,MAAM,CAAG,EAAIA,SAAS,CAAC,EAAE,CAAGjD,KAAAA,EAChDqlD,EAAY,GACZC,EAAc,GACdC,EAAa,GACb9rC,EAAW,GACXyrC,EAAa,GACb3tC,EAAQuiC,EAAe7Y,GAAM,IAAI,GAAG,KAAK,CAAC,KAC1CykB,EAAM,CACR,SAAU,GACV,UAAW,GACX,WAAY,GACZ,YAAa,EACf,EAgDA,OA/CAnuC,EAAM,OAAO,CAACyB,IACZ,OAAQ,IACN,IAAK,CAAC0sC,EAAI,SAAS,EAAIN,GAAK,MAAM,CAAC,QAAQ,CAACpsC,GAC7B,YAATA,GACFqsC,CAAAA,EAAYrsC,CAAG,EAGjB0sC,EAAI,SAAS,CAAG,GAChB,KAEF,KAAK,CAACA,EAAI,WAAW,EAAIN,GAAK,QAAQ,CAAC,QAAQ,CAACpsC,GACjC,YAATA,GACFssC,CAAAA,EAActsC,CAAG,EAGnB0sC,EAAI,SAAS,CAAG,GAChBA,EAAI,WAAW,CAAG,GAClB,KAEF,KAAK,CAACA,EAAI,UAAU,EAAIN,GAAK,OAAO,CAAC,QAAQ,CAACpsC,GAC/B,YAATA,GACFusC,CAAAA,EAAavsC,CAAG,EAGlB0sC,EAAI,SAAS,CAAG,GAChBA,EAAI,WAAW,CAAG,GAClBA,EAAI,UAAU,CAAG,GACjB,KAEF,KAAK,CAACA,EAAI,QAAQ,CACH,YAAT1sC,GACF,EAACS,EAAS,CAAGT,EAAK,KAAK,CAAC,IAAG,EAG7B0sC,EAAI,SAAS,CAAG,GAChBA,EAAI,WAAW,CAAG,GAClBA,EAAI,UAAU,CAAG,GACjBA,EAAI,QAAQ,CAAG,GACf,KAEF,SACe,YAAT1sC,GACFksC,CAAAA,GAAclsC,CAAG,CAGvB,CACF,GACO,IAAIosC,GAAKC,EAAWC,EAAaC,EAAY9rC,EAAUyrC,EAAYM,EAC5E,CAEA,UAAW,CACT,MAAO,CAACG,AArIZ,SAA0BN,CAAS,EACjC,GAAI,CAACA,EACH,MAAO,GAGT,IAAIO,EAAkBP,EAAU,IAAI,GAAG,WAAW,GAElD,OAAQO,GACN,IAAK,SACL,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACH,OAAOA,CAET,SACE,GAAI,yBAAyB,IAAI,CAACA,GAChC,OAAOA,EAGT,MAAO,EACX,CACF,EA8G6B,IAAI,CAAC,SAAS,EAAG,IAAI,CAAC,WAAW,CAAEC,AAtGhE,SAA2BN,CAAU,EACnC,GAAI,CAACA,EACH,MAAO,GAGT,IAAIO,EAAmBP,EAAW,IAAI,GAAG,WAAW,GAEpD,OAAQO,GACN,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,QACH,OAAOA,CAET,SACE,GAAI,WAAW,IAAI,CAACA,GAClB,OAAOA,EAGT,MAAO,EACX,CACF,EA8EkF,IAAI,CAAC,UAAU,EAAG,IAAI,CAAC,QAAQ,CA9I1DZ,AA+IjC,IAAI,CAAC,UAAU,CA/I6B,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAACD,IAAgB,IAAI,CAAC,KA+ItE,CAAC,IAAI,CAAC,KAAK,IAAI,EACpD,CAEF,CACAG,GAAK,MAAM,CAAG,gCACdA,GAAK,QAAQ,CAAG,4BAChBA,GAAK,OAAO,CAAG,wEAEf,OAAMW,GACJ,aAAc,CACZ,IAAI/iD,EAAKC,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAGwhC,OAAO,GAAG,CACnF1+B,EAAK9C,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAGwhC,OAAO,GAAG,CACnFx8B,EAAKhF,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAGwhC,OAAO,GAAG,CACnFv8B,EAAKjF,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAGwhC,OAAO,GAAG,AACvF,KAAI,CAAC,EAAE,CAAGzhC,EACV,IAAI,CAAC,EAAE,CAAG+C,EACV,IAAI,CAAC,EAAE,CAAGkC,EACV,IAAI,CAAC,EAAE,CAAGC,EACV,IAAI,CAAC,QAAQ,CAAClF,EAAI+C,GAClB,IAAI,CAAC,QAAQ,CAACkC,EAAIC,EACpB,CAEA,IAAI,GAAI,CACN,OAAO,IAAI,CAAC,EAAE,AAChB,CAEA,IAAI,GAAI,CACN,OAAO,IAAI,CAAC,EAAE,AAChB,CAEA,IAAI,OAAQ,CACV,OAAO,IAAI,CAAC,EAAE,CAAG,IAAI,CAAC,EAAE,AAC1B,CAEA,IAAI,QAAS,CACX,OAAO,IAAI,CAAC,EAAE,CAAG,IAAI,CAAC,EAAE,AAC1B,CAEA,SAASlJ,CAAC,CAAEoD,CAAC,CAAE,CACI,SAANpD,IACLu4C,CAAAA,MAAM,IAAI,CAAC,EAAE,GAAKA,MAAM,IAAI,CAAC,EAAE,KACjC,IAAI,CAAC,EAAE,CAAGv4C,EACV,IAAI,CAAC,EAAE,CAAGA,GAGRA,EAAI,IAAI,CAAC,EAAE,EACb,KAAI,CAAC,EAAE,CAAGA,CAAAA,EAGRA,EAAI,IAAI,CAAC,EAAE,EACb,KAAI,CAAC,EAAE,CAAGA,CAAAA,GAIG,SAANoD,IACLm1C,CAAAA,MAAM,IAAI,CAAC,EAAE,GAAKA,MAAM,IAAI,CAAC,EAAE,KACjC,IAAI,CAAC,EAAE,CAAGn1C,EACV,IAAI,CAAC,EAAE,CAAGA,GAGRA,EAAI,IAAI,CAAC,EAAE,EACb,KAAI,CAAC,EAAE,CAAGA,CAAAA,EAGRA,EAAI,IAAI,CAAC,EAAE,EACb,KAAI,CAAC,EAAE,CAAGA,CAAAA,EAGhB,CAEA,KAAKpD,CAAC,CAAE,CACN,IAAI,CAAC,QAAQ,CAACA,EAAG,KACnB,CAEA,KAAKoD,CAAC,CAAE,CACN,IAAI,CAAC,QAAQ,CAAC,KAAMA,EACtB,CAEA,eAAey7C,CAAW,CAAE,CAC1B,IAAI,CAACA,GAIL,GAAI,CACF76C,GAAAA,CAAE,CACF+C,GAAAA,CAAE,CACFkC,GAAAA,CAAE,CACFC,GAAAA,CAAE,CACH,CAAG21C,EACJ,IAAI,CAAC,QAAQ,CAAC76C,EAAI+C,GAClB,IAAI,CAAC,QAAQ,CAACkC,EAAIC,GACpB,CAEA,SAAS9I,CAAC,CAAE+lC,CAAE,CAAEz2B,CAAE,CAAEC,CAAE,CAAEC,CAAE,CAAE,CAC1B,OAAOrP,KAAK,GAAG,CAAC,EAAIH,EAAG,GAAK+lC,EAAK,EAAI5lC,KAAK,GAAG,CAAC,EAAIH,EAAG,GAAKA,EAAIsP,EAAK,EAAK,GAAItP,CAAAA,EAAKG,KAAK,GAAG,CAACH,EAAG,GAAKuP,EAAKpP,KAAK,GAAG,CAACH,EAAG,GAAKwP,CAC1H,CAEA,eAAeo3C,CAAI,CAAE7gB,CAAE,CAAEz2B,CAAE,CAAEC,CAAE,CAAEC,CAAE,CAAE,CACnC,IAAIpN,EAAI,EAAI2jC,EAAK,GAAKz2B,EAAK,EAAIC,EAC3BpN,EAAI,GAAK4jC,EAAK,EAAIz2B,EAAK,EAAIC,EAAK,EAAIC,EACpCjN,EAAI,EAAI+M,EAAK,EAAIy2B,EAErB,GAAI5jC,AAAM,IAANA,EAAS,CACX,GAAIC,AAAM,IAANA,EACF,OAGF,IAAIpC,EAAI,CAACuC,EAAIH,CAET,GAAIpC,GAAKA,EAAI,IACX4mD,EACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC5mD,EAAG+lC,EAAIz2B,EAAIC,EAAIC,IAEvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAACxP,EAAG+lC,EAAIz2B,EAAIC,EAAIC,KAI3C,MACF,CAEA,IAAIq3C,EAAO1mD,KAAK,GAAG,CAACiC,EAAG,GAAK,EAAIG,EAAIJ,EAEpC,IAAI0kD,CAAAA,EAAO,IAIX,IAAI5S,EAAK,AAAC,EAAC7xC,EAAIjC,KAAK,IAAI,CAAC0mD,EAAI,EAAM,GAAI1kD,CAAAA,CAEnC,GAAI8xC,GAAMA,EAAK,IACb2S,EACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC3S,EAAIlO,EAAIz2B,EAAIC,EAAIC,IAExC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAACykC,EAAIlO,EAAIz2B,EAAIC,EAAIC,KAI5C,IAAIwkC,EAAK,AAAC,EAAC5xC,EAAIjC,KAAK,IAAI,CAAC0mD,EAAI,EAAM,GAAI1kD,CAAAA,CAEnC,GAAI6xC,GAAMA,EAAK,IACb4S,EACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC5S,EAAIjO,EAAIz2B,EAAIC,EAAIC,IAExC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAACwkC,EAAIjO,EAAIz2B,EAAIC,EAAIC,KAG9C,CAGA,eAAes3C,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE,CACrD,IAAI,CAAC,QAAQ,CAACP,EAAKC,GACnB,IAAI,CAAC,QAAQ,CAACK,EAAKC,GACnB,IAAI,CAAC,cAAc,CAAC,GAAMP,EAAKE,EAAKE,EAAKE,GACzC,IAAI,CAAC,cAAc,CAAC,GAAOL,EAAKE,EAAKE,EAAKE,EAC5C,CAEA,kBAAkBP,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE,CAC9C,IAAIG,EAAOR,EAAM,EAAI,EAAKE,CAAAA,EAAMF,CAAE,EAE9BS,EAAOR,EAAM,EAAI,EAAKE,CAAAA,EAAMF,CAAE,EAMlC,IAAI,CAAC,cAAc,CAACD,EAAKC,EAAKO,EAJnBA,EAAO,EAAI,EAAKJ,CAAAA,EAAMJ,CAAE,EAIOS,EAF/BA,EAAO,EAAI,EAAKJ,CAAAA,EAAMJ,CAAE,EAEmBG,EAAKC,EAC7D,CAEA,aAAavnD,CAAC,CAAEoD,CAAC,CAAE,CACjB,GAAI,CACFY,GAAAA,CAAE,CACF+C,GAAAA,CAAE,CACFkC,GAAAA,CAAE,CACFC,GAAAA,CAAE,CACH,CAAG,IAAI,CACR,OAAOlF,GAAMhE,GAAKA,GAAKiJ,GAAMlC,GAAM3D,GAAKA,GAAK8F,CAC/C,CAEF,CAEA,MAAM0+C,WAAmB,IAAW,CAClC,YAAY93C,CAAI,CAAE,CAChB,KAAK,CAACA,EACL,OAAO,CAAC,gBAAiB,MACzB,OAAO,CAAC,sCAAuC,KAChD,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,QAAQ,CAC7B,IAAI,CAAC,CAAC,CAAG,GACT,IAAI,CAAC,eAAe,CAAG,KACvB,IAAI,CAAC,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC,MAAM,CAAG,EAAE,AAClB,CAEA,OAAQ,CACN,IAAI,CAAC,CAAC,CAAG,GACT,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,eAAe,CAAG,KACvB,IAAI,CAAC,KAAK,CAAG,IAAIouC,EAAM,EAAG,GAC1B,IAAI,CAAC,OAAO,CAAG,IAAIA,EAAM,EAAG,GAC5B,IAAI,CAAC,OAAO,CAAG,IAAIA,EAAM,EAAG,GAC5B,IAAI,CAAC,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC,MAAM,CAAG,EAAE,AAClB,CAEA,OAAQ,CACN,GAAI,CACF79C,EAAAA,CAAC,CACDwnD,SAAAA,CAAQ,CACT,CAAG,IAAI,CACR,OAAOxnD,GAAKwnD,EAAS,MAAM,CAAG,CAChC,CAEA,MAAO,CACL,IAAIC,EAAU,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAGrC,OAFA,IAAI,CAAC,eAAe,CAAG,IAAI,CAAC,OAAO,CACnC,IAAI,CAAC,OAAO,CAAGA,EACRA,CACT,CAEA,UAAW,CACT,IAAIC,EAAQ9jD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,IAC5E+jD,EAAQ/jD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,IAC5EyK,EAAQ,IAAIwvC,EAAM,IAAI,CAAC,OAAO,CAAC6J,EAAM,CAAE,IAAI,CAAC,OAAO,CAACC,EAAM,EAC9D,OAAO,IAAI,CAAC,YAAY,CAACt5C,EAC3B,CAEA,kBAAkBq5C,CAAK,CAAEC,CAAK,CAAE,CAC9B,IAAIt5C,EAAQ,IAAI,CAAC,QAAQ,CAACq5C,EAAOC,GAEjC,OADA,IAAI,CAAC,OAAO,CAAGt5C,EACRA,CACT,CAEA,kBAAkBq5C,CAAK,CAAEC,CAAK,CAAE,CAC9B,IAAIt5C,EAAQ,IAAI,CAAC,QAAQ,CAACq5C,EAAOC,GAEjC,OADA,IAAI,CAAC,OAAO,CAAGt5C,EACRA,CACT,CAEA,0BAA2B,CACzB,IAAIu5C,EAAkB,IAAI,CAAC,eAAe,CAAC,IAAI,CAE/C,GAAIA,IAAoB,aAAoB,EAAIA,IAAoB,oBAA2B,EAAIA,IAAoB,YAAmB,EAAIA,IAAoB,mBAA0B,CAC1L,OAAO,IAAI,CAAC,OAAO,CAIrB,GAAI,CACF,QAAS,CACP,EAAGhwC,CAAE,CACL,EAAGC,CAAE,CACN,CACD,QAAS,CACP,EAAGgwC,CAAE,CACL,EAAGC,CAAE,CACN,CACF,CAAG,IAAI,CAER,OADY,IAAIjK,EAAM,EAAIjmC,EAAKiwC,EAAI,EAAIhwC,EAAKiwC,EAE9C,CAEA,aAAaz5C,CAAK,CAAE,CAClB,GAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAE,CACzB,GAAI,CACF1O,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CAAC,OAAO,AAChBsL,CAAAA,EAAM,CAAC,EAAI1O,EACX0O,EAAM,CAAC,EAAItL,CACb,CAEA,OAAOsL,CACT,CAEA,UAAUA,CAAK,CAAE05C,CAAI,CAAEC,CAAO,CAAE,CAC9B,GAAI,CACFn5C,OAAAA,CAAM,CACNo5C,OAAAA,CAAM,CACP,CAAG,IAAI,CAEJD,GAAWC,EAAO,MAAM,CAAG,GAAK,CAACA,CAAM,CAACA,EAAO,MAAM,CAAG,EAAE,EAC5DA,CAAAA,CAAM,CAACA,EAAO,MAAM,CAAG,EAAE,CAAGp5C,CAAM,CAACA,EAAO,MAAM,CAAG,EAAE,CAAC,OAAO,CAACm5C,EAAO,EAGvE,IAAI,CAAC,cAAc,CAAC35C,EAAO05C,EAAOA,EAAK,OAAO,CAAC15C,GAAS,KAC1D,CAEA,eAAeA,CAAK,CAAE6C,CAAK,CAAE,CAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC7C,GACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC6C,EACnB,CAEA,iBAAkB,CAChB,OAAO,IAAI,CAAC,MAAM,AACpB,CAEA,iBAAkB,CAMhB,IAAK,GALD,CACF+2C,OAAAA,CAAM,CACP,CAAG,IAAI,CACJxK,EAAMwK,EAAO,MAAM,CAEdjoD,EAAI,EAAGA,EAAIy9C,EAAKz9C,IACvB,GAAI,CAACioD,CAAM,CAACjoD,EAAE,CACZ,KAAK,IAAI6G,EAAI7G,EAAI,EAAG6G,EAAI42C,EAAK52C,IAC3B,GAAIohD,CAAM,CAACphD,EAAE,CAAE,CACbohD,CAAM,CAACjoD,EAAE,CAAGioD,CAAM,CAACphD,EAAE,CACrB,KACF,CACF,CAIJ,OAAOohD,CACT,CAEF,CAEA,MAAMC,WAAwB7D,GAC5B,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,mBAAmB,CAAG,EAC7B,CAEA,kBAAmB,CAKjB,IAJA,IAAIi0C,EAAU,EAEVxqC,EAAU,IAAI,CAEXA,GAAS,CACd,IAAI86C,EAAe96C,EAAQ,QAAQ,CAAC,UAAW,GAAO,IAElD86C,EAAa,QAAQ,CAAC,KACxBtQ,CAAAA,GAAWsQ,EAAa,SAAS,EAAC,EAGpC96C,EAAUA,EAAQ,MAAM,AAC1B,CAEA,OAAOwqC,CACT,CAEA,WAAWziB,CAAG,CAAE,CACd,IAAIgzB,EAAcxkD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CAEnF,GAAI,CAACwkD,EAAa,CAGhB,IAAIC,EAAgB,IAAI,CAAC,QAAQ,CAAC,QAC9BC,EAAuB,IAAI,CAAC,QAAQ,CAAC,gBACrCC,EAAkB,IAAI,CAAC,QAAQ,CAAC,UAChCC,EAAoB,IAAI,CAAC,QAAQ,CAAC,kBAEtC,GAAIH,EAAc,eAAe,GAAI,CACnC,IAAII,EAAYJ,EAAc,sBAAsB,CAAC,IAAI,CAAEC,GAEvDG,GACFrzB,CAAAA,EAAI,SAAS,CAAGqzB,CAAQ,CAE5B,MAAO,GAAIJ,EAAc,QAAQ,GAAI,CACD,iBAA9BA,EAAc,SAAS,IACzBA,EAAc,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,QAAQ,IAGxD,IAAIK,EAAaL,EAAc,QAAQ,EAEpB,aAAfK,GACFtzB,CAAAA,EAAI,SAAS,CAAGszB,AAAe,SAAfA,EAAwB,gBAAkBA,CAAS,CAEvE,CAEA,GAAIJ,EAAqB,QAAQ,GAAI,CACnC,IAAIK,EAAc,IAAI7L,EAAS,IAAI,CAAC,QAAQ,CAAE,OAAQ1nB,EAAI,SAAS,EAAE,UAAU,CAACkzB,GAAsB,QAAQ,EAE9GlzB,CAAAA,EAAI,SAAS,CAAGuzB,CAClB,CAGA,GAAIJ,EAAgB,eAAe,GAAI,CACrC,IAAIK,EAAcL,EAAgB,sBAAsB,CAAC,IAAI,CAAEC,GAE3DI,GACFxzB,CAAAA,EAAI,WAAW,CAAGwzB,CAAU,CAEhC,MAAO,GAAIL,EAAgB,QAAQ,GAAI,CACD,iBAAhCA,EAAgB,SAAS,IAC3BA,EAAgB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,QAAQ,IAG1D,IAAIM,EAAeN,EAAgB,SAAS,EAEvB,aAAjBM,GACFzzB,CAAAA,EAAI,WAAW,CAAGyzB,AAAiB,SAAjBA,EAA0B,gBAAkBA,CAAW,CAE7E,CAEA,GAAIL,EAAkB,QAAQ,GAAI,CAChC,IAAIM,EAAgB,IAAIhM,EAAS,IAAI,CAAC,QAAQ,CAAE,SAAU1nB,EAAI,WAAW,EAAE,UAAU,CAACozB,GAAmB,SAAS,EAElHpzB,CAAAA,EAAI,WAAW,CAAG0zB,CACpB,CAEA,IAAIC,EAAuB,IAAI,CAAC,QAAQ,CAAC,gBAEzC,GAAIA,EAAqB,QAAQ,GAAI,CACnC,IAAIC,EAAeD,EAAqB,SAAS,EACjD3zB,CAAAA,EAAI,SAAS,CAAG,AAAC4zB,GAAe7M,CAElC,CAEA,IAAI8M,EAAyB,IAAI,CAAC,QAAQ,CAAC,kBACvCC,EAA0B,IAAI,CAAC,QAAQ,CAAC,mBACxCC,EAAuB,IAAI,CAAC,QAAQ,CAAC,qBAGrCC,EAA2B,IAAI,CAAC,QAAQ,CAAC,oBACzCC,EAAuB,IAAI,CAAC,QAAQ,CAAC,qBAmBzC,GAjBIJ,EAAuB,QAAQ,IACjC7zB,CAAAA,EAAI,OAAO,CAAG6zB,EAAuB,SAAS,EAAC,EAG7CC,EAAwB,QAAQ,IAClC9zB,CAAAA,EAAI,QAAQ,CAAG8zB,EAAwB,SAAS,EAAC,EAG/CC,EAAqB,QAAQ,IAC/B/zB,CAAAA,EAAI,UAAU,CAAG+zB,EAAqB,SAAS,EAAC,EAQ9CC,EAAyB,QAAQ,IAAMA,AAAyC,SAAzCA,EAAyB,SAAS,GAAe,CAC1F,IAAIE,EAAO1O,EAAUwO,EAAyB,SAAS,GAEnD,AAA2B,UAApBh0B,EAAI,WAAW,CACxBA,EAAI,WAAW,CAACk0B,GAEZ,AAA8B,SAAvBl0B,EAAI,cAAc,CAE3BA,EAAI,cAAc,CAAGk0B,EAEM,SAAhBl0B,EAAI,OAAO,EAAoB,CAAEk0B,CAAAA,AAAgB,IAAhBA,EAAK,MAAM,EAAUA,AAAY,IAAZA,CAAI,CAAC,EAAE,AAAK,GAE3El0B,CAAAA,EAAI,OAAO,CAAGk0B,CAAG,EAGvB,IAAIp2C,EAASm2C,EAAqB,SAAS,EAEvC,AAA8B,UAAvBj0B,EAAI,cAAc,CAC3BA,EAAI,cAAc,CAAGliB,EAEjB,AAAoC,SAA7BkiB,EAAI,oBAAoB,CAEjCA,EAAI,oBAAoB,CAAGliB,EAEM,SAAtBkiB,EAAI,aAAa,EAE1BA,CAAAA,EAAI,aAAa,CAAGliB,CAAK,CAEjC,CACF,CAKA,GAFA,IAAI,CAAC,mBAAmB,CAAG,GAEvB,AAAoB,SAAbkiB,EAAI,IAAI,CAAkB,CACnC,IAAIm0B,EAAgB,IAAI,CAAC,QAAQ,CAAC,QAC9BC,EAAqB,IAAI,CAAC,QAAQ,CAAC,cACnCC,EAAuB,IAAI,CAAC,QAAQ,CAAC,gBACrCC,EAAsB,IAAI,CAAC,QAAQ,CAAC,eACpCC,EAAoB,IAAI,CAAC,QAAQ,CAAC,aAClCC,EAAsB,IAAI,CAAC,QAAQ,CAAC,eACpChoB,EAAO,IAAImkB,GAAKyD,EAAmB,SAAS,GAAIC,EAAqB,SAAS,GAAIC,EAAoB,SAAS,GAAIC,EAAkB,QAAQ,GAAK,GAAG,MAAM,CAACA,EAAkB,SAAS,CAAC,IAAO,MAAQ,GAAIC,EAAoB,SAAS,GAAI7D,GAAK,KAAK,CAACwD,EAAc,SAAS,GAAIn0B,EAAI,IAAI,GAC9Ro0B,EAAmB,QAAQ,CAAC5nB,EAAK,SAAS,EAC1C6nB,EAAqB,QAAQ,CAAC7nB,EAAK,WAAW,EAC9C8nB,EAAoB,QAAQ,CAAC9nB,EAAK,UAAU,EAC5C+nB,EAAkB,QAAQ,CAAC/nB,EAAK,QAAQ,EACxCgoB,EAAoB,QAAQ,CAAChoB,EAAK,UAAU,EAC5CxM,EAAI,IAAI,CAAGwM,EAAK,QAAQ,GAEpB+nB,EAAkB,QAAQ,KAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAGA,EAAkB,SAAS,GAClD,IAAI,CAAC,mBAAmB,CAAG,GAE/B,CAEI,CAACvB,IAEH,IAAI,CAAC,YAAY,CAAChzB,GAElBA,EAAI,WAAW,CAAG,IAAI,CAAC,gBAAgB,GAE3C,CAEA,aAAaA,CAAG,CAAE,CAChB,KAAK,CAAC,aAAaA,GAEf,IAAI,CAAC,mBAAmB,EAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAE3B,CAEF,CAEA,MAAMy0B,WAAoB3B,GACxB,YAAYtvC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,OACZ,IAAI,CAAC,UAAU,CAAG,KAClB,IAAI,CAAC,UAAU,CAAG,IAAIiD,GAAW,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,GACnE,CAEA,KAAKnyB,CAAG,CAAE,CACR,GAAI,CACF00B,WAAAA,CAAU,CACX,CAAG,IAAI,CACJtL,EAAc,IAAIkI,GAOtB,IANAoD,EAAW,KAAK,GAEZ10B,GACFA,EAAI,SAAS,GAGR,CAAC00B,EAAW,KAAK,IACtB,OAAQA,EAAW,IAAI,GAAG,IAAI,EAC5B,KAAKvC,GAAW,OAAO,CACrB,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,OAAO,CACrB,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,aAAa,CAC3B,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,YAAY,CAC1B,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,QAAQ,CACtB,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,eAAe,CAC7B,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,OAAO,CACrB,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,cAAc,CAC5B,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,GAAG,CACjB,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,GAChB,KAEF,MAAK+I,GAAW,UAAU,CACxB,IAAI,CAAC,KAAK,CAACnyB,EAAKopB,EAEpB,CAGF,OAAOA,CACT,CAEA,eAAe5jC,CAAC,CAAE,CAChB,OAAO,IAAI,CAAC,IAAI,EAClB,CAEA,YAAa,CACX,GAAI,CACFkvC,WAAAA,CAAU,CACX,CAAG,IAAI,CACJj7C,EAASi7C,EAAW,eAAe,GACnC7B,EAAS6B,EAAW,eAAe,GAEvC,OADcj7C,EAAO,GAAG,CAAC,CAACR,EAAOrO,IAAM,CAACqO,EAAO45C,CAAM,CAACjoD,EAAE,CAAC,CAE3D,CAEA,eAAeo1B,CAAG,CAAE,CAClB,IAAI,CAAC,IAAI,CAACA,GACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAEA,GAC3C,IAAI20B,EAAoB,IAAI,CAAC,QAAQ,CAAC,YAEhB,MAAlB30B,EAAI,SAAS,GACX20B,AAA2C,YAA3CA,EAAkB,SAAS,CAAC,WAC9B30B,EAAI,IAAI,CAAC20B,EAAkB,SAAS,IAEpC30B,EAAI,IAAI,IAIY,KAApBA,EAAI,WAAW,GACb,AAAmD,uBAAnD,IAAI,CAAC,YAAY,CAAC,iBAAiB,SAAS,IAC9CA,EAAI,IAAI,GACRA,EAAI,YAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCA,EAAI,MAAM,GACVA,EAAI,OAAO,IAEXA,EAAI,MAAM,IAId,IAAIljB,EAAU,IAAI,CAAC,UAAU,GAE7B,GAAIA,EAAS,CACX,IAAI83C,EAAmB93C,EAAQ,MAAM,CAAG,EACpC+3C,EAAuB,IAAI,CAAC,QAAQ,CAAC,gBACrCC,EAAqB,IAAI,CAAC,QAAQ,CAAC,cACnCC,EAAqB,IAAI,CAAC,QAAQ,CAAC,cAEvC,GAAIF,EAAqB,eAAe,GAAI,CAC1C,IAAIz3C,EAASy3C,EAAqB,aAAa,GAC3C,CAAC57C,EAAO6C,EAAM,CAAGgB,CAAO,CAAC,EAAE,CAC/BM,EAAO,MAAM,CAAC4iB,EAAK/mB,EAAO6C,EAC5B,CAEA,GAAIg5C,EAAmB,eAAe,GAAI,CAGxC,IAAK,IAFDE,EAAUF,EAAmB,aAAa,GAErClqD,EAAI,EAAGA,EAAIgqD,EAAkBhqD,IAAK,CACzC,GAAI,CAACqqD,EAAQC,EAAO,CAAGp4C,CAAO,CAAClS,EAAE,CAEjCoqD,EAAQ,MAAM,CAACh1B,EAAKi1B,EAAQC,EAC9B,CACF,CAEA,GAAIH,EAAmB,eAAe,GAAI,CACxC,IAAII,EAAWJ,EAAmB,aAAa,GAE3C,CAACK,EAASC,EAAQ,CAAGv4C,CAAO,CAAC83C,EAAiB,CAElDO,EAAS,MAAM,CAACn1B,EAAKo1B,EAASC,EAChC,CACF,CACF,CAEA,OAAO,MAAMX,CAAU,CAAE,CACvB,IAAIz7C,EAAQy7C,EAAW,iBAAiB,GAExC,OADAA,EAAW,KAAK,CAAGA,EAAW,OAAO,CAC9B,CACLz7C,MAAAA,CACF,CACF,CAEA,MAAM+mB,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFz7C,MAAAA,CAAK,CACN,CAAGw7C,GAAY,KAAK,CAACC,GAClB,CACFnqD,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAGsL,EACJy7C,EAAW,SAAS,CAACz7C,GACrBmwC,EAAY,QAAQ,CAAC7+C,EAAGoD,GAEpBqyB,GACFA,EAAI,MAAM,CAACz1B,EAAGoD,EAElB,CAEA,OAAO,MAAM+mD,CAAU,CAAE,CACvB,GAAI,CACFnnD,QAAAA,CAAO,CACR,CAAGmnD,EAEJ,MAAO,CACLnnD,QAAAA,EACA0L,MAHUy7C,EAAW,iBAAiB,EAIxC,CACF,CAEA,MAAM10B,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFnnD,QAAAA,CAAO,CACP0L,MAAAA,CAAK,CACN,CAAGw7C,GAAY,KAAK,CAACC,GAClB,CACFnqD,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAGsL,EACJy7C,EAAW,SAAS,CAACz7C,EAAO1L,GAC5B67C,EAAY,QAAQ,CAAC7+C,EAAGoD,GAEpBqyB,GACFA,EAAI,MAAM,CAACz1B,EAAGoD,EAElB,CAEA,OAAO,MAAM+mD,CAAU,CAAE,CACvB,GAAI,CACFnnD,QAAAA,CAAO,CACP8kD,QAAAA,CAAO,CACR,CAAGqC,EACAz7C,EAAQ,IAAIwvC,EAAM,AAAC4J,CAAAA,EAAQ,QAAQ,CAAG9kD,EAAQ,CAAC,CAAG,GAAK8kD,EAAQ,CAAC,CAAE9kD,EAAQ,CAAC,EAE/E,OADAmnD,EAAW,OAAO,CAAGz7C,EACd,CACL1L,QAAAA,EACA0L,MAAAA,CACF,CACF,CAEA,MAAM+mB,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFnnD,QAAAA,CAAO,CACP0L,MAAAA,CAAK,CACN,CAAGw7C,GAAY,KAAK,CAACC,GAClB,CACFnqD,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAGsL,EACJy7C,EAAW,SAAS,CAACz7C,EAAO1L,GAC5B67C,EAAY,QAAQ,CAAC7+C,EAAGoD,GAEpBqyB,GACFA,EAAI,MAAM,CAACz1B,EAAGoD,EAElB,CAEA,OAAO,MAAM+mD,CAAU,CAAE,CACvB,GAAI,CACFnnD,QAAAA,CAAO,CACP8kD,QAAAA,CAAO,CACR,CAAGqC,EACAz7C,EAAQ,IAAIwvC,EAAMl7C,EAAQ,CAAC,CAAE,AAAC8kD,CAAAA,EAAQ,QAAQ,CAAG9kD,EAAQ,CAAC,CAAG,GAAK8kD,EAAQ,CAAC,EAE/E,OADAqC,EAAW,OAAO,CAAGz7C,EACd,CACL1L,QAAAA,EACA0L,MAAAA,CACF,CACF,CAEA,MAAM+mB,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFnnD,QAAAA,CAAO,CACP0L,MAAAA,CAAK,CACN,CAAGw7C,GAAY,KAAK,CAACC,GAClB,CACFnqD,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAGsL,EACJy7C,EAAW,SAAS,CAACz7C,EAAO1L,GAC5B67C,EAAY,QAAQ,CAAC7+C,EAAGoD,GAEpBqyB,GACFA,EAAI,MAAM,CAACz1B,EAAGoD,EAElB,CAEA,OAAO,MAAM+mD,CAAU,CAAE,CACvB,GAAI,CACFnnD,QAAAA,CAAO,CACR,CAAGmnD,EACAz7C,EAAQy7C,EAAW,QAAQ,CAAC,KAAM,MAClCY,EAAeZ,EAAW,iBAAiB,CAAC,KAAM,MAEtD,MAAO,CACLnnD,QAAAA,EACA0L,MAAAA,EACAq8C,aAAAA,EACAC,aALiBb,EAAW,iBAAiB,EAM/C,CACF,CAEA,MAAM10B,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFnnD,QAAAA,CAAO,CACP0L,MAAAA,CAAK,CACLq8C,aAAAA,CAAY,CACZC,aAAAA,CAAY,CACb,CAAGd,GAAY,KAAK,CAACC,GACtBA,EAAW,SAAS,CAACa,EAAcD,EAAcr8C,GACjDmwC,EAAY,cAAc,CAAC77C,EAAQ,CAAC,CAAEA,EAAQ,CAAC,CAAE0L,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAEq8C,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,EAE7Hv1B,GACFA,EAAI,aAAa,CAAC/mB,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAEq8C,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,CAEtG,CAEA,OAAO,MAAMb,CAAU,CAAE,CACvB,GAAI,CACFnnD,QAAAA,CAAO,CACR,CAAGmnD,EACAz7C,EAAQy7C,EAAW,wBAAwB,GAC3CY,EAAeZ,EAAW,iBAAiB,CAAC,KAAM,MAEtD,MAAO,CACLnnD,QAAAA,EACA0L,MAAAA,EACAq8C,aAAAA,EACAC,aALiBb,EAAW,iBAAiB,EAM/C,CACF,CAEA,MAAM10B,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFnnD,QAAAA,CAAO,CACP0L,MAAAA,CAAK,CACLq8C,aAAAA,CAAY,CACZC,aAAAA,CAAY,CACb,CAAGd,GAAY,KAAK,CAACC,GACtBA,EAAW,SAAS,CAACa,EAAcD,EAAcr8C,GACjDmwC,EAAY,cAAc,CAAC77C,EAAQ,CAAC,CAAEA,EAAQ,CAAC,CAAE0L,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAEq8C,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,EAE7Hv1B,GACFA,EAAI,aAAa,CAAC/mB,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAEq8C,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,CAEtG,CAEA,OAAO,MAAMb,CAAU,CAAE,CACvB,GAAI,CACFnnD,QAAAA,CAAO,CACR,CAAGmnD,EACAY,EAAeZ,EAAW,iBAAiB,CAAC,KAAM,MAEtD,MAAO,CACLnnD,QAAAA,EACA+nD,aAAAA,EACAC,aAJiBb,EAAW,iBAAiB,EAK/C,CACF,CAEA,MAAM10B,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFnnD,QAAAA,CAAO,CACP+nD,aAAAA,CAAY,CACZC,aAAAA,CAAY,CACb,CAAGd,GAAY,KAAK,CAACC,GACtBA,EAAW,SAAS,CAACa,EAAcD,EAAcA,GACjDlM,EAAY,iBAAiB,CAAC77C,EAAQ,CAAC,CAAEA,EAAQ,CAAC,CAAE+nD,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,EAE9Gv1B,GACFA,EAAI,gBAAgB,CAACs1B,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,CAEvF,CAEA,OAAO,MAAMb,CAAU,CAAE,CACvB,GAAI,CACFnnD,QAAAA,CAAO,CACR,CAAGmnD,EACAY,EAAeZ,EAAW,wBAAwB,GAGtD,OAFAA,EAAW,OAAO,CAAGY,EAEd,CACL/nD,QAAAA,EACA+nD,aAAAA,EACAC,aAJiBb,EAAW,iBAAiB,EAK/C,CACF,CAEA,MAAM10B,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFnnD,QAAAA,CAAO,CACP+nD,aAAAA,CAAY,CACZC,aAAAA,CAAY,CACb,CAAGd,GAAY,KAAK,CAACC,GACtBA,EAAW,SAAS,CAACa,EAAcD,EAAcA,GACjDlM,EAAY,iBAAiB,CAAC77C,EAAQ,CAAC,CAAEA,EAAQ,CAAC,CAAE+nD,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,EAE9Gv1B,GACFA,EAAI,gBAAgB,CAACs1B,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,CAEvF,CAEA,OAAO,MAAMb,CAAU,CAAE,CACvB,GAAI,CACFnnD,QAAAA,CAAO,CACP8kD,QAAAA,CAAO,CACR,CAAGqC,EACA,CACFc,GAAAA,CAAE,CACFC,GAAAA,CAAE,CACFC,KAAAA,CAAI,CACJC,SAAAA,CAAQ,CACRC,UAAAA,CAAS,CACV,CAAGvD,EACAwD,EAAgBH,AAAQ5qD,KAAK,EAAE,CAAG,IAAlB4qD,EAChBH,EAAeb,EAAW,iBAAiB,GAI3CoB,EAAQ,IAAIrN,EAAM39C,KAAK,GAAG,CAAC+qD,GAAkBtoD,CAAAA,EAAQ,CAAC,CAAGgoD,EAAa,CAAC,AAAD,EAAK,EAAMzqD,KAAK,GAAG,CAAC+qD,GAAkBtoD,CAAAA,EAAQ,CAAC,CAAGgoD,EAAa,CAAC,AAAD,EAAK,EAAK,CAACzqD,KAAK,GAAG,CAAC+qD,GAAkBtoD,CAAAA,EAAQ,CAAC,CAAGgoD,EAAa,CAAC,AAAD,EAAK,EAAMzqD,KAAK,GAAG,CAAC+qD,GAAkBtoD,CAAAA,EAAQ,CAAC,CAAGgoD,EAAa,CAAC,AAAD,EAAK,GAExQzhD,EAAIhJ,KAAK,GAAG,CAACgrD,EAAM,CAAC,CAAE,GAAKhrD,KAAK,GAAG,CAAC0qD,EAAI,GAAK1qD,KAAK,GAAG,CAACgrD,EAAM,CAAC,CAAE,GAAKhrD,KAAK,GAAG,CAAC2qD,EAAI,GAEjF3hD,EAAI,IACN0hD,GAAM1qD,KAAK,IAAI,CAACgJ,GAChB2hD,GAAM3qD,KAAK,IAAI,CAACgJ,IAIlB,IAAI/D,EAAI,AAAC4lD,CAAAA,IAAaC,EAAY,GAAK,GAAK9qD,KAAK,IAAI,CAAC,AAACA,CAAAA,KAAK,GAAG,CAAC0qD,EAAI,GAAK1qD,KAAK,GAAG,CAAC2qD,EAAI,GAAK3qD,KAAK,GAAG,CAAC0qD,EAAI,GAAK1qD,KAAK,GAAG,CAACgrD,EAAM,CAAC,CAAE,GAAKhrD,KAAK,GAAG,CAAC2qD,EAAI,GAAK3qD,KAAK,GAAG,CAACgrD,EAAM,CAAC,CAAE,EAAC,EAAMhrD,CAAAA,KAAK,GAAG,CAAC0qD,EAAI,GAAK1qD,KAAK,GAAG,CAACgrD,EAAM,CAAC,CAAE,GAAKhrD,KAAK,GAAG,CAAC2qD,EAAI,GAAK3qD,KAAK,GAAG,CAACgrD,EAAM,CAAC,CAAE,EAAC,GAEzPhT,MAAM/yC,IACRA,CAAAA,EAAI,GAGN,IAAIgmD,EAAM,IAAItN,EAAM14C,EAAIylD,EAAKM,EAAM,CAAC,CAAGL,EAAI1lD,CAAAA,CAAAA,EAAK0lD,CAAC,EAAIK,EAAM,CAAC,CAAGN,GAE3DQ,EAAQ,IAAIvN,EAAM,AAACl7C,CAAAA,EAAQ,CAAC,CAAGgoD,EAAa,CAAC,AAAD,EAAK,EAAMzqD,KAAK,GAAG,CAAC+qD,GAAiBE,EAAI,CAAC,CAAGjrD,KAAK,GAAG,CAAC+qD,GAAiBE,EAAI,CAAC,CAAE,AAACxoD,CAAAA,EAAQ,CAAC,CAAGgoD,EAAa,CAAC,AAAD,EAAK,EAAMzqD,KAAK,GAAG,CAAC+qD,GAAiBE,EAAI,CAAC,CAAGjrD,KAAK,GAAG,CAAC+qD,GAAiBE,EAAI,CAAC,EAEhOhpB,EAAKma,EAAa,CAAC,EAAG,EAAE,CAAE,CAAC,AAAC4O,CAAAA,EAAM,CAAC,CAAGC,EAAI,CAAC,AAAD,EAAKP,EAAI,AAACM,CAAAA,EAAM,CAAC,CAAGC,EAAI,CAAC,AAAD,EAAKN,EAAG,EAG1Ezd,EAAI,CAAC,AAAC8d,CAAAA,EAAM,CAAC,CAAGC,EAAI,CAAC,AAAD,EAAKP,EAAI,AAACM,CAAAA,EAAM,CAAC,CAAGC,EAAI,CAAC,AAAD,EAAKN,EAAG,CACpDpmD,EAAI,CAAC,AAAC,EAACymD,EAAM,CAAC,CAAGC,EAAI,CAAC,AAAD,EAAKP,EAAI,AAAC,EAACM,EAAM,CAAC,CAAGC,EAAI,CAAC,AAAD,EAAKN,EAAG,CACtDQ,EAAK/O,EAAalP,EAAG3oC,GAUzB,OAR0B,IAAtB43C,EAAajP,EAAG3oC,IAClB4mD,CAAAA,EAAKnrD,KAAK,EAAE,AAAD,EAGTm8C,EAAajP,EAAG3oC,IAAM,GACxB4mD,CAAAA,EAAK,GAGA,CACLV,aAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAG,UAAAA,EACAC,cAAAA,EACAG,MAAAA,EACAjpB,GAAAA,EACAkpB,GAAAA,CACF,CACF,CAEA,MAAMj2B,CAAG,CAAEopB,CAAW,CAAE,CACtB,GAAI,CACFsL,WAAAA,CAAU,CACX,CAAG,IAAI,CACJ,CACFa,aAAAA,CAAY,CACZC,GAAAA,CAAE,CACFC,GAAAA,CAAE,CACFG,UAAAA,CAAS,CACTC,cAAAA,CAAa,CACbG,MAAAA,CAAK,CACLjpB,GAAAA,CAAE,CACFkpB,GAAAA,CAAE,CACH,CAAGxB,GAAY,KAAK,CAACC,GAElBwB,EAAM,EAAIN,EAAY,EAAM,GAC5BO,EAAKppB,EAAKmpB,AAAOD,EAAK,EAAZC,EACVE,EAAU,IAAI3N,EAAMuN,EAAM,CAAC,CAAGR,EAAK1qD,KAAK,GAAG,CAACqrD,GAAKH,EAAM,CAAC,CAAGP,EAAK3qD,KAAK,GAAG,CAACqrD,IAK7E,GAJAzB,EAAW,cAAc,CAAC0B,EAASD,EAAKD,EAAMprD,KAAK,EAAE,CAAG,GACxD4pD,EAAW,cAAc,CAACa,EAAcY,EAAKD,EAAMprD,KAAK,EAAE,EAC1Ds+C,EAAY,QAAQ,CAACmM,EAAa,CAAC,CAAEA,EAAa,CAAC,EAE/Cv1B,GAAO,CAAC8iB,MAAM/V,IAAO,CAAC+V,MAAMmT,GAAK,CAEnC,IAAI/nB,EAAKsnB,EAAKC,EAAK,EAAID,EAAKC,EACxBtnB,EAAKqnB,EAAKC,EAAKA,EAAKD,EAAK,EAC7Bx1B,EAAI,SAAS,CAACg2B,EAAM,CAAC,CAAEA,EAAM,CAAC,EAC9Bh2B,EAAI,MAAM,CAAC61B,GACX71B,EAAI,KAAK,CAACkO,EAAIC,GACdnO,EAAI,GAAG,CAAC,EAAG,EANHw1B,EAAKC,EAAKD,EAAKC,EAMN1oB,EAAIA,EAAKkpB,EAAII,CAAAA,CAAQ,GAAIT,CAAQ,GAClD51B,EAAI,KAAK,CAAC,EAAIkO,EAAI,EAAIC,GACtBnO,EAAI,MAAM,CAAC,CAAC61B,GACZ71B,EAAI,SAAS,CAAC,CAACg2B,EAAM,CAAC,CAAE,CAACA,EAAM,CAAC,CAClC,CACF,CAEA,OAAO,MAAMtB,CAAU,CAAE,CACvBA,EAAW,OAAO,CAAGA,EAAW,KAAK,AACvC,CAEA,MAAM10B,CAAG,CAAEopB,CAAW,CAAE,CACtBqL,GAAY,KAAK,CAAC,IAAI,CAAC,UAAU,EAE7Bz0B,GAEEopB,EAAY,EAAE,GAAKA,EAAY,EAAE,EAAIA,EAAY,EAAE,GAAKA,EAAY,EAAE,EACxEppB,EAAI,SAAS,EAGnB,CAEF,CAEA,MAAMs2B,WAAqB7B,GACzB,YAAYjxC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,QACZ,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,YAAY,CAAC,eAAe,SAAS,GAC3D,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,YAAY,CAAC,WAAW,SAAS,GACrD,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,YAAY,CAAC,eAAe,SAAS,EAC9D,CAEF,CAEA,MAAMqH,WAAoBzD,GACxB,YAAYtvC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAM,aAAesrD,IAAqBrH,GAC1D,IAAI,CAAC,IAAI,CAAG,OACZ,IAAI,CAAC,CAAC,CAAG,EACT,IAAI,CAAC,CAAC,CAAG,EACT,IAAI,CAAC,YAAY,CAAG,EACtB,CAEA,WAAWlvB,CAAG,CAAE,CACd,IAAIgzB,EAAcxkD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CACnF,KAAK,CAAC,WAAWwxB,EAAKgzB,GACtB,IAAIwD,EAAe,IAAI,CAAC,QAAQ,CAAC,qBAAqB,eAAe,IAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,eAAe,GAE1HA,GACFx2B,CAAAA,EAAI,YAAY,CAAGw2B,CAAW,CAElC,CAEA,uBAAwB,CACtB,IAAI,CAAC,CAAC,CAAG,EACT,IAAI,CAAC,CAAC,CAAG,EACT,IAAI,CAAC,SAAS,CAAG,EAAE,CACnB,IAAI,CAAC,cAAc,CAAG,EACtB,IAAI,CAAC,IAAI,CAAGxmB,OAAO,iBAAiB,CACpC,IAAI,CAAC,IAAI,CAAGA,OAAO,iBAAiB,AACtC,CAEA,eAAehQ,CAAG,CAAE,CAClB,GAAI,AAAc,SAAd,IAAI,CAAC,IAAI,CACX,OAAO,IAAI,CAAC,sBAAsB,CAACA,GAIrC,IAAI,CAAC,qBAAqB,GAC1B,IAAI,CAAC,+BAA+B,CAACA,GACrC,IAAIopB,EAAc,KAWlB,OATA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC5jC,EAAG5a,KACxB,IAAI6rD,EAAmB,IAAI,CAAC,mBAAmB,CAACz2B,EAAK,IAAI,CAAE,IAAI,CAAEp1B,GAE5Dw+C,EAGHA,EAAY,cAAc,CAACqN,GAF3BrN,EAAcqN,CAIlB,GACOrN,CACT,CAEA,aAAc,CACZ,GAAI,CACF5lC,SAAAA,CAAQ,CACRxU,OAAAA,CAAM,CACP,CAAG,IAAI,CACJ0nD,EAAkB/F,GAAK,KAAK,CAACntC,EAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,CAE5D,OADexU,EAAO,QAAQ,CAAC,aAAa,SAAS,CAAC0nD,EAExD,CAEA,uBAAuB12B,CAAG,CAAE,CAC1B,IAAIhb,EAAW,IAAI,CAAC,WAAW,GAC/B,OAAO,IAAIssC,GAAY,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAGtsC,EAAU,IAAI,CAAC,CAAC,CAAG,IAAI,CAAC,WAAW,CAACgb,GAAM,IAAI,CAAC,CAAC,CAC1F,CAEA,SAASwM,CAAI,CAAEptB,CAAI,CAAExU,CAAC,CAAE,CACtB,IAAI+rD,EAAOv3C,CAAI,CAACxU,EAAE,CACdgsD,EAAQ,KAEZ,GAAIpqB,EAAK,QAAQ,CAAE,CACjB,IAAI6b,EAAMjpC,EAAK,MAAM,CACjBy3C,EAAWz3C,CAAI,CAACxU,EAAI,EAAE,CACtBksD,EAAW13C,CAAI,CAACxU,EAAI,EAAE,CACtBmsD,EAAa,WAcjB,GAZKnsD,CAAAA,AAAM,IAANA,GAAWisD,AAAa,MAAbA,CAAe,GAAMjsD,EAAIy9C,EAAM,GAAKyO,AAAa,MAAbA,GAClDC,CAAAA,EAAa,UAAS,EAGpBnsD,EAAI,GAAKisD,AAAa,MAAbA,GAAoBjsD,EAAIy9C,EAAM,GAAKyO,AAAa,MAAbA,GAC9CC,CAAAA,EAAa,QAAO,EAGlBnsD,EAAI,GAAKisD,AAAa,MAAbA,GAAqBjsD,CAAAA,IAAMy9C,EAAM,GAAKyO,AAAa,MAAbA,CAAe,GAChEC,CAAAA,EAAa,SAAQ,EAGnB,AAA6B,SAAtBvqB,EAAK,MAAM,CAACmqB,EAAK,CAAkB,CAE5C,IAAIK,EAAaxqB,EAAK,MAAM,CAACmqB,EAAK,CAClCC,EAAQI,aAAsBV,GAAeU,EAAaA,CAAU,CAACD,EAAW,AAClF,CACF,MACEH,EAAQpqB,EAAK,MAAM,CAACmqB,EAAK,CAO3B,MAJI,CAACC,GACHA,CAAAA,EAAQpqB,EAAK,YAAY,AAAD,EAGnBoqB,CACT,CAEA,SAAU,CACR,MAAO,EACT,CAEA,gBAAgB3rD,CAAI,CAAE,CACpB,IAAIqkD,EAAWrkD,GAAQ,IAAI,CAAC,IAAI,CAC5BgsD,EAAazsD,MAAM,IAAI,CAAC8kD,EAAS,UAAU,CAAC,UAAU,EACtDhjD,EAAQ2qD,EAAW,OAAO,CAAC3H,GAC3B4H,EAAYD,EAAW,MAAM,CAAG,EAChC73C,EAAOimC,EAEXiK,EAAS,WAAW,EAAI,IAUxB,OARc,IAAVhjD,GACF8S,CAAAA,EAAOkmC,EAASlmC,EAAI,EAGlB9S,IAAU4qD,GACZ93C,CAAAA,EAAOmmC,EAAUnmC,EAAI,EAGhBA,CACT,CAEA,eAAe4gB,CAAG,CAAE,CAClB,GAAI,AAAc,SAAd,IAAI,CAAC,IAAI,CAAa,CACxB,IAAI,CAAC,sBAAsB,CAACA,GAC5B,MACF,CAGA,IAAI,CAAC,qBAAqB,GAC1B,IAAI,CAAC,+BAA+B,CAACA,GAErC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAACxa,EAAG5a,KACxB,IAAI,CAAC,WAAW,CAACo1B,EAAK,IAAI,CAAE,IAAI,CAAEp1B,EACpC,GACA,GAAI,CACFshD,MAAAA,CAAK,CACN,CAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAEpBA,EAAM,SAAS,IACjBA,EAAM,gBAAgB,CAAC,IAAI,CAAE,IAAI,CAAC,cAAc,CAAClsB,GAErD,CAEA,uBAAuBA,CAAG,CAAE,CAC1B,GAAI,CACFxc,SAAAA,CAAQ,CACRxU,OAAAA,CAAM,CACP,CAAG,IAAI,CACJmoD,EAAa,IAAI,CAAC,OAAO,GACzBC,EAAapoD,EAAO,QAAQ,CAAC,eAAe,aAAa,GAE7D,GAAIooD,EAAY,CAYd,IAAK,GAXD,CACFC,WAAAA,CAAU,CACX,CAAGD,EAAW,QAAQ,CACnBE,EAAU3G,GAAK,KAAK,CAACntC,EAAS,GAAG,CAAC,IAAI,EACtCwB,EAAWhW,EAAO,QAAQ,CAAC,aAAa,SAAS,CAACsoD,EAAQ,QAAQ,EAClE1G,EAAY5hD,EAAO,QAAQ,CAAC,cAAc,SAAS,CAACsoD,EAAQ,SAAS,EACrEp7C,EAAQ8I,EAAWqyC,EACnBj4C,EAAOg4C,EAAW,KAAK,CAAGD,EAAW,KAAK,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAMA,EACpEtpD,EAAK23C,EAAUx2C,EAAO,YAAY,CAAC,MAAM,SAAS,IAClDq5C,EAAMjpC,EAAK,MAAM,CAEZxU,EAAI,EAAGA,EAAIy9C,EAAKz9C,IAAK,CAC5B,IAAIgsD,EAAQ,IAAI,CAAC,QAAQ,CAACQ,EAAYh4C,EAAMxU,GAC5Co1B,EAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,EAC5BA,EAAI,KAAK,CAAC9jB,EAAO,CAACA,GAClB,IAAIq7C,EAAKv3B,EAAI,SAAS,AACtBA,CAAAA,EAAI,SAAS,CAAGA,EAAI,SAAS,CAAGq3B,EAAaryC,EAE3B,WAAd4rC,GACF5wB,EAAI,SAAS,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,GAGhC42B,EAAM,MAAM,CAAC52B,GAEK,WAAd4wB,GACF5wB,EAAI,SAAS,CAAC,EAAG,EAAG,IAAK,EAAG,EAAG,GAGjCA,EAAI,SAAS,CAAGu3B,EAChBv3B,EAAI,KAAK,CAAC,EAAI9jB,EAAO,GAAKA,GAC1B8jB,EAAI,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,EAC9B,IAAI,CAAC,CAAC,EAAIhb,EAAY4xC,CAAAA,EAAM,SAAS,EAAIQ,EAAW,SAAS,AAAD,EAAKC,EAE5C,SAAVxpD,CAAE,CAACjD,EAAE,EAAoB,CAACk4C,MAAMj1C,CAAE,CAACjD,EAAE,GAC9C,KAAI,CAAC,CAAC,EAAIiD,CAAE,CAACjD,EAAE,AAAD,CAElB,CAEA,MACF,CAEA,GAAI,CACFL,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,AAUJqyB,CAAAA,EAAI,SAAS,EACfA,EAAI,QAAQ,CAACm3B,EAAY5sD,EAAGoD,GAG1BqyB,EAAI,WAAW,EACjBA,EAAI,UAAU,CAACm3B,EAAY5sD,EAAGoD,EAGlC,CAEA,gBAAiB,CACf,IAAI,KAAI,CAAC,cAAc,EAAI,IAAI,CAAC,SAAS,CAAC,MAAM,AAAD,GAO/C,IAAI6pD,EAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAClDC,EAAaD,EAAa,QAAQ,CAAC,eAAe,SAAS,CAAC,SAG5DlnD,EAAQ,EAGVA,EADEmnD,AAAe,UAAfA,EACMD,EAAa,CAAC,CAAG,IAAI,CAAC,IAAI,CACzBC,AAAe,QAAfA,EACDD,EAAa,CAAC,CAAG,IAAI,CAAC,IAAI,CAE1BA,EAAa,CAAC,CAAG,AAAC,KAAI,CAAC,IAAI,CAAG,IAAI,CAAC,IAAI,AAAD,EAAK,EAGrD,IAAK,IAAI5sD,EAAI,IAAI,CAAC,cAAc,CAAEA,EAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAEA,IAC3D,IAAI,CAAC,SAAS,CAACA,EAAE,CAAC,CAAC,EAAI0F,CAIzB,KAAI,CAAC,IAAI,CAAG0/B,OAAO,iBAAiB,CACpC,IAAI,CAAC,IAAI,CAAGA,OAAO,iBAAiB,CACpC,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAC7C,CAEA,gCAAgChQ,CAAG,CAAE,CACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAACxa,EAAG5a,KACxB,IAAI,CAAC,mCAAmC,CAACo1B,EAAK,IAAI,CAAE,IAAI,CAAEp1B,EAC5D,GACA,IAAI,CAAC,cAAc,EACrB,CAEA,oCAAoCo1B,CAAG,CAAE03B,CAAU,CAAE1oD,CAAM,CAAEpE,CAAC,CAAE,CAC9D,IAAIc,EAAQsD,EAAO,QAAQ,CAACpE,EAAE,AAE1Bc,CAAAA,EAAM,QAAQ,CAAC,MAAM,CAAG,EAC1BA,EAAM,QAAQ,CAAC,OAAO,CAAC,CAAC8Z,EAAG5a,KACzB8sD,EAAW,mCAAmC,CAAC13B,EAAK03B,EAAYhsD,EAAOd,EACzE,GAGA,IAAI,CAAC,sBAAsB,CAACo1B,EAAK03B,EAAY1oD,EAAQpE,EAEzD,CAEA,uBAAuBo1B,CAAG,CAAE03B,CAAU,CAAE1oD,CAAM,CAAEpE,CAAC,CAAE,CACjD,IAAIc,EAAQsD,EAAO,QAAQ,CAACpE,EAAE,CAE9B,GAAI,AAA6B,YAA7B,OAAOc,EAAM,WAAW,CAC1B,OAAOA,EAGTs0B,EAAI,IAAI,GACRt0B,EAAM,UAAU,CAACs0B,EAAK,IACtB,IAAI23B,EAAQjsD,EAAM,YAAY,CAAC,KAC3BksD,EAAQlsD,EAAM,YAAY,CAAC,KAC3BmsD,EAASnsD,EAAM,YAAY,CAAC,MAC5BosD,EAASpsD,EAAM,YAAY,CAAC,MAC5B0rD,EAAa1rD,EAAM,QAAQ,CAAC,eAAe,aAAa,GACxDqsD,EAAQ1B,CAAAA,CAAQe,GAAeA,EAAW,KAAK,AAEzC,KAANxsD,IAGE,CAAC+sD,EAAM,QAAQ,IACjBA,EAAM,QAAQ,CAACjsD,EAAM,qBAAqB,CAAC,MAGzC,CAACksD,EAAM,QAAQ,IACjBA,EAAM,QAAQ,CAAClsD,EAAM,qBAAqB,CAAC,MAGzC,CAACmsD,EAAO,QAAQ,IAClBA,EAAO,QAAQ,CAACnsD,EAAM,qBAAqB,CAAC,OAG1C,CAACosD,EAAO,QAAQ,IAClBA,EAAO,QAAQ,CAACpsD,EAAM,qBAAqB,CAAC,QAIhD,IAAImS,EAAQnS,EAAM,WAAW,CAACs0B,GAiD9B,OA/CI+3B,GACFL,CAAAA,EAAW,CAAC,EAAI75C,CAAI,EAGlB85C,EAAM,QAAQ,IAEhBD,EAAW,cAAc,GACzBhsD,EAAM,CAAC,CAAGisD,EAAM,SAAS,CAAC,KAEtBE,EAAO,QAAQ,IACjBnsD,CAAAA,EAAM,CAAC,EAAImsD,EAAO,SAAS,CAAC,IAAG,IAG7BA,EAAO,QAAQ,IACjBH,CAAAA,EAAW,CAAC,EAAIG,EAAO,SAAS,CAAC,IAAG,EAGtCnsD,EAAM,CAAC,CAAGgsD,EAAW,CAAC,EAGxBA,EAAW,CAAC,CAAGhsD,EAAM,CAAC,CAElB,CAACqsD,GACHL,CAAAA,EAAW,CAAC,EAAI75C,CAAI,EAGlB+5C,EAAM,QAAQ,IAChBlsD,EAAM,CAAC,CAAGksD,EAAM,SAAS,CAAC,KAEtBE,EAAO,QAAQ,IACjBpsD,CAAAA,EAAM,CAAC,EAAIosD,EAAO,SAAS,CAAC,IAAG,IAG7BA,EAAO,QAAQ,IACjBJ,CAAAA,EAAW,CAAC,EAAII,EAAO,SAAS,CAAC,IAAG,EAGtCpsD,EAAM,CAAC,CAAGgsD,EAAW,CAAC,EAGxBA,EAAW,CAAC,CAAGhsD,EAAM,CAAC,CAEtBgsD,EAAW,SAAS,CAAC,IAAI,CAAChsD,GAC1BgsD,EAAW,IAAI,CAAG5sD,KAAK,GAAG,CAAC4sD,EAAW,IAAI,CAAEhsD,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAGmS,GAC/D65C,EAAW,IAAI,CAAG5sD,KAAK,GAAG,CAAC4sD,EAAW,IAAI,CAAEhsD,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAGmS,GAC/DnS,EAAM,YAAY,CAACs0B,GACnBA,EAAI,OAAO,GACJt0B,CACT,CAEA,oBAAoBs0B,CAAG,CAAE03B,CAAU,CAAE1oD,CAAM,CAAEpE,CAAC,CAAE,CAC9C,IAAIc,EAAQsD,EAAO,QAAQ,CAACpE,EAAE,CAE9B,GAAI,AAAgC,YAAhC,OAAOc,EAAM,cAAc,CAC7B,OAAO,KAGT,IAAI09C,EAAc19C,EAAM,cAAc,CAACs0B,UAEvC,AAAKopB,GAIL19C,EAAM,QAAQ,CAAC,OAAO,CAAC,CAAC8Z,EAAG5a,KACzB,IAAI6rD,EAAmBiB,EAAW,mBAAmB,CAAC13B,EAAK03B,EAAYhsD,EAAOd,GAC9Ew+C,EAAY,cAAc,CAACqN,EAC7B,GACOrN,GAPE,IAQX,CAEA,YAAYppB,CAAG,CAAE03B,CAAU,CAAE1oD,CAAM,CAAEpE,CAAC,CAAE,CACtC,IAAIc,EAAQsD,EAAO,QAAQ,CAACpE,EAAE,CAC9Bc,EAAM,MAAM,CAACs0B,GACbt0B,EAAM,QAAQ,CAAC,OAAO,CAAC,CAAC8Z,EAAG5a,KACzB8sD,EAAW,WAAW,CAAC13B,EAAK03B,EAAYhsD,EAAOd,EACjD,EACF,CAEA,YAAYo1B,CAAG,CAAE,CACf,GAAI,CACFg4B,aAAAA,CAAY,CACb,CAAG,IAAI,CAER,GAAI,CAACA,EACH,OAAOA,EAGT,IAAIb,EAAa,IAAI,CAAC,OAAO,GACzBc,EAAU,IAAI,CAAC,iBAAiB,CAACj4B,EAAKm3B,GAE1C,OADA,IAAI,CAAC,YAAY,CAAGc,EACbA,CACT,CAEA,kBAAkBj4B,CAAG,CAAEk4B,CAAU,CAAE,CACjC,GAAI,CAACA,EAAW,MAAM,CACpB,OAAO,EAGT,GAAI,CACFlpD,OAAAA,CAAM,CACP,CAAG,IAAI,CACJooD,EAAapoD,EAAO,QAAQ,CAAC,eAAe,aAAa,GAE7D,GAAIooD,EAAY,CAOd,IAAK,IANDpyC,EAAW,IAAI,CAAC,WAAW,GAC3B5F,EAAOg4C,EAAW,KAAK,CAAGc,EAAW,KAAK,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAMA,EACpErqD,EAAK23C,EAAUx2C,EAAO,YAAY,CAAC,MAAM,SAAS,IAClDq5C,EAAMjpC,EAAK,MAAM,CACjB+4C,EAAW,EAENvtD,EAAI,EAAGA,EAAIy9C,EAAKz9C,IAEvButD,GAAY,AAACvB,CAAAA,AADD,IAAI,CAAC,QAAQ,CAACQ,EAAYh4C,EAAMxU,GACzB,SAAS,EAAIwsD,EAAW,SAAS,AAAD,EAAKpyC,EAAWoyC,EAAW,QAAQ,CAAC,UAAU,CAE5E,SAAVvpD,CAAE,CAACjD,EAAE,EAAoB,CAACk4C,MAAMj1C,CAAE,CAACjD,EAAE,GAC9CutD,CAAAA,GAAYtqD,CAAE,CAACjD,EAAE,AAAD,EAIpB,OAAOutD,CACT,CAEA,GAAI,CAACn4B,EAAI,WAAW,CAClB,OAAOk4B,AAAoB,GAApBA,EAAW,MAAM,CAG1Bl4B,EAAI,IAAI,GACR,IAAI,CAAC,UAAU,CAACA,EAAK,IACrB,GAAI,CACF,MAAOi4B,CAAO,CACf,CAAGj4B,EAAI,WAAW,CAACk4B,GAGpB,OAFA,IAAI,CAAC,YAAY,CAACl4B,GAClBA,EAAI,OAAO,GACJi4B,CACT,CASA,sBAAsBp2C,CAAI,CAAE,CAI1B,IAFA,IAAItU,EAAU,IAAI,CAEXA,aAAmBgpD,IAAehpD,EAAQ,YAAY,IAAI,CAC/D,IAAI6qD,EAAa7qD,EAAQ,MAAM,CAAC,YAAY,CAACsU,GAE7C,GAAIu2C,EAAW,QAAQ,CAAC,IACtB,OAAOA,EAAW,QAAQ,CAAC,KAG7B7qD,EAAUA,EAAQ,MAAM,AAC1B,CAEA,OAAO,IACT,CAEF,CAEA,MAAM8qD,WAAqB9B,GACzB,YAAY/yC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAM,aAAeotD,IAAsBnJ,GAC3D,IAAI,CAAC,IAAI,CAAG,QAEZ,IAAI,CAAC,IAAI,CAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAG,EAAI,GAAK,IAAI,CAAC,eAAe,EAClE,CAEA,SAAU,CACR,OAAO,IAAI,CAAC,IAAI,AAClB,CAEF,CAEA,MAAMoJ,WAAiBD,GACrB,aAAc,CACZ,KAAK,IAAI7pD,WACT,IAAI,CAAC,IAAI,CAAG,UACd,CAEF,CAEA,MAAM+pD,WAAmBzF,GACvB,aAAc,CACZ,KAAK,IAAItkD,WACT,IAAI,CAAC,IAAI,CAAG,MACZ,IAAI,CAAC,IAAI,CAAG,EACd,CAEA,WAAWwxB,CAAG,CAAE,CAGd,IAFIw4B,EAEA,CACFh1C,SAAAA,CAAQ,CACT,CAAG,IAAI,CACJ,CACF4oB,OAAAA,CAAM,CACND,OAAAA,CAAM,CACP,CAAG3oB,EACAhH,EAASwjB,EAAI,MAAM,CAGvB,GAFAoM,EAAO,WAAW,CAACpM,GAEfxjB,EAAO,KAAK,EAAI,AAAoB,SAAbwjB,EAAI,IAAI,EAAoBmM,GAAU,AAAmC,SAA5BA,EAAO,gBAAgB,CAAkB,CAC/GnM,EAAI,IAAI,CAAGmM,EAAO,gBAAgB,CAAC3vB,GAAQ,gBAAgB,CAAC,QAC5D,IAAIi8C,EAAe,IAAI/Q,EAASlkC,EAAU,WAAYmtC,GAAK,KAAK,CAAC3wB,EAAI,IAAI,EAAE,QAAQ,EAE/Ey4B,EAAa,QAAQ,KACvBj1C,EAAS,UAAU,CAAGi1C,EAAa,SAAS,CAAC,KAC7Cj1C,EAAS,MAAM,CAAGA,EAAS,UAAU,CAEzC,CAGI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,IAClC,IAAI,CAAC,YAAY,CAAC,IAAK,IAAM,QAAQ,CAAC,GAGpC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,IAClC,IAAI,CAAC,YAAY,CAAC,IAAK,IAAM,QAAQ,CAAC,GAGxC,GAAI,CACF3F,MAAAA,CAAK,CACL1R,OAAAA,CAAM,CACP,CAAGigC,EAAO,QAAQ,AAEf,EAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,QAAQ,IAClC,IAAI,CAAC,QAAQ,CAAC,QAAS,IAAM,QAAQ,CAAC,QAGpC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,QAAQ,IACnC,IAAI,CAAC,QAAQ,CAAC,SAAU,IAAM,QAAQ,CAAC,QAGrC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,QAAQ,IAClC,IAAI,CAAC,QAAQ,CAAC,QAAS,IAAM,QAAQ,CAAC,SAGxC,IAAIssB,EAAW,IAAI,CAAC,YAAY,CAAC,QAC7BC,EAAW,IAAI,CAAC,YAAY,CAAC,QAC7BC,EAAc,IAAI,CAAC,YAAY,CAAC,WAChC7L,EAAU6L,EAAY,QAAQ,GAAKpT,EAAUoT,EAAY,SAAS,IAAM,KACxE3O,EAAO,CAAC,IAAI,CAAC,IAAI,EAAI,AAAiD,YAAjD,IAAI,CAAC,QAAQ,CAAC,YAAY,QAAQ,CAAC,UACxD//B,EAAO,EACPC,EAAO,EACP+/B,EAAQ,EACRC,EAAQ,EAER4C,IACF7iC,EAAO6iC,CAAO,CAAC,EAAE,CACjB5iC,EAAO4iC,CAAO,CAAC,EAAE,EAGf,CAAC,IAAI,CAAC,IAAI,GACZlvC,EAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,SAAS,CAAC,KACzC1R,EAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,SAAS,CAAC,KAEzB,WAAd,IAAI,CAAC,IAAI,GACX+9C,EAAQhgC,EACRigC,EAAQhgC,EACRD,EAAO,EACPC,EAAO,IAIXiiB,EAAO,QAAQ,CAAC,UAAU,CAACvuB,EAAO1R,GAG9B,IAAI,CAAC,IAAI,EACT,EAAC,IAAI,CAAC,MAAM,EAAI,AAAC,CAAmD,OAAlDqsD,CAAAA,EAAwB,IAAI,CAAC,IAAI,CAAC,UAAU,AAAD,GAAeA,AAA0B,KAAK,IAA/BA,EAAmC,KAAK,EAAIA,EAAsB,QAAQ,AAAD,IAAO,eAAc,GAAM,IAAI,CAAC,QAAQ,CAAC,YAAa,GAAO,IAAM,QAAQ,IAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAoB,GAAO,IAAM,QAAQ,IAChS,IAAI,CAAC,QAAQ,CAAC,mBAAoB,GAAM,IAAM,QAAQ,CAAC,WAGzD,KAAK,CAAC,WAAWx4B,GACjBA,EAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KAAM,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,MAElF+sB,IACFlvC,EAAQkvC,CAAO,CAAC,EAAE,CAClB5gD,EAAS4gD,CAAO,CAAC,EAAE,EAGrBvpC,EAAS,UAAU,CAAC,CAClBwc,IAAAA,EACA,YAAa,IAAI,CAAC,YAAY,CAAC,uBAAuB,SAAS,GAC/D,MAAOoM,EAAO,QAAQ,CAAC,KAAK,CAC5B,aAAcvuB,EACd,OAAQuuB,EAAO,QAAQ,CAAC,MAAM,CAC9B,cAAejgC,EACf+d,KAAAA,EACAC,KAAAA,EACA,KAAMuuC,EAAS,QAAQ,GACvB,KAAMC,EAAS,QAAQ,GACvB1O,KAAAA,EACAC,MAAAA,EACAC,MAAAA,CACF,GAEI4C,IACF3gB,EAAO,QAAQ,CAAC,aAAa,GAC7BA,EAAO,QAAQ,CAAC,UAAU,CAACvuB,EAAO1R,GAEtC,CAEA,aAAa6zB,CAAG,CAAE,CAChB,KAAK,CAAC,aAAaA,GACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAC7C,CASA,OAAOniB,CAAK,CAAE,CACZ,IAAI1R,EAASqC,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAGqP,EAC7Eg7C,EAAsBrqD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CACvFsqD,EAAY,IAAI,CAAC,YAAY,CAAC,QAAS,IACvCC,EAAa,IAAI,CAAC,YAAY,CAAC,SAAU,IACzCH,EAAc,IAAI,CAAC,YAAY,CAAC,WAChCI,EAAY,IAAI,CAAC,YAAY,CAAC,SAC9BC,EAAcH,EAAU,SAAS,CAAC,GAClCI,EAAeH,EAAW,SAAS,CAAC,GAExC,GAAIF,GACF,GAAI,AAA+B,UAA/B,OAAOA,EACT,IAAI,CAAC,YAAY,CAAC,sBAAuB,IAAM,QAAQ,CAACA,OACnD,CACL,IAAIM,EAA0B,IAAI,CAAC,YAAY,CAAC,uBAE5CA,EAAwB,QAAQ,IAClCA,EAAwB,QAAQ,CAACA,EAAwB,SAAS,GAAG,OAAO,CAAC,mBAAoB,MAErG,EAUF,GAPAL,EAAU,QAAQ,CAACj7C,GACnBk7C,EAAW,QAAQ,CAAC5sD,GAEhB,CAACysD,EAAY,QAAQ,IACvBA,EAAY,QAAQ,CAAC,OAAO,MAAM,CAACK,GAAep7C,EAAO,KAAK,MAAM,CAACq7C,GAAgB/sD,IAGnF6sD,EAAU,QAAQ,GAAI,CACxB,IAAIrM,EAAa,IAAI,CAAC,QAAQ,CAAC,SAC3BC,EAAc,IAAI,CAAC,QAAQ,CAAC,UAE5BD,EAAW,QAAQ,IACrBA,EAAW,QAAQ,CAAC,GAAG,MAAM,CAAC9uC,EAAO,OAGnC+uC,EAAY,QAAQ,IACtBA,EAAY,QAAQ,CAAC,GAAG,MAAM,CAACzgD,EAAQ,MAE3C,CACF,CAEF,CAEA,MAAMitD,WAAoB3E,GACxB,aAAc,CACZ,KAAK,IAAIjmD,WACT,IAAI,CAAC,IAAI,CAAG,MACd,CAEA,KAAKwxB,CAAG,CAAE,CACR,IAAIz1B,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KACrCoD,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KACrCkQ,EAAQ,IAAI,CAAC,QAAQ,CAAC,QAAS,GAAO,IAAM,SAAS,CAAC,KACtD1R,EAAS,IAAI,CAAC,QAAQ,CAAC,SAAU,GAAO,IAAM,SAAS,CAAC,KACxDktD,EAAS,IAAI,CAAC,YAAY,CAAC,MAC3BC,EAAS,IAAI,CAAC,YAAY,CAAC,MAC3BtrB,EAAKqrB,EAAO,SAAS,CAAC,KACtBprB,EAAKqrB,EAAO,SAAS,CAAC,KAa1B,GAXID,EAAO,QAAQ,IAAM,CAACC,EAAO,QAAQ,IACvCrrB,CAAAA,EAAKD,CAAC,EAGJsrB,EAAO,QAAQ,IAAM,CAACD,EAAO,QAAQ,IACvCrrB,CAAAA,EAAKC,CAAC,EAGRD,EAAKljC,KAAK,GAAG,CAACkjC,EAAInwB,EAAQ,GAC1BowB,EAAKnjC,KAAK,GAAG,CAACmjC,EAAI9hC,EAAS,GAEvB6zB,EAAK,CACP,IAAIu5B,EAAQ,AAAMzuD,CAAAA,KAAK,IAAI,CAAC,GAAK,GAAK,EAA1B,EACZk1B,EAAI,SAAS,GAET7zB,EAAS,GAAK0R,EAAQ,IACxBmiB,EAAI,MAAM,CAACz1B,EAAIyjC,EAAIrgC,GACnBqyB,EAAI,MAAM,CAACz1B,EAAIsT,EAAQmwB,EAAIrgC,GAC3BqyB,EAAI,aAAa,CAACz1B,EAAIsT,EAAQmwB,EAAKurB,EAAQvrB,EAAIrgC,EAAGpD,EAAIsT,EAAOlQ,EAAIsgC,EAAKsrB,EAAQtrB,EAAI1jC,EAAIsT,EAAOlQ,EAAIsgC,GACjGjO,EAAI,MAAM,CAACz1B,EAAIsT,EAAOlQ,EAAIxB,EAAS8hC,GACnCjO,EAAI,aAAa,CAACz1B,EAAIsT,EAAOlQ,EAAIxB,EAAS8hC,EAAKsrB,EAAQtrB,EAAI1jC,EAAIsT,EAAQmwB,EAAKurB,EAAQvrB,EAAIrgC,EAAIxB,EAAQ5B,EAAIsT,EAAQmwB,EAAIrgC,EAAIxB,GACxH6zB,EAAI,MAAM,CAACz1B,EAAIyjC,EAAIrgC,EAAIxB,GACvB6zB,EAAI,aAAa,CAACz1B,EAAIyjC,EAAKurB,EAAQvrB,EAAIrgC,EAAIxB,EAAQ5B,EAAGoD,EAAIxB,EAAS8hC,EAAKsrB,EAAQtrB,EAAI1jC,EAAGoD,EAAIxB,EAAS8hC,GACpGjO,EAAI,MAAM,CAACz1B,EAAGoD,EAAIsgC,GAClBjO,EAAI,aAAa,CAACz1B,EAAGoD,EAAIsgC,EAAKsrB,EAAQtrB,EAAI1jC,EAAIyjC,EAAKurB,EAAQvrB,EAAIrgC,EAAGpD,EAAIyjC,EAAIrgC,GAC1EqyB,EAAI,SAAS,GAEjB,CAEA,OAAO,IAAIsxB,GAAY/mD,EAAGoD,EAAGpD,EAAIsT,EAAOlQ,EAAIxB,EAC9C,CAEA,YAAa,CACX,OAAO,IACT,CAEF,CAEA,MAAMqtD,WAAsB/E,GAC1B,aAAc,CACZ,KAAK,IAAIjmD,WACT,IAAI,CAAC,IAAI,CAAG,QACd,CAEA,KAAKwxB,CAAG,CAAE,CACR,IAAIxd,EAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACvCC,EAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACvCvN,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,GAQxC,OANI8qB,GAAO9qB,EAAI,IACb8qB,EAAI,SAAS,GACbA,EAAI,GAAG,CAACxd,EAAIC,EAAIvN,EAAG,EAAGpK,AAAU,EAAVA,KAAK,EAAE,CAAM,IACnCk1B,EAAI,SAAS,IAGR,IAAIsxB,GAAY9uC,EAAKtN,EAAGuN,EAAKvN,EAAGsN,EAAKtN,EAAGuN,EAAKvN,EACtD,CAEA,YAAa,CACX,OAAO,IACT,CAEF,CAEA,MAAMukD,WAAuBhF,GAC3B,aAAc,CACZ,KAAK,IAAIjmD,WACT,IAAI,CAAC,IAAI,CAAG,SACd,CAEA,KAAKwxB,CAAG,CAAE,CACR,IAAIu5B,EAAQ,AAAMzuD,CAAAA,KAAK,IAAI,CAAC,GAAK,GAAK,EAA1B,EACRkjC,EAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACvCC,EAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACvCzrB,EAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACvCC,EAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KAY3C,OAVIud,GAAOgO,EAAK,GAAKC,EAAK,IACxBjO,EAAI,SAAS,GACbA,EAAI,MAAM,CAACxd,EAAKwrB,EAAIvrB,GACpBud,EAAI,aAAa,CAACxd,EAAKwrB,EAAIvrB,EAAK82C,EAAQtrB,EAAIzrB,EAAK+2C,EAAQvrB,EAAIvrB,EAAKwrB,EAAIzrB,EAAIC,EAAKwrB,GAC/EjO,EAAI,aAAa,CAACxd,EAAK+2C,EAAQvrB,EAAIvrB,EAAKwrB,EAAIzrB,EAAKwrB,EAAIvrB,EAAK82C,EAAQtrB,EAAIzrB,EAAKwrB,EAAIvrB,GAC/Eud,EAAI,aAAa,CAACxd,EAAKwrB,EAAIvrB,EAAK82C,EAAQtrB,EAAIzrB,EAAK+2C,EAAQvrB,EAAIvrB,EAAKwrB,EAAIzrB,EAAIC,EAAKwrB,GAC/EjO,EAAI,aAAa,CAACxd,EAAK+2C,EAAQvrB,EAAIvrB,EAAKwrB,EAAIzrB,EAAKwrB,EAAIvrB,EAAK82C,EAAQtrB,EAAIzrB,EAAKwrB,EAAIvrB,GAC/Eud,EAAI,SAAS,IAGR,IAAIsxB,GAAY9uC,EAAKwrB,EAAIvrB,EAAKwrB,EAAIzrB,EAAKwrB,EAAIvrB,EAAKwrB,EACzD,CAEA,YAAa,CACX,OAAO,IACT,CAEF,CAEA,MAAMyrB,WAAoBjF,GACxB,aAAc,CACZ,KAAK,IAAIjmD,WACT,IAAI,CAAC,IAAI,CAAG,MACd,CAEA,WAAY,CACV,MAAO,CAAC,IAAIi6C,EAAM,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KAAM,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,MAAO,IAAIA,EAAM,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KAAM,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,MAAM,AAC/L,CAEA,KAAKzoB,CAAG,CAAE,CACR,GAAI,CAAC,CACH,EAAG1xB,CAAE,CACL,EAAG+C,CAAE,CACN,CAAE,CACD,EAAG9C,CAAE,CACL,EAAG+C,CAAE,CACN,CAAC,CAAG,IAAI,CAAC,SAAS,GAQnB,OANI0uB,IACFA,EAAI,SAAS,GACbA,EAAI,MAAM,CAAC1xB,EAAI+C,GACf2uB,EAAI,MAAM,CAACzxB,EAAI+C,IAGV,IAAIggD,GAAYhjD,EAAI+C,EAAI9C,EAAI+C,EACrC,CAEA,YAAa,CACX,GAAI,CAACo/B,EAAIz2B,EAAG,CAAG,IAAI,CAAC,SAAS,GACzBnN,EAAI4jC,EAAG,OAAO,CAACz2B,GACnB,MAAO,CAAC,CAACy2B,EAAI5jC,EAAE,CAAE,CAACmN,EAAInN,EAAE,CAAC,AAC3B,CAEF,CAEA,MAAM6sD,WAAwBlF,GAC5B,YAAYjxC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,WACZ,IAAI,CAAC,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC,MAAM,CAAGzG,EAAM,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,SAAS,GACrE,CAEA,KAAKzoB,CAAG,CAAE,CACR,GAAI,CACFvmB,OAAAA,CAAM,CACP,CAAG,IAAI,CACJ,CAAC,CACH,EAAGnL,CAAE,CACL,EAAG+C,CAAE,CACN,CAAC,CAAGoI,EACD2vC,EAAc,IAAIkI,GAAYhjD,EAAI+C,GAkBtC,OAhBI2uB,IACFA,EAAI,SAAS,GACbA,EAAI,MAAM,CAAC1xB,EAAI+C,IAGjBoI,EAAO,OAAO,CAAC2rC,IACb,GAAI,CACF76C,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAGy3C,EACJgE,EAAY,QAAQ,CAAC7+C,EAAGoD,GAEpBqyB,GACFA,EAAI,MAAM,CAACz1B,EAAGoD,EAElB,GACOy7C,CACT,CAEA,YAAa,CACX,GAAI,CACF3vC,OAAAA,CAAM,CACP,CAAG,IAAI,CACJy9C,EAAYz9C,EAAO,MAAM,CAAG,EAC5BqD,EAAU,EAAE,CAahB,OAZArD,EAAO,OAAO,CAAC,CAACR,EAAOrO,KACrB,GAAIA,IAAMssD,EAIVp6C,EAAQ,IAAI,CAAC,CAAC7D,EAAOA,EAAM,OAAO,CAACQ,CAAM,CAAC7O,EAAI,EAAE,EAAE,CACpD,GAEIkS,EAAQ,MAAM,CAAG,GACnBA,EAAQ,IAAI,CAAC,CAACrD,CAAM,CAACA,EAAO,MAAM,CAAG,EAAE,CAAEqD,CAAO,CAACA,EAAQ,MAAM,CAAG,EAAE,CAAC,EAAE,CAAC,EAGnEA,CACT,CAEF,CAEA,MAAM88C,WAAuBD,GAC3B,aAAc,CACZ,KAAK,IAAInrD,WACT,IAAI,CAAC,IAAI,CAAG,SACd,CAEA,KAAKwxB,CAAG,CAAE,CACR,IAAIopB,EAAc,KAAK,CAAC,KAAKppB,GACzB,CAAC,CACHz1B,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAC,CAAG,IAAI,CAAC,MAAM,CAOhB,OALIqyB,IACFA,EAAI,MAAM,CAACz1B,EAAGoD,GACdqyB,EAAI,SAAS,IAGRopB,CACT,CAEF,CAEA,MAAMyQ,WAAuB5K,GAC3B,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,SACd,CAEA,cAAcwxB,CAAG,CAAExa,CAAC,CAAEs0C,CAAiB,CAAE,CACvC,IAAIj8C,EAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,SAAS,CAAC,IAAK,IAC9C1R,EAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,SAAS,CAAC,IAAK,IAEhD4tD,EAAa,IAAIxB,GAAW,IAAI,CAAC,QAAQ,CAAE,KAC/CwB,CAAAA,EAAW,UAAU,CAAC,OAAO,CAAG,IAAIrS,EAAS,IAAI,CAAC,QAAQ,CAAE,UAAW,IAAI,CAAC,YAAY,CAAC,WAAW,QAAQ,IAC5GqS,EAAW,UAAU,CAAC,KAAK,CAAG,IAAIrS,EAAS,IAAI,CAAC,QAAQ,CAAE,QAAS,GAAG,MAAM,CAAC7pC,EAAO,OACpFk8C,EAAW,UAAU,CAAC,MAAM,CAAG,IAAIrS,EAAS,IAAI,CAAC,QAAQ,CAAE,SAAU,GAAG,MAAM,CAACv7C,EAAQ,OACvF4tD,EAAW,UAAU,CAAC,SAAS,CAAG,IAAIrS,EAAS,IAAI,CAAC,QAAQ,CAAE,YAAa,IAAI,CAAC,YAAY,CAAC,oBAAoB,QAAQ,IACzHqS,EAAW,QAAQ,CAAG,IAAI,CAAC,QAAQ,CACnC,IAAIC,EAAgB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAACn8C,EAAO1R,GAClD8tD,EAAaD,EAAc,UAAU,CAAC,MACtCrC,EAAQ,IAAI,CAAC,YAAY,CAAC,KAC1BC,EAAQ,IAAI,CAAC,YAAY,CAAC,KAE1BD,EAAM,QAAQ,IAAMC,EAAM,QAAQ,IACpCqC,EAAW,SAAS,CAACtC,EAAM,SAAS,CAAC,IAAK,IAAOC,EAAM,SAAS,CAAC,IAAK,KAGpEkC,EAAkB,QAAQ,GAC5B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAGA,EAE9B3U,QAAQ,cAAc,CAAC,IAAI,CAAC,MAAM,CAAE,gBAItC,IAAK,IAAI56C,EAAI,GAAIA,GAAK,EAAGA,IACvB,IAAK,IAAIoD,EAAI,GAAIA,GAAK,EAAGA,IACvBssD,EAAW,IAAI,GACfF,EAAW,UAAU,CAAC,CAAC,CAAG,IAAIrS,EAAS,IAAI,CAAC,QAAQ,CAAE,IAAKn9C,EAAIyvD,EAAc,KAAK,EAClFD,EAAW,UAAU,CAAC,CAAC,CAAG,IAAIrS,EAAS,IAAI,CAAC,QAAQ,CAAE,IAAK/5C,EAAIqsD,EAAc,MAAM,EACnFD,EAAW,MAAM,CAACE,GAClBA,EAAW,OAAO,GAKtB,OADcj6B,EAAI,aAAa,CAACg6B,EAAe,SAEjD,CAEF,CAEA,MAAME,WAAsBjL,GAC1B,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,QACd,CAEA,OAAOwxB,CAAG,CAAE/mB,CAAK,CAAE6C,CAAK,CAAE,CACxB,IAAI,CAAC7C,GAIL,GAAI,CACF1O,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAGsL,EACAg0B,EAAS,IAAI,CAAC,YAAY,CAAC,UAAU,SAAS,CAAC,QAC/CktB,EAAc,IAAI,CAAC,YAAY,CAAC,eAAe,SAAS,CAAC,eAC7Dn6B,EAAI,SAAS,CAACz1B,EAAGoD,GAEF,SAAXs/B,GACFjN,EAAI,MAAM,CAAClkB,GAGO,gBAAhBq+C,GACFn6B,EAAI,KAAK,CAACA,EAAI,SAAS,CAAEA,EAAI,SAAS,EAGxCA,EAAI,IAAI,GAER,IAAIo6B,EAAY,IAAI7B,GAAW,IAAI,CAAC,QAAQ,CAAE,KAC9C6B,CAAAA,EAAU,IAAI,CAAG,IAAI,CAAC,IAAI,CAC1BA,EAAU,UAAU,CAAC,OAAO,CAAG,IAAI1S,EAAS,IAAI,CAAC,QAAQ,CAAE,UAAW,IAAI,CAAC,YAAY,CAAC,WAAW,QAAQ,IAC3G0S,EAAU,UAAU,CAAC,IAAI,CAAG,IAAI1S,EAAS,IAAI,CAAC,QAAQ,CAAE,OAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,QAAQ,IAClG0S,EAAU,UAAU,CAAC,IAAI,CAAG,IAAI1S,EAAS,IAAI,CAAC,QAAQ,CAAE,OAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,QAAQ,IAClG0S,EAAU,UAAU,CAAC,KAAK,CAAG,IAAI1S,EAAS,IAAI,CAAC,QAAQ,CAAE,QAAS,IAAI,CAAC,YAAY,CAAC,eAAe,QAAQ,IAC3G0S,EAAU,UAAU,CAAC,MAAM,CAAG,IAAI1S,EAAS,IAAI,CAAC,QAAQ,CAAE,SAAU,IAAI,CAAC,YAAY,CAAC,gBAAgB,QAAQ,IAC9G0S,EAAU,UAAU,CAAC,QAAQ,CAAG,IAAI1S,EAAS,IAAI,CAAC,QAAQ,CAAE,WAAY,IAAI,CAAC,YAAY,CAAC,YAAY,QAAQ,IAC9G0S,EAAU,UAAU,CAAC,IAAI,CAAG,IAAI1S,EAAS,IAAI,CAAC,QAAQ,CAAE,OAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,QAAQ,CAAC,UACnG0S,EAAU,UAAU,CAAC,MAAM,CAAG,IAAI1S,EAAS,IAAI,CAAC,QAAQ,CAAE,SAAU,IAAI,CAAC,YAAY,CAAC,UAAU,QAAQ,CAAC,SACzG0S,EAAU,QAAQ,CAAG,IAAI,CAAC,QAAQ,CAClCA,EAAU,MAAM,CAACp6B,GACjBA,EAAI,OAAO,GAES,gBAAhBm6B,GACFn6B,EAAI,KAAK,CAAC,EAAIA,EAAI,SAAS,CAAE,EAAIA,EAAI,SAAS,EAGjC,SAAXiN,GACFjN,EAAI,MAAM,CAAC,CAAClkB,GAGdkkB,EAAI,SAAS,CAAC,CAACz1B,EAAG,CAACoD,GACrB,CAEF,CAEA,MAAM0sD,WAAoBpL,GACxB,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,MACd,CAEA,QAAS,CACT,CAEF,CAEA,MAAM8rD,WAAiBxH,GACrB,aAAc,CACZ,KAAK,IAAItkD,WACT,IAAI,CAAC,IAAI,CAAG,GACd,CAEA,eAAewxB,CAAG,CAAE,CAClB,IAAIopB,EAAc,IAAIkI,GAItB,OAHA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC5lD,IACpB09C,EAAY,cAAc,CAAC19C,EAAM,cAAc,CAACs0B,GAClD,GACOopB,CACT,CAEF,CAEA,MAAMmR,WAAwBtL,GAC5B,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,mBAAmB,CAAG,CAAC,gBAAgB,CAC5C,IAAI,CAAC,KAAK,CAAG,EAAE,CACf,GAAI,CACFsL,MAAAA,CAAK,CACLrvD,SAAAA,CAAQ,CACT,CAAG,IAAI,CACRA,EAAS,OAAO,CAACO,IACI,SAAfA,EAAM,IAAI,EACZ8uD,EAAM,IAAI,CAAC9uD,EAEf,EACF,CAEA,kBAAmB,CACjB,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,SAAS,CAAC,oBACtD,CAEA,eAAes0B,CAAG,CAAE/nB,CAAO,CAAE6hD,CAAiB,CAAE,CAE9C,IAAIW,EAAiB,IAAI,CAErB,IAAI,CAAC,gBAAgB,GAAG,QAAQ,KAClCA,EAAiB,IAAI,CAAC,gBAAgB,GAAG,aAAa,GACtD,IAAI,CAAC,oBAAoB,CAACA,IAG5B,GAAI,CACFD,MAAAA,CAAK,CACN,CAAGC,EACAC,EAAW,IAAI,CAAC,WAAW,CAAC16B,EAAK/nB,GAErC,GAAI,CAACyiD,EACH,OAAO,IAAI,CAAC,gBAAgB,CAACZ,EAAmBU,CAAK,CAACA,EAAM,MAAM,CAAG,EAAE,CAAC,KAAK,EAO/E,GAJAA,EAAM,OAAO,CAACG,IACZD,EAAS,YAAY,CAACC,EAAK,MAAM,CAAE,IAAI,CAAC,gBAAgB,CAACb,EAAmBa,EAAK,KAAK,EACxF,GAEI,IAAI,CAAC,YAAY,CAAC,qBAAqB,QAAQ,GAAI,CAErD,GAAI,CACFn3C,SAAAA,CAAQ,CACT,CAAG,IAAI,CACJ,CACFo3C,mBAAAA,CAAkB,CAClBzS,SAAAA,CAAQ,CACT,CAAG3kC,EAAS,MAAM,CACf,CAACq3C,EAAS,CAAG1S,EAAS,SAAS,CAC/BnqC,EAAO,IAAIo7C,GAAY51C,EAAU,KACrCxF,CAAAA,EAAK,UAAU,CAAC,CAAC,CAAG,IAAI0pC,EAASlkC,EAAU,IAAK,CAACo3C,EAAqB,GACtE58C,EAAK,UAAU,CAAC,CAAC,CAAG,IAAI0pC,EAASlkC,EAAU,IAAK,CAACo3C,EAAqB,GACtE58C,EAAK,UAAU,CAAC,KAAK,CAAG,IAAI0pC,EAASlkC,EAAU,QAASo3C,GACxD58C,EAAK,UAAU,CAAC,MAAM,CAAG,IAAI0pC,EAASlkC,EAAU,SAAUo3C,GAC1D,IAAI7nC,EAAQ,IAAIunC,GAAS92C,EAAU,KACnCuP,CAAAA,EAAM,UAAU,CAAC,SAAS,CAAG,IAAI20B,EAASlkC,EAAU,YAAa,IAAI,CAAC,YAAY,CAAC,qBAAqB,QAAQ,IAChHuP,EAAM,QAAQ,CAAG,CAAC/U,EAAK,CACvB,IAAI+7C,EAAa,IAAIxB,GAAW/0C,EAAU,KAC1Cu2C,CAAAA,EAAW,UAAU,CAAC,CAAC,CAAG,IAAIrS,EAASlkC,EAAU,IAAK,GACtDu2C,EAAW,UAAU,CAAC,CAAC,CAAG,IAAIrS,EAASlkC,EAAU,IAAK,GACtDu2C,EAAW,UAAU,CAAC,KAAK,CAAG,IAAIrS,EAASlkC,EAAU,QAASq3C,EAAS,KAAK,EAC5Ed,EAAW,UAAU,CAAC,MAAM,CAAG,IAAIrS,EAASlkC,EAAU,SAAUq3C,EAAS,MAAM,EAC/Ed,EAAW,QAAQ,CAAG,CAAChnC,EAAM,CAC7B,IAAIinC,EAAgBx2C,EAAS,YAAY,CAACq3C,EAAS,KAAK,CAAEA,EAAS,MAAM,EACrEZ,EAAaD,EAAc,UAAU,CAAC,MAG1C,OAFAC,EAAW,SAAS,CAAGS,EACvBX,EAAW,MAAM,CAACE,GACXA,EAAW,aAAa,CAACD,EAAe,YACjD,CAEA,OAAOU,CACT,CAEA,qBAAqBD,CAAc,CAAE,CACnC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAACK,IAC3B,CAAC,IAAI,CAAC,YAAY,CAACA,GAAoB,QAAQ,IAAML,EAAe,YAAY,CAACK,GAAoB,QAAQ,IAC/G,IAAI,CAAC,YAAY,CAACA,EAAoB,IAAM,QAAQ,CAACL,EAAe,YAAY,CAACK,GAAoB,QAAQ,GAEjH,EACF,CAEA,iBAAiBhB,CAAiB,CAAEtrB,CAAK,CAAE,QACzC,AAAIsrB,EAAkB,QAAQ,GAErBiB,AADS,IAAIrT,EAAS,IAAI,CAAC,QAAQ,CAAE,QAASlZ,GACpC,UAAU,CAACsrB,GAAmB,QAAQ,GAGlDtrB,CACT,CAEF,CAEA,MAAMwsB,WAA8BT,GAClC,YAAY/2C,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,iBACZ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAM,KAAM,KAAM,KAClD,CAEA,YAAYlvB,CAAG,CAAE/nB,CAAO,CAAE,CACxB,IAAIgjD,EAAqB,AAA4B,sBAA5B,IAAI,CAAC,gBAAgB,GAC1C7R,EAAc6R,EAAqBhjD,EAAQ,cAAc,CAAC+nB,GAAO,KAErE,GAAIi7B,GAAsB,CAAC7R,EACzB,OAAO,IAGL,EAAC,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,IAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,IAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,IAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,KACxJ,IAAI,CAAC,YAAY,CAAC,KAAM,IAAM,QAAQ,CAAC,GACvC,IAAI,CAAC,YAAY,CAAC,KAAM,IAAM,QAAQ,CAAC,GACvC,IAAI,CAAC,YAAY,CAAC,KAAM,IAAM,QAAQ,CAAC,GACvC,IAAI,CAAC,YAAY,CAAC,KAAM,IAAM,QAAQ,CAAC,IAGzC,IAAI76C,EAAK0sD,EAAqB7R,EAAY,CAAC,CAAGA,EAAY,KAAK,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACtI93C,EAAK2pD,EAAqB7R,EAAY,CAAC,CAAGA,EAAY,MAAM,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACvI51C,EAAKynD,EAAqB7R,EAAY,CAAC,CAAGA,EAAY,KAAK,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACtI31C,EAAKwnD,EAAqB7R,EAAY,CAAC,CAAGA,EAAY,MAAM,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,YAE3I,AAAI76C,IAAOiF,GAAMlC,IAAOmC,EACf,KAGFusB,EAAI,oBAAoB,CAACzxB,EAAI+C,EAAIkC,EAAIC,EAC9C,CAEF,CAEA,MAAMynD,WAA8BX,GAClC,YAAY/2C,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,iBACZ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAM,KAAM,IAAK,KAAM,KAAM,KAC7D,CAEA,YAAYlvB,CAAG,CAAE/nB,CAAO,CAAE,CACxB,IAAIgjD,EAAqB,AAA4B,sBAA5B,IAAI,CAAC,gBAAgB,GAC1C7R,EAAcnxC,EAAQ,cAAc,CAAC+nB,GAEzC,GAAIi7B,GAAsB,CAAC7R,EACzB,OAAO,IAGL,EAAC,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,IACnC,IAAI,CAAC,YAAY,CAAC,KAAM,IAAM,QAAQ,CAAC,OAGrC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,IACnC,IAAI,CAAC,YAAY,CAAC,KAAM,IAAM,QAAQ,CAAC,OAGrC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,IAClC,IAAI,CAAC,YAAY,CAAC,IAAK,IAAM,QAAQ,CAAC,OAGxC,IAAI5mC,EAAKy4C,EAAqB7R,EAAY,CAAC,CAAGA,EAAY,KAAK,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACtI3mC,EAAKw4C,EAAqB7R,EAAY,CAAC,CAAGA,EAAY,MAAM,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KACvI+R,EAAK34C,EACL44C,EAAK34C,EAEL,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,IAClC04C,CAAAA,EAAKF,EAAqB7R,EAAY,CAAC,CAAGA,EAAY,KAAK,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,IAAG,EAGvI,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,IAClCgS,CAAAA,EAAKH,EAAqB7R,EAAY,CAAC,CAAGA,EAAY,MAAM,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,IAAG,EAG5I,IAAIl0C,EAAI+lD,EAAqB,AAAC7R,CAAAA,EAAY,KAAK,CAAGA,EAAY,MAAM,AAAD,EAAK,EAAM,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,GAAK,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,GAC/IiS,EAAK,IAAI,CAAC,YAAY,CAAC,MAAM,SAAS,GAC1C,OAAOr7B,EAAI,oBAAoB,CAACm7B,EAAIC,EAAIC,EAAI74C,EAAIC,EAAIvN,EACtD,CAEF,CAEA,MAAMomD,WAAoBrM,GACxB,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,OACZ,IAAIpxC,EAAShT,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAAC,EAAG,IAAI,CAAC,YAAY,CAAC,UAAU,SAAS,KACtEywD,EAAc,IAAI,CAAC,QAAQ,CAAC,gBAC5BC,EAAY,IAAI,CAAC,QAAQ,CAAC,aAAc,GAEd,MAA1BA,EAAU,SAAS,IACrBA,EAAU,QAAQ,CAAC,QAGjBD,EAAY,QAAQ,IACtBC,CAAAA,EAAYA,EAAU,UAAU,CAACD,EAAW,EAG9C,IAAI,CAAC,MAAM,CAAGz9C,EACd,IAAI,CAAC,KAAK,CAAG09C,EAAU,QAAQ,EACjC,CAEF,CAEA,MAAMC,WAAuBxM,GAC3B,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,UACZ,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,YAAY,CAAG,KACpB,IAAI,CAAC,YAAY,CAAG,GACpB,IAAI,CAAC,OAAO,CAAG,GACf,IAAI,CAAC,MAAM,CAAG,GACd1rC,EAAS,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EACpC,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,YAAY,CAAC,SAAS,eAAe,GACvD,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,YAAY,CAAC,OAAO,eAAe,GACxE,IAAI,CAAC,IAAI,CAAG,IAAI,CAAC,YAAY,CAAC,QAC9B,IAAI,CAAC,EAAE,CAAG,IAAI,CAAC,YAAY,CAAC,MAC5B,IAAI,CAAC,MAAM,CAAG,IAAIkkC,EAASlkC,EAAU,SAAU,MAC/C,IAAIk4C,EAAa,IAAI,CAAC,YAAY,CAAC,UAE/BA,EAAW,QAAQ,IACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAACA,EAAW,SAAS,GAAG,KAAK,CAAC,KAEtD,CAEA,aAAc,CACZ,IAAIC,EAAgB,IAAI,CAAC,YAAY,CAAC,iBAAiB,SAAS,GAC5DC,EAAgB,IAAI,CAAC,YAAY,CAAC,iBAAiB,SAAS,SAEhE,AAAID,AAAkB,QAAlBA,EACK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAACC,EAAe,IAGtC,IAAI,CAAC,MAAM,CAAC,YAAY,CAACA,EAAe,GACjD,CAEA,WAAY,CACV,GAAI,CACFC,aAAAA,CAAY,CACb,CAAG,IAAI,CACJ,CACFC,SAAAA,CAAQ,CACRnJ,KAAAA,CAAI,CACJoJ,GAAAA,CAAE,CACH,CAAG,IAAI,CAAC,WAAW,GAEhBC,EAAWrJ,EAAK,SAAS,GAAK,AAACoJ,CAAAA,EAAG,SAAS,GAAKpJ,EAAK,SAAS,EAAC,EAAKmJ,EAMxE,MAJqB,MAAjBD,GACFG,CAAAA,GAAY,GAAI,EAGX,GAAG,MAAM,CAACA,GAAU,MAAM,CAACH,EACpC,CAEA,OAAO5nC,CAAK,CAAE,CACZ,GAAI,CACFjlB,OAAAA,CAAM,CACP,CAAG,IAAI,CACJgwB,EAAO,IAAI,CAAC,WAAW,GAQ3B,GANI,CAAC,IAAI,CAAC,YAAY,GACpB,IAAI,CAAC,YAAY,CAAGA,EAAK,SAAS,GAClC,IAAI,CAAC,YAAY,CAAGA,EAAK,QAAQ,IAI/B,IAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,WAAW,CAAE,CACpC,IAAIxhB,EAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,SAAS,CAAC,UAE/C,GAAI,AAAiD,eAAjD,IAAI,CAAC,YAAY,CAAC,eAAe,SAAS,IAAuB,AAA+C,eAA/C,IAAI,CAAC,YAAY,CAAC,aAAa,SAAS,GAC3G,IAAI,CAAC,QAAQ,CAAG,OACX,GAAIA,AAAS,WAATA,GAAsB,IAAI,CAAC,MAAM,CAIrC,IAAIA,AAAS,WAATA,GAAqB,CAAC,IAAI,CAAC,OAAO,CAG3C,OAFA,IAAI,CAAC,OAAO,CAAG,GACfwhB,EAAK,QAAQ,CAAChwB,EAAO,eAAe,CAAGA,EAAO,oBAAoB,CAAG,IAAI,CAAC,YAAY,EAC/E,EACT,MAPE,IAAI,CAAC,MAAM,CAAG,GACdA,EAAO,eAAe,CAAG,GACzBA,EAAO,oBAAoB,CAAGgwB,EAAK,SAAS,GAO9C,MAAO,EACT,CAEA,IAAI,CAAC,QAAQ,EAAI/K,EAEjB,IAAItJ,EAAU,GAEd,GAAI,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,QAAQ,CAAE,CAC9B,IAAIqxC,EAAW,IAAI,CAAC,SAAS,GAEzBC,EAAW,IAAI,CAAC,YAAY,CAAC,QAEjC,GAAIA,EAAS,QAAQ,GAAI,CAEvB,IAAIjkD,EAAOikD,EAAS,SAAS,GAC7BD,EAAW,GAAG,MAAM,CAAChkD,EAAM,KAAK,MAAM,CAACgkD,EAAU,IACnD,CAEAh9B,EAAK,QAAQ,CAACg9B,GACdrxC,EAAU,EACZ,CAEA,OAAOA,CACT,CAEA,aAAc,CACZ,GAAI,CACFnH,SAAAA,CAAQ,CACRub,OAAAA,CAAM,CACP,CAAG,IAAI,CACJ9H,EAAS,CACX,SAAU,AAAC,KAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,KAAK,AAAD,EAAM,KAAI,CAAC,WAAW,CAAG,IAAI,CAAC,KAAK,AAAD,CACxE,EAEA,GAAI8H,EAAO,QAAQ,GAAI,CACrB,IAAIpsB,EAAIskB,EAAO,QAAQ,CAAI8H,CAAAA,EAAO,QAAQ,GAAG,MAAM,CAAG,GAClDwd,EAAKzxC,KAAK,KAAK,CAAC6H,GAChBupD,EAAKpxD,KAAK,IAAI,CAAC6H,EACnBskB,CAAAA,EAAO,IAAI,CAAG,IAAIywB,EAASlkC,EAAU,OAAQ+V,WAAWwF,EAAO,QAAQ,EAAE,CAACwd,EAAG,GAC7EtlB,EAAO,EAAE,CAAG,IAAIywB,EAASlkC,EAAU,KAAM+V,WAAWwF,EAAO,QAAQ,EAAE,CAACm9B,EAAG,GACzEjlC,EAAO,QAAQ,CAAG,AAACtkB,CAAAA,EAAI4pC,CAAC,EAAM2f,CAAAA,EAAK3f,CAAC,CACtC,MACEtlB,EAAO,IAAI,CAAG,IAAI,CAAC,IAAI,CACvBA,EAAO,EAAE,CAAG,IAAI,CAAC,EAAE,CAGrB,OAAOA,CACT,CAEF,CAEA,MAAMklC,WAA4BV,GAChC,aAAc,CACZ,KAAK,IAAIjtD,WACT,IAAI,CAAC,IAAI,CAAG,cACd,CAEA,WAAY,CACV,GAAI,CACFstD,SAAAA,CAAQ,CACRnJ,KAAAA,CAAI,CACJoJ,GAAAA,CAAE,CACH,CAAG,IAAI,CAAC,WAAW,GAChBK,EAAY,IAAI,EAASzJ,EAAK,QAAQ,IACtC0J,EAAU,IAAI,EAASN,EAAG,QAAQ,IAEtC,GAAIK,EAAU,EAAE,EAAIC,EAAQ,EAAE,CAAE,CAE9B,IAAInnD,EAAIknD,EAAU,CAAC,CAAG,AAACC,CAAAA,EAAQ,CAAC,CAAGD,EAAU,CAAC,AAAD,EAAKN,EAC9CtZ,EAAI4Z,EAAU,CAAC,CAAG,AAACC,CAAAA,EAAQ,CAAC,CAAGD,EAAU,CAAC,AAAD,EAAKN,EAC9C/uD,EAAIqvD,EAAU,CAAC,CAAG,AAACC,CAAAA,EAAQ,CAAC,CAAGD,EAAU,CAAC,AAAD,EAAKN,EAElD,MAAO,OAAO,MAAM,CAAChxD,KAAK,KAAK,CAACoK,GAAI,MAAM,MAAM,CAACpK,KAAK,KAAK,CAAC03C,GAAI,MAAM,MAAM,CAAC13C,KAAK,KAAK,CAACiC,GAAI,IAC9F,CAEA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,QAAQ,EAC3C,CAEF,CAEA,MAAMuvD,WAAgCb,GACpC,aAAc,CACZ,KAAK,IAAIjtD,WACT,IAAI,CAAC,IAAI,CAAG,kBACd,CAEA,WAAY,CACV,GAAI,CACFstD,SAAAA,CAAQ,CACRnJ,KAAAA,CAAI,CACJoJ,GAAAA,CAAE,CACH,CAAG,IAAI,CAAC,WAAW,GAEhBQ,EAAgB/W,EAAUmN,EAAK,SAAS,IACxC6J,EAAchX,EAAUuW,EAAG,SAAS,IAKxC,OAJeQ,EAAc,GAAG,CAAC,CAAC5J,EAAM/nD,IAE/B+nD,EAAO,AAACoJ,CAAAA,AADNS,CAAW,CAAC5xD,EAAE,CACH+nD,CAAG,EAAKmJ,GAC3B,IAAI,CAAC,IAEV,CAEF,CAEA,MAAMW,WAAoBxN,GACxB,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,OACZ,IAAI,CAAC,MAAM,CAAG,CAAC,EACf,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,YAAY,CAAC,eAAe,SAAS,GAC3D,GAAI,CACFn+B,YAAAA,CAAW,CACZ,CAAGvN,EACA,CACFrY,SAAAA,CAAQ,CACT,CAAG,IAAI,CAER,IAAK,IAAIO,KAASP,EAChB,OAAQO,EAAM,IAAI,EAChB,IAAK,YAED,IAAI,CAAC,QAAQ,CAAGA,EAChB,IAAIgxD,EAAkBhxD,EAAM,QAAQ,CAAC,eAEjCgxD,EAAgB,QAAQ,IAC1B3rC,CAAAA,CAAW,CAAC2rC,EAAgB,SAAS,GAAG,CAAG,IAAI,AAAD,EAGhD,KAGJ,KAAK,gBACH,IAAI,CAAC,YAAY,CAAGhxD,EACpB,KAEF,KAAK,QAIGkrD,AAFQlrD,EAEF,UAAU,EAClB,IAAI,CAAC,KAAK,CAAG,GACb,IAAI,CAAC,QAAQ,CAAG,GAE0B,SAA/B,IAAI,CAAC,MAAM,CAACkrD,AANblrD,EAMmB,OAAO,CAAC,EACnC,KAAI,CAAC,MAAM,CAACkrD,AAPJlrD,EAOU,OAAO,CAAC,CAAG,CAAC,GAGhC,IAAI,CAAC,MAAM,CAACkrD,AAVFlrD,EAUQ,OAAO,CAAC,CAACkrD,AAVjBlrD,EAUuB,UAAU,CAAC,CAVlCA,GAYV,IAAI,CAAC,MAAM,CAACkrD,AAZFlrD,EAYQ,OAAO,CAAC,CAZhBA,CAiBlB,CAEJ,CAEA,QAAS,CACT,CAEF,CAEA,MAAMixD,WAAwB1N,GAC5B,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,YACZ,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,YAAY,CAAC,UAAU,SAAS,GACnD,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,YAAY,CAAC,WAAW,SAAS,GACrD,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,SAAS,EAC/D,CAEF,CAEA,MAAM0N,WAA4BnI,GAChC,aAAc,CACZ,KAAK,IAAIjmD,WACT,IAAI,CAAC,IAAI,CAAG,gBACZ,IAAI,CAAC,SAAS,CAAG,CACnB,CAEF,CAEA,MAAMquD,WAAoBtG,GACxB,aAAc,CACZ,KAAK,IAAI/nD,WACT,IAAI,CAAC,IAAI,CAAG,MACd,CAEA,SAAU,CACR,IAAIyJ,EAAU,IAAI,CAAC,gBAAgB,GAAG,aAAa,GAEnD,GAAIA,EAAS,CACX,IAAI6kD,EAAa7kD,EAAQ,QAAQ,CAAC,EAAE,CAEpC,GAAI6kD,EACF,OAAOA,EAAW,OAAO,EAE7B,CAEA,MAAO,EACT,CAEF,CAEA,MAAMC,WAAiBxG,GACrB,YAAY/yC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,IACZ,GAAI,CACF+H,WAAAA,CAAU,CACX,CAAGhsD,EACA6xD,EAAa7F,CAAU,CAAC,EAAE,CAC1B+F,EAAU/F,EAAW,MAAM,CAAG,GAAKzsD,MAAM,IAAI,CAACysD,GAAY,KAAK,CAAChsD,GAAQA,AAAkB,IAAlBA,EAAK,QAAQ,CACzF,KAAI,CAAC,OAAO,CAAG+xD,EACf,IAAI,CAAC,IAAI,CAAGA,EAAU,IAAI,CAAC,eAAe,CAACF,GAAc,EAC3D,CAEA,SAAU,CACR,OAAO,IAAI,CAAC,IAAI,AAClB,CAEA,eAAe98B,CAAG,CAAE,CAClB,GAAI,IAAI,CAAC,OAAO,CAAE,CAEhB,KAAK,CAAC,eAAeA,GACrB,GAAI,CACFxc,SAAAA,CAAQ,CACRjZ,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG,IAAI,CACJ,CACFu+C,MAAAA,CAAK,CACN,CAAG1oC,EAAS,MAAM,CACfwB,EAAW,IAAI0iC,EAASlkC,EAAU,WAAYmtC,GAAK,KAAK,CAACntC,EAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,EAEpF0oC,EAAM,SAAS,IACjBA,EAAM,gBAAgB,CAAC,IAAI,CAAE,IAAIoF,GAAY/mD,EAAGoD,EAAIqX,EAAS,SAAS,CAAC,KAAMza,EAAI,IAAI,CAAC,WAAW,CAACy1B,GAAMryB,GAE5G,MAAO,GAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAG,EAAG,CAEnC,IAAI60C,EAAI,IAAI8X,GAAS,IAAI,CAAC,QAAQ,CAAE,KACpC9X,CAAAA,EAAE,QAAQ,CAAG,IAAI,CAAC,QAAQ,CAC1BA,EAAE,MAAM,CAAG,IAAI,CACfA,EAAE,MAAM,CAACxiB,EACX,CACF,CAEA,SAAU,CACR,GAAI,CACFmM,OAAAA,CAAM,CACP,CAAG,IAAI,CAAC,QAAQ,CAEbA,GACFA,EAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,SAAS,GAEjD,CAEA,aAAc,CAEZnM,AADU,IAAI,CAAC,QAAQ,CAAC,GAAG,CACvB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAG,SAC5B,CAEF,CAEA,SAASi9B,GAAUC,CAAM,CAAEC,CAAc,EAAI,IAAI/6C,EAAO5S,OAAO,IAAI,CAAC0tD,GAAS,GAAI1tD,OAAO,qBAAqB,CAAE,CAAE,IAAI4tD,EAAU5tD,OAAO,qBAAqB,CAAC0tD,GAAaC,GAAkBC,CAAAA,EAAUA,EAAQ,MAAM,CAAC,SAAUC,CAAG,EAAI,OAAO7tD,OAAO,wBAAwB,CAAC0tD,EAAQG,GAAK,UAAU,AAAE,EAAC,EAAKj7C,EAAK,IAAI,CAAC,KAAK,CAACA,EAAMg7C,EAAU,CAAE,OAAOh7C,CAAM,CAE1V,SAASk7C,GAAgBp2C,CAAM,EAAI,IAAK,IAAItc,EAAI,EAAGA,EAAI4D,UAAU,MAAM,CAAE5D,IAAK,CAAE,IAAIkX,EAAStT,AAAgB,MAAhBA,SAAS,CAAC5D,EAAE,CAAW4D,SAAS,CAAC5D,EAAE,CAAG,CAAC,CAAOA,CAAAA,EAAI,EAAKqyD,GAAUztD,OAAOsS,GAAS,IAAM,OAAO,CAAC,SAAUQ,CAAG,EAAI,EAAgB4E,EAAQ5E,EAAKR,CAAM,CAACQ,EAAI,CAAG,GAAe9S,OAAO,yBAAyB,CAAIA,OAAO,gBAAgB,CAAC0X,EAAQ1X,OAAO,yBAAyB,CAACsS,IAAmBm7C,GAAUztD,OAAOsS,IAAS,OAAO,CAAC,SAAUQ,CAAG,EAAI9S,OAAO,cAAc,CAAC0X,EAAQ5E,EAAK9S,OAAO,wBAAwB,CAACsS,EAAQQ,GAAO,EAAM,CAAE,OAAO4E,CAAQ,CAC3hB,MAAMq2C,WAAwBhH,GAC5B,YAAY/yC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,WACZ,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,UAAU,CAAG,EAClB,IAAI,CAAC,UAAU,CAAG,GAClB,IAAI,CAAC,SAAS,CAAG,KACjB,IAAI,CAAC,kBAAkB,CAAG,EAAE,CAC5B,IAAI,CAAC,aAAa,CAAG,IAAI5jD,IAAI,CAAC,CAAC,GAAI,EAAE,CAAC,EACtC,IAAIkyD,EAAc,IAAI,CAAC,gBAAgB,GAAG,aAAa,EACvD,KAAI,CAAC,IAAI,CAAG,IAAI,CAAC,eAAe,GAChC,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,aAAa,CAACA,EACtC,CAEA,SAAU,CACR,OAAO,IAAI,CAAC,IAAI,AAClB,CAEA,KAAKx9B,CAAG,CAAE,CACR,GAAI,CACFy9B,UAAAA,CAAS,CACV,CAAG,IAAI,CAEJz9B,GACFA,EAAI,SAAS,GAGfy9B,EAAU,OAAO,CAACrY,IAChB,GAAI,CACFptC,KAAAA,CAAI,CACJyB,OAAAA,CAAM,CACP,CAAG2rC,EAEJ,OAAQptC,GACN,KAAKm6C,GAAW,OAAO,CACjBnyB,GACFA,EAAI,MAAM,CAACvmB,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EAGjC,KAEF,MAAK04C,GAAW,OAAO,CACjBnyB,GACFA,EAAI,MAAM,CAACvmB,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EAGjC,KAEF,MAAK04C,GAAW,QAAQ,CAClBnyB,GACFA,EAAI,aAAa,CAACvmB,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EAGpF,KAEF,MAAK04C,GAAW,OAAO,CACjBnyB,GACFA,EAAI,gBAAgB,CAACvmB,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EAGjE,KAEF,MAAK04C,GAAW,GAAG,CAEf,GAAI,CAAC3vC,EAAIC,EAAIurB,EAAIC,EAAIyvB,EAAOC,EAAQC,EAAKC,EAAG,CAAGpkD,EAE3C+wC,EAASxc,EAAKC,EAAK,EAAID,EAAKC,EAC5Bwc,EAASzc,EAAKC,EAAKA,EAAKD,EAAK,EAE7BhO,IACFA,EAAI,SAAS,CAACxd,EAAIC,GAClBud,EAAI,MAAM,CAAC49B,GACX59B,EAAI,KAAK,CAACwqB,EAAQC,GAClBzqB,EAAI,GAAG,CAAC,EAAG,EARLgO,EAAKC,EAAKD,EAAKC,EAQJyvB,EAAOA,EAAQC,EAAQtH,CAAAA,CAAQ,GAAIwH,CAAC,GACrD79B,EAAI,KAAK,CAAC,EAAIwqB,EAAQ,EAAIC,GAC1BzqB,EAAI,MAAM,CAAC,CAAC49B,GACZ59B,EAAI,SAAS,CAAC,CAACxd,EAAI,CAACC,IAGtB,KAGJ,MAAK0vC,GAAW,UAAU,CACpBnyB,GACFA,EAAI,SAAS,EAInB,CACF,EACF,CAEA,eAAeA,CAAG,CAAE,CAClB,IAAI,CAAC,WAAW,CAACA,GACjBA,EAAI,IAAI,GACR,IAAI89B,EAAiB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,SAAS,GAClE94C,EAAW,IAAI,CAAC,WAAW,GAC3B,CACF+4C,UAAAA,CAAS,CACV,CAAG,IAAI,CACJvgD,EAAOwiB,EAAI,SAAS,AAED,eAAnB89B,GACF99B,EAAI,SAAS,GAGf+9B,EAAU,OAAO,CAAC,CAACnH,EAAOhsD,KACxB,GAAI,CACF8lC,GAAAA,CAAE,CACFz2B,GAAAA,CAAE,CACF42B,SAAAA,CAAQ,CACR,KAAMmtB,CAAW,CAClB,CAAGpH,EACJ52B,EAAI,IAAI,GACRA,EAAI,SAAS,CAAC0Q,EAAG,CAAC,CAAEA,EAAG,CAAC,EACxB1Q,EAAI,MAAM,CAAC6Q,GAEP7Q,EAAI,SAAS,EACfA,EAAI,QAAQ,CAACg+B,EAAa,EAAG,GAG3Bh+B,EAAI,WAAW,EACjBA,EAAI,UAAU,CAACg+B,EAAa,EAAG,GAGjCh+B,EAAI,OAAO,GAEY,cAAnB89B,IACQ,IAANlzD,GACFo1B,EAAI,MAAM,CAAC0Q,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAG1rB,EAAW,GAGrCgb,EAAI,MAAM,CAAC/lB,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAG+K,EAAW,GAavC,GAEuB,cAAnB84C,IACF99B,EAAI,SAAS,CAAGhb,EAAW,GAC3Bgb,EAAI,WAAW,CAAGxiB,EAClBwiB,EAAI,MAAM,GACVA,EAAI,SAAS,IAGfA,EAAI,OAAO,EACb,CAEA,oBAAqB,CACnB,IAAIrb,EAAMnW,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,EAC9E,OAAO,IAAI,CAAC,kBAAkB,CAACmW,EAAI,EAAI,CACzC,CAEA,qBAAqBqb,CAAG,CAAEuN,CAAM,CAAE0wB,CAAa,CAAEC,CAAa,CAAEC,CAAY,CAAEC,CAAW,CAAEtwD,CAAE,CAAEZ,CAAC,CAAEmxD,CAAK,CAAE,CACvG,IAAIvgD,EAASsgD,EACTE,EAAa,IAAI,CAAC,WAAW,CAACt+B,EAAK9yB,EAE7B,OAANA,GAAaqgC,AAAW,YAAXA,GAAwB0wB,EAAgBC,GACvDI,CAAAA,GAAc,AAACJ,CAAAA,EAAgBD,CAAY,EAAKE,CAAW,EAGzDE,EAAQ,IACVvgD,CAAAA,GAAU,IAAI,CAAC,kBAAkB,CAACugD,EAAK,EAGzC,IAAIE,EAAa,IAAI,CAAC,UAAU,CAAG,GAC/B7tB,EAAK,IAAI,CAAC,yBAAyB,CAAC5yB,EAAQygD,EAAY,GACxDtkD,EAAK,IAAI,CAAC,yBAAyB,CAAC6D,EAASwgD,EAAYC,EAAY,GACrE/wB,EAAU,CACZkD,GAAAA,EACAz2B,GAAAA,CACF,EACI42B,EAAWH,GAAMz2B,EAAKnP,KAAK,KAAK,CAACmP,EAAG,CAAC,CAAGy2B,EAAG,CAAC,CAAEz2B,EAAG,CAAC,CAAGy2B,EAAG,CAAC,EAAI,EAEjE,GAAI5iC,EAAI,CACN,IAAI0wD,EAAM1zD,KAAK,GAAG,CAACA,KAAK,EAAE,CAAG,EAAI+lC,GAAY/iC,EACzC2wD,EAAM3zD,KAAK,GAAG,CAAC,CAAC+lC,GAAY/iC,CAChC0/B,CAAAA,EAAQ,EAAE,CAAG8vB,GAAgBA,GAAgB,CAAC,EAAG5sB,GAAK,CAAC,EAAG,CACxD,EAAGA,EAAG,CAAC,CAAG8tB,EACV,EAAG9tB,EAAG,CAAC,CAAG+tB,CACZ,GACAjxB,EAAQ,EAAE,CAAG8vB,GAAgBA,GAAgB,CAAC,EAAGrjD,GAAK,CAAC,EAAG,CACxD,EAAGA,EAAG,CAAC,CAAGukD,EACV,EAAGvkD,EAAG,CAAC,CAAGwkD,CACZ,EACF,CAGA,MAAO,CACL3gD,OAFFA,GAAUwgD,EAGR9wB,QAAAA,EACAqD,SAAAA,CACF,CACF,CAEA,YAAY7Q,CAAG,CAAE5gB,CAAI,CAAE,CACrB,GAAI,CACFs/C,cAAAA,CAAa,CACd,CAAG,IAAI,CACJxG,EAAa94C,GAAQ,IAAI,CAAC,OAAO,GAErC,GAAIs/C,EAAc,GAAG,CAACxG,GACpB,OAAOwG,EAAc,GAAG,CAACxG,GAG3B,IAAID,EAAU,IAAI,CAAC,iBAAiB,CAACj4B,EAAKk4B,GAE1C,OADAwG,EAAc,GAAG,CAACxG,EAAYD,GACvBA,CACT,CAKA,YAAYj4B,CAAG,CAAE,CACf,IAAI,IAAI,CAAC,SAAS,EAIlB,IAAIm3B,EAAa,IAAI,CAAC,OAAO,GACzBwH,EAAQxH,EAAW,KAAK,CAAC,IACzBgH,EAAehH,EAAW,KAAK,CAAC,KAAK,MAAM,CAAG,EAC9CtpD,EAAK,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC2X,GAAKA,EAAE,SAAS,CAAC,MACjE1X,EAAK,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,KAC9Cy/B,EAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,SAAS,CAAC,SACvDqxB,EAAc,IAAI,CAAC,QAAQ,CAAC,kBAC5BC,EAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBACrCC,EAAgB,CAEhB,CAACF,EAAY,QAAQ,IAAMA,AAA2B,YAA3BA,EAAY,QAAQ,GAExCA,EAAY,QAAQ,IACE,YAA3BA,EAAY,QAAQ,IAAoBA,AAA2B,UAA3BA,EAAY,QAAQ,IAC9DE,CAAAA,EAAgBF,EAAY,SAAS,EAAC,EAHxCE,EAAgBD,EAAc,SAAS,GAQzC,IAAIE,EAAqB,EAAE,CACvBC,EAAU7H,EAAW,MAAM,AAC/B,KAAI,CAAC,kBAAkB,CAAG4H,EAE1B,IAAK,IAAIn0D,EAAI,EAAGA,EAAIo0D,EAASp0D,IAC3Bm0D,EAAmB,IAAI,CAAC,AAAiB,SAAVlxD,CAAE,CAACjD,EAAE,CAAmBiD,CAAE,CAACjD,EAAE,CAAGk0D,GAGjE,IAAIG,EAAQF,EAAmB,MAAM,CAAC,CAACG,EAAKC,EAAKv0D,IAAMA,AAAM,IAANA,EAAU,EAAIs0D,EAAMC,GAAO,EAAG,GACjFC,EAAY,IAAI,CAAC,WAAW,CAACp/B,GAC7Bi+B,EAAgBnzD,KAAK,GAAG,CAACs0D,EAAYH,EAAO,EAChD,KAAI,CAAC,SAAS,CAAGG,EACjB,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,WAAW,GAClC,IAAI,CAAC,SAAS,CAAG,EAAE,CACnB,IAAIlB,EAAgB,IAAI,CAAC,aAAa,GAClCmB,EAAc,IAAI,CAAC,QAAQ,CAAC,eAAe,SAAS,CAAC,GAAKnB,EAC1DpgD,EAAS,EAETyvB,CAAAA,AAAW,WAAXA,GAAuBA,AAAW,WAAXA,CAAkB,GAC3CzvB,CAAAA,EAAS,CAACmgD,EAAgB,GAGxB1wB,CAAAA,AAAW,QAAXA,GAAoBA,AAAW,UAAXA,CAAiB,GACvCzvB,CAAAA,EAAS,CAACmgD,CAAY,EAGxBngD,GAAUuhD,EACVV,EAAM,OAAO,CAAC,CAAChI,EAAM/rD,KAEnB,GAAI,CACF,OAAQ00D,CAAU,CAClB9xB,QAAAA,CAAO,CACPqD,SAAAA,CAAQ,CACT,CAAG,IAAI,CAAC,oBAAoB,CAAC7Q,EAAKuN,EAAQ0wB,EAAeC,EAAeC,EAAcrgD,EAAQhQ,EAAI6oD,EAAM/rD,GAGzG,GAFAkT,EAASwhD,EAEL,EAAC9xB,EAAQ,EAAE,GAAI,CAACA,EAAQ,EAAE,CAmB9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAGlB,KAAMmxB,CAAK,CAAC/zD,EAAE,CACd,GAAI4iC,EAAQ,EAAE,CACd,GAAIA,EAAQ,EAAE,CACdqD,SAAAA,CACF,EACF,GACF,CAEA,cAAcx2B,CAAI,CAAE,CAGlB,GAFA,IAAI,CAAC,UAAU,CAAG,GAEd,CAACA,EACH,MAAO,EAAE,CAGX,IAAIklD,EAAe,EAAE,CACjB,CACF7K,WAAAA,CAAU,CACX,CAAGr6C,EAGJ,IAFAq6C,EAAW,KAAK,GAET,CAACA,EAAW,KAAK,IAAI,CAC1B,GAAI,CACFnnD,QAAAA,CAAO,CACR,CAAGmnD,EACA8K,EAASjyD,EAAUA,EAAQ,CAAC,CAAG,EAC/BkyD,EAASlyD,EAAUA,EAAQ,CAAC,CAAG,EAC/B8kD,EAAUqC,EAAW,IAAI,GACzBgL,EAAkBrN,EAAQ,IAAI,CAC9B54C,EAAS,EAAE,CAEf,OAAQ44C,EAAQ,IAAI,EAClB,KAAKF,GAAW,OAAO,CACrB,IAAI,CAAC,KAAK,CAACuC,EAAYj7C,GACvB,KAEF,MAAK04C,GAAW,OAAO,CACrBuN,EAAkB,IAAI,CAAC,KAAK,CAAChL,EAAYj7C,GACzC,KAEF,MAAK04C,GAAW,aAAa,CAC3BuN,EAAkB,IAAI,CAAC,KAAK,CAAChL,EAAYj7C,GACzC,KAEF,MAAK04C,GAAW,YAAY,CAC1BuN,EAAkB,IAAI,CAAC,KAAK,CAAChL,EAAYj7C,GACzC,KAEF,MAAK04C,GAAW,QAAQ,CACtB,IAAI,CAAC,KAAK,CAACuC,EAAYj7C,GACvB,KAEF,MAAK04C,GAAW,eAAe,CAC7BuN,EAAkB,IAAI,CAAC,KAAK,CAAChL,EAAYj7C,GACzC,KAEF,MAAK04C,GAAW,OAAO,CACrB,IAAI,CAAC,KAAK,CAACuC,EAAYj7C,GACvB,KAEF,MAAK04C,GAAW,cAAc,CAC5BuN,EAAkB,IAAI,CAAC,KAAK,CAAChL,EAAYj7C,GACzC,KAEF,MAAK04C,GAAW,GAAG,CACjB14C,EAAS,IAAI,CAAC,KAAK,CAACi7C,GACpB,KAEF,MAAKvC,GAAW,UAAU,CACxBsC,GAAY,KAAK,CAACC,EAEtB,CAEIrC,EAAQ,IAAI,GAAKF,GAAW,UAAU,CACxCoN,EAAa,IAAI,CAAC,CAChB,KAAMG,EACNjmD,OAAAA,EACA,MAAO,CACL,EAAG+lD,EACH,EAAGC,CACL,EACA,WAAY,IAAI,CAAC,UAAU,CAACD,EAAQC,EAAQC,EAAiBjmD,EAC/D,GAEA8lD,EAAa,IAAI,CAAC,CAChB,KAAMpN,GAAW,UAAU,CAC3B,OAAQ,EAAE,CACV,WAAY,CACd,EAEJ,CAEA,OAAOoN,CACT,CAEA,MAAM7K,CAAU,CAAEj7C,CAAM,CAAE,CACxB,GAAI,CACFlP,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG8mD,GAAY,KAAK,CAACC,GAAY,KAAK,CACvCj7C,EAAO,IAAI,CAAClP,EAAGoD,EACjB,CAEA,MAAM+mD,CAAU,CAAEj7C,CAAM,CAAE,CACxB,GAAI,CACFlP,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG8mD,GAAY,KAAK,CAACC,GAAY,KAAK,CAEvC,OADAj7C,EAAO,IAAI,CAAClP,EAAGoD,GACRwkD,GAAW,OAAO,AAC3B,CAEA,MAAMuC,CAAU,CAAEj7C,CAAM,CAAE,CACxB,GAAI,CACFlP,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG8mD,GAAY,KAAK,CAACC,GAAY,KAAK,CAEvC,OADAj7C,EAAO,IAAI,CAAClP,EAAGoD,GACRwkD,GAAW,OAAO,AAC3B,CAEA,MAAMuC,CAAU,CAAEj7C,CAAM,CAAE,CACxB,GAAI,CACFlP,EAAAA,CAAC,CACDoD,EAAAA,CAAC,CACF,CAAG8mD,GAAY,KAAK,CAACC,GAAY,KAAK,CAEvC,OADAj7C,EAAO,IAAI,CAAClP,EAAGoD,GACRwkD,GAAW,OAAO,AAC3B,CAEA,MAAMuC,CAAU,CAAEj7C,CAAM,CAAE,CACxB,GAAI,CACFR,MAAAA,CAAK,CACLq8C,aAAAA,CAAY,CACZC,aAAAA,CAAY,CACb,CAAGd,GAAY,KAAK,CAACC,GACtBj7C,EAAO,IAAI,CAACR,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAEq8C,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,CAC9F,CAEA,MAAMb,CAAU,CAAEj7C,CAAM,CAAE,CACxB,GAAI,CACFR,MAAAA,CAAK,CACLq8C,aAAAA,CAAY,CACZC,aAAAA,CAAY,CACb,CAAGd,GAAY,KAAK,CAACC,GAEtB,OADAj7C,EAAO,IAAI,CAACR,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAEq8C,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,EACrFpD,GAAW,QAAQ,AAC5B,CAEA,MAAMuC,CAAU,CAAEj7C,CAAM,CAAE,CACxB,GAAI,CACF67C,aAAAA,CAAY,CACZC,aAAAA,CAAY,CACb,CAAGd,GAAY,KAAK,CAACC,GACtBj7C,EAAO,IAAI,CAAC67C,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,CAC5E,CAEA,MAAMb,CAAU,CAAEj7C,CAAM,CAAE,CACxB,GAAI,CACF67C,aAAAA,CAAY,CACZC,aAAAA,CAAY,CACb,CAAGd,GAAY,KAAK,CAACC,GAEtB,OADAj7C,EAAO,IAAI,CAAC67C,EAAa,CAAC,CAAEA,EAAa,CAAC,CAAEC,EAAa,CAAC,CAAEA,EAAa,CAAC,EACnEpD,GAAW,OAAO,AAC3B,CAEA,MAAMuC,CAAU,CAAE,CAChB,GAAI,CACFc,GAAAA,CAAE,CACFC,GAAAA,CAAE,CACFG,UAAAA,CAAS,CACTC,cAAAA,CAAa,CACbG,MAAAA,CAAK,CACLjpB,GAAAA,CAAE,CACFkpB,GAAAA,CAAE,CACH,CAAGxB,GAAY,KAAK,CAACC,GAUtB,OARkB,IAAdkB,GAAmBK,EAAK,GAC1BA,CAAAA,GAAM,EAAInrD,KAAK,EAAE,AAAD,EAGA,IAAd8qD,GAAmBK,EAAK,GAC1BA,CAAAA,GAAM,EAAInrD,KAAK,EAAE,AAAD,EAGX,CAACkrD,EAAM,CAAC,CAAEA,EAAM,CAAC,CAAER,EAAIC,EAAI1oB,EAAIkpB,EAAIJ,EAAeD,EAAU,AACrE,CAEA,WAAWrrD,CAAC,CAAEoD,CAAC,CAAEgyD,CAAW,CAAElmD,CAAM,CAAE,CACpC,IAAI4uC,EAAM,EACNpuC,EAAK,KACLC,EAAK,KACLvP,EAAI,EAER,OAAQg1D,GACN,KAAKxN,GAAW,OAAO,CACrB,OAAO,IAAI,CAAC,aAAa,CAAC5nD,EAAGoD,EAAG8L,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAEtD,MAAK04C,GAAW,QAAQ,CAKtB,IAAKxnD,EAAI,IAHT09C,EAAM,EACNpuC,EAAK,IAAI,CAAC,qBAAqB,CAAC,EAAG1P,EAAGoD,EAAG8L,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EAE1F9O,GAAK,EAAGA,GAAK,IAC1BuP,EAAK,IAAI,CAAC,qBAAqB,CAACvP,EAAGJ,EAAGoD,EAAG8L,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EACzG4uC,GAAO,IAAI,CAAC,aAAa,CAACpuC,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAEC,EAAG,CAAC,CAAEA,EAAG,CAAC,EAChDD,EAAKC,EAGP,OAAOmuC,CAET,MAAK8J,GAAW,OAAO,CAKrB,IAAKxnD,EAAI,IAHT09C,EAAM,EACNpuC,EAAK,IAAI,CAAC,yBAAyB,CAAC,EAAG1P,EAAGoD,EAAG8L,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EAExE9O,GAAK,EAAGA,GAAK,IAC1BuP,EAAK,IAAI,CAAC,yBAAyB,CAACvP,EAAGJ,EAAGoD,EAAG8L,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,EACvF4uC,GAAO,IAAI,CAAC,aAAa,CAACpuC,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAEC,EAAG,CAAC,CAAEA,EAAG,CAAC,EAChDD,EAAKC,EAGP,OAAOmuC,CAET,MAAK8J,GAAW,GAAG,CAGf9J,EAAM,EACN,IAAI17C,EAAQ8M,CAAM,CAAC,EAAE,CAEjBkkD,EAASlkD,CAAM,CAAC,EAAE,CAElB/M,EAAM+M,CAAM,CAAC,EAAE,CAAGkkD,EAClBiC,EAAM90D,KAAK,EAAE,CAAG,IASpB,GAPIA,KAAK,GAAG,CAAC6B,EAAQD,GAAOkzD,GAC1BA,CAAAA,EAAM90D,KAAK,GAAG,CAAC6B,EAAQD,EAAG,EAI5BuN,EAAK,IAAI,CAAC,uBAAuB,CAACR,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAE9M,EAAO,GAEjFgxD,EAAS,EAEX,IAAKhzD,EAAIgC,EAAQizD,EAAKj1D,EAAI+B,EAAK/B,GAAKi1D,EAClC1lD,EAAK,IAAI,CAAC,uBAAuB,CAACT,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAE9O,EAAG,GACjF09C,GAAO,IAAI,CAAC,aAAa,CAACpuC,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAEC,EAAG,CAAC,CAAEA,EAAG,CAAC,EAChDD,EAAKC,OAIP,IAAKvP,EAAIgC,EAAQizD,EAAKj1D,EAAI+B,EAAK/B,GAAKi1D,EAClC1lD,EAAK,IAAI,CAAC,uBAAuB,CAACT,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAE9O,EAAG,GACjF09C,GAAO,IAAI,CAAC,aAAa,CAACpuC,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAEC,EAAG,CAAC,CAAEA,EAAG,CAAC,EAChDD,EAAKC,EAMT,OAFAA,EAAK,IAAI,CAAC,uBAAuB,CAACT,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAEA,CAAM,CAAC,EAAE,CAAE/M,EAAK,GACnF27C,GAAO,IAAI,CAAC,aAAa,CAACpuC,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAEC,EAAG,CAAC,CAAEA,EAAG,CAAC,CAGtD,CAEA,OAAO,CACT,CAEA,eAAe2lD,CAAI,CAAElO,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE,CACvC,IAAIgO,EAAQtxD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAGmjD,EAC5EoO,EAAQvxD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAGojD,EAC5E/mD,EAAI,AAACinD,CAAAA,EAAMF,CAAE,EAAMC,CAAAA,EAAMF,EAAM5K,CAAU,EACzCmC,EAAMp+C,KAAK,IAAI,CAAC+0D,EAAOA,EAAQ,GAAIh1D,EAAIA,CAAAA,GAEvCgnD,EAAMF,GACRzI,CAAAA,GAAO,EAAC,EAGV,IAAI8W,EAAOn1D,EAAIq+C,EACX3Y,EAAK,KAET,GAAIshB,IAAQF,EAEVphB,EAAK,CACH,EAAGuvB,EACH,EAAGC,EAAQC,CACb,OACK,GAAI,AAACD,CAAAA,EAAQnO,CAAE,EAAMkO,CAAAA,EAAQnO,EAAM5K,CAAU,IAAOl8C,EACzD0lC,EAAK,CACH,EAAGuvB,EAAQ5W,EACX,EAAG6W,EAAQC,CACb,MACK,CACL,IAAIC,EAAK,EACLC,EAAK,EACL7X,EAAM,IAAI,CAAC,aAAa,CAACsJ,EAAKC,EAAKC,EAAKC,GAE5C,GAAIzJ,EAAMtB,EACR,OAAO,KAGT,IAAI/O,EAAI,AAAC8nB,CAAAA,EAAQnO,CAAE,EAAME,CAAAA,EAAMF,CAAE,EAAK,AAACoO,CAAAA,EAAQnO,CAAE,EAAME,CAAAA,EAAMF,CAAE,EAC/D5Z,GAAKqQ,EAAMA,EACX4X,EAAKtO,EAAM3Z,EAAK6Z,CAAAA,EAAMF,CAAE,EACxBuO,EAAKtO,EAAM5Z,EAAK8Z,CAAAA,EAAMF,CAAE,EACxB,IAAIuO,EAAQ,IAAI,CAAC,aAAa,CAACL,EAAOC,EAAOE,EAAIC,GAC7CE,EAAOt1D,KAAK,IAAI,CAAC+0D,EAAOA,EAAOM,EAAQA,GAC3CjX,EAAMp+C,KAAK,IAAI,CAACs1D,EAAOA,EAAQ,GAAIv1D,EAAIA,CAAAA,GAEnCgnD,EAAMF,GACRzI,CAAAA,GAAO,EAAC,EAGV8W,EAAOn1D,EAAIq+C,EACX3Y,EAAK,CACH,EAAG0vB,EAAK/W,EACR,EAAGgX,EAAKF,CACV,CACF,CAEA,OAAOzvB,CACT,CAEA,eAAe8vB,CAAQ,CAAE,CACvB,IAAIC,EAAU,IAAI,CAAC,aAAa,GAC5BC,EAAuB,EACvB5tD,EAAI,KAER,GAAI0tD,EAAW,OAAYA,EAAW,KAAUC,EAC9C,OAAO,KAGT,GAAI,CACF7C,UAAAA,CAAS,CACV,CAAG,IAAI,CAER,IAAK,IAAIpL,KAAWoL,EAAW,CAC7B,GAAIpL,GAAYA,CAAAA,EAAQ,UAAU,CAAG,MAAWkO,EAAuBlO,EAAQ,UAAU,CAAG,KAAUgO,CAAO,EAAI,CAC/GE,GAAwBlO,EAAQ,UAAU,CAC1C,QACF,CAEA,IAAIp+B,EAAQosC,EAAWE,EACnBC,EAAW,EAEf,OAAQnO,EAAQ,IAAI,EAClB,KAAKF,GAAW,OAAO,CACrBx/C,EAAI,IAAI,CAAC,cAAc,CAACshB,EAAOo+B,EAAQ,KAAK,CAAC,CAAC,CAAEA,EAAQ,KAAK,CAAC,CAAC,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,KAAK,CAAC,CAAC,CAAEA,EAAQ,KAAK,CAAC,CAAC,EACvI,KAEF,MAAKF,GAAW,GAAG,CAEf,IAAIxlD,EAAQ0lD,EAAQ,MAAM,CAAC,EAAE,CAEzBsL,EAAStL,EAAQ,MAAM,CAAC,EAAE,CAE1B3lD,EAAM2lD,EAAQ,MAAM,CAAC,EAAE,CAAGsL,EAG9B,GAFA6C,EAAW7zD,EAAQsnB,EAAQo+B,EAAQ,UAAU,CAAGsL,EAE5CA,EAAS,GAAK6C,EAAW9zD,GAAOixD,GAAU,GAAK6C,EAAW9zD,EAC5D,MAGFiG,EAAI,IAAI,CAAC,uBAAuB,CAAC0/C,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEmO,EAAUnO,EAAQ,MAAM,CAAC,EAAE,EACxI,KAGJ,MAAKF,GAAW,QAAQ,CACtBqO,CAAAA,EAAWvsC,EAAQo+B,EAAQ,UAAU,AAAD,EAErB,GACbmO,CAAAA,EAAW,GAGb7tD,EAAI,IAAI,CAAC,qBAAqB,CAAC6tD,EAAUnO,EAAQ,KAAK,CAAC,CAAC,CAAEA,EAAQ,KAAK,CAAC,CAAC,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,EAC3L,KAEF,MAAKF,GAAW,OAAO,CACrBqO,CAAAA,EAAWvsC,EAAQo+B,EAAQ,UAAU,AAAD,EAErB,GACbmO,CAAAA,EAAW,GAGb7tD,EAAI,IAAI,CAAC,yBAAyB,CAAC6tD,EAAUnO,EAAQ,KAAK,CAAC,CAAC,CAAEA,EAAQ,KAAK,CAAC,CAAC,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAAEA,EAAQ,MAAM,CAAC,EAAE,CAE7J,CAEA,GAAI1/C,EACF,OAAOA,EAGT,KACF,CAEA,OAAO,IACT,CAEA,cAAcpE,CAAE,CAAE+C,CAAE,CAAEkC,CAAE,CAAEC,CAAE,CAAE,CAC5B,OAAO3I,KAAK,IAAI,CAAC,AAAC0I,CAAAA,EAAKjF,CAAC,EAAMiF,CAAAA,EAAKjF,CAAC,EAAK,AAACkF,CAAAA,EAAKnC,CAAC,EAAMmC,CAAAA,EAAKnC,CAAC,EAC9D,CAEA,eAAgB,CAKd,OAJwB,KAApB,IAAI,CAAC,UAAU,EACjB,KAAI,CAAC,UAAU,CAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC6H,EAAQk5C,IAAYA,EAAQ,UAAU,CAAG,EAAIl5C,EAASk5C,EAAQ,UAAU,CAAGl5C,EAAQ,EAAC,EAGxH,IAAI,CAAC,UAAU,AACxB,CAEA,sBAAsBsnD,CAAG,CAAE9O,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE0O,CAAG,CAAEC,CAAG,CAAE,CACjE,IAAIp2D,EAAIm2D,EAAMvZ,EAAIsZ,GAAO1O,EAAM3K,EAAIqZ,GAAO5O,EAAMxK,EAAIoZ,GAAO9O,EAAMrK,EAAImZ,GAErE,MAAO,CACLl2D,EAAAA,EACAoD,EAHMgzD,EAAMxZ,EAAIsZ,GAAOzO,EAAM5K,EAAIqZ,GAAO3O,EAAMzK,EAAIoZ,GAAO7O,EAAMtK,EAAImZ,EAIrE,CACF,CAEA,0BAA0BA,CAAG,CAAE9O,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE,CAC3D,IAniKSrnD,EAAAA,EAmiKLJ,EAAIwnD,EAliKHpnD,CAAAA,CADIA,EAmiKS81D,GAliKT91D,CAAAA,EAkiKgBknD,EAAMrK,EAAIiZ,GAAO9O,EAAMlK,EAAIgZ,GAEpD,MAAO,CACLl2D,EAAAA,EACAoD,EAHMqkD,EAniKHrnD,CAAAA,CADIA,EAoiKS81D,GAniKT91D,CAAAA,EAmiKgBmnD,EAAMtK,EAAIiZ,GAAO7O,EAAMnK,EAAIgZ,EAIpD,CACF,CAEA,wBAAwBj+C,CAAE,CAAEC,CAAE,CAAEurB,CAAE,CAAEC,CAAE,CAAEyvB,CAAK,CAAEE,CAAG,CAAE,CAClD,IAAIgD,EAAS91D,KAAK,GAAG,CAAC8yD,GAClBiD,EAAS/1D,KAAK,GAAG,CAAC8yD,GAClBrtB,EAAK,CACP,EAAGvC,EAAKljC,KAAK,GAAG,CAAC4yD,GACjB,EAAGzvB,EAAKnjC,KAAK,GAAG,CAAC4yD,EACnB,EACA,MAAO,CACL,EAAGl7C,EAAM+tB,CAAAA,EAAG,CAAC,CAAGqwB,EAASrwB,EAAG,CAAC,CAAGswB,CAAK,EACrC,EAAGp+C,EAAM8tB,CAAAA,EAAG,CAAC,CAAGswB,EAAStwB,EAAG,CAAC,CAAGqwB,CAAK,CACvC,CACF,CAGA,sBAAsBE,CAAS,CAAEC,CAAc,CAAE,CAC/C,IAAIT,EAAU,IAAI,CAAC,aAAa,GAC5BhnB,EAAYynB,GAAkB,IAE9BC,EAAOF,GAAaR,EAAU,IAElC,GAAI,CAAC,IAAI,CAAC,gBAAgB,EAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAKU,GAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAK1nB,EAAW,CAElH,IAAI,CAAC,gBAAgB,CAAG,CACtB0nB,KAAAA,EACA1nB,UAAAA,EACA,OAAQ,EAAE,AACZ,EAIA,IAAK,IAFDvpC,EAAI,EAEC+D,EAAI,EAAGA,GAAKwsD,EAASxsD,GAAKwlC,EAAW,CAC5C,IAAI5I,EAAK,IAAI,CAAC,cAAc,CAAC58B,GACzBmG,EAAK,IAAI,CAAC,cAAc,CAACnG,EAAIwlC,GAEjC,GAAI,EAAC5I,IAAM,CAACz2B,EAIZlK,CAAAA,GAAK,IAAI,CAAC,aAAa,CAAC2gC,EAAG,CAAC,CAAEA,EAAG,CAAC,CAAEz2B,EAAG,CAAC,CAAEA,EAAG,CAAC,IAErC+mD,IACP,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,EAAGtwB,EAAG,CAAC,CACP,EAAGA,EAAG,CAAC,CACP,SAAU58B,CACZ,GACA/D,GAAKixD,EAET,CACF,CACF,CAEA,0BAA0BC,CAAc,CAAED,CAAI,CAAE1nB,CAAS,CAAE,CAGzD,GAFA,IAAI,CAAC,qBAAqB,CAAC0nB,EAAM1nB,GAE7B2nB,EAAiB,GAAKA,EAAiB,IAAI,CAAC,aAAa,GAAK,KAChE,OAAO,KAGT,IAAIt8C,EAAM7Z,KAAK,KAAK,CAACm2D,EAAiB,IAAI,CAAC,aAAa,GAAM,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAG,IACpG,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAACt8C,EAAI,EAAI,IAC9C,CAEF,CAEA,IAAIu8C,GAAe,4EACnB,OAAMC,WAAqBrO,GACzB,YAAYtvC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,QACZ,IAAI,CAAC,MAAM,CAAG,GACd,IAAIkS,EAAO,IAAI,CAAC,gBAAgB,GAAG,SAAS,GAE5C,GAAI,CAACA,EACH,OAGF,IAAIC,EAAQD,EAAK,QAAQ,CAAC,SAAW,4BAA4B,IAAI,CAACA,GACtE59C,EAAS,MAAM,CAAC,IAAI,CAAC,IAAI,EAEpB69C,EAGE,IAAI,CAAC,OAAO,CAACD,GAFb,IAAI,CAAC,SAAS,CAACA,GAKtB,IAAI,CAAC,KAAK,CAAGC,CACf,CAEA,UAAUD,CAAI,CAAE,CACd,IAAI3T,EAAQ,IAAI,CAEhB,OAAO,EAAkB,YACvB,GAAI,CACF,IAAI6T,EAAQ,MAAM7T,EAAM,QAAQ,CAAC,WAAW,CAAC2T,EAC7C3T,CAAAA,EAAM,KAAK,CAAG6T,CAChB,CAAE,MAAOxhC,EAAK,CACZrI,QAAQ,KAAK,CAAC,8BAA+B,MAAM,CAAC2pC,EAAM,MAAQthC,EACpE,CAEA2tB,EAAM,MAAM,CAAG,EACjB,IACF,CAEA,QAAQ2T,CAAI,CAAE,CACZ,IAAIzT,EAAS,IAAI,CAEjB,OAAO,EAAkB,YACvB,IAAIx9B,EAAQ+wC,GAAa,IAAI,CAACE,GAE9B,GAAIjxC,EAAO,CACT,IAAI9kB,EAAO8kB,CAAK,CAAC,EAAE,AAEfA,AAAa,YAAbA,CAAK,CAAC,EAAE,CACVw9B,EAAO,KAAK,CAAG4T,KAAKl2D,GAEpBsiD,EAAO,KAAK,CAAG6T,mBAAmBn2D,EAEtC,MACE,GAAI,CACF,IAAIy5C,EAAW,MAAM6I,EAAO,QAAQ,CAAC,KAAK,CAACyT,GACvCl4C,EAAM,MAAM47B,EAAS,IAAI,EAC7B6I,CAAAA,EAAO,KAAK,CAAGzkC,CACjB,CAAE,MAAO4W,EAAK,CACZrI,QAAQ,KAAK,CAAC,8BAA+B,MAAM,CAAC2pC,EAAM,MAAQthC,EACpE,CAGF6tB,EAAO,MAAM,CAAG,EAClB,IACF,CAEA,eAAe3tB,CAAG,CAAE,CAClB,GAAI,CACFxc,SAAAA,CAAQ,CACR89C,MAAAA,CAAK,CACLG,OAAAA,CAAM,CACP,CAAG,IAAI,CACJl3D,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KACrCoD,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KACrCkQ,EAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,SAAS,CAAC,KACzC1R,EAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,SAAS,CAAC,KAE/C,GAAI,EAACs1D,IAAU,CAACH,IAAS,CAACzjD,IAAS,CAAC1R,GAOpC,GAHA6zB,EAAI,IAAI,GACRA,EAAI,SAAS,CAACz1B,EAAGoD,GAEb,IAAI,CAAC,KAAK,CAAE,CACd,IAAI+zD,EAAcl+C,EAAS,KAAK,CAAC,UAAU,CAACwc,EAAK,IAAI,CAAC,KAAK,CAAE,CAC3D,YAAa,GACb,gBAAiB,GACjB,iBAAkB,GAClB,YAAa,GACb,QAAS,EACT,QAAS,EACT,WAAYniB,EACZ,YAAa1R,CACf,EACAu1D,CAAAA,EAAY,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAG,IAAI,CAC7CA,EAAY,MAAM,EACzB,KAAO,CACL,IAAIC,EAAS,IAAI,CAAC,KAAK,CACvBn+C,EAAS,UAAU,CAAC,CAClBwc,IAAAA,EACA,YAAa,IAAI,CAAC,YAAY,CAAC,uBAAuB,SAAS,GAC/DniB,MAAAA,EACA,aAAc8jD,EAAO,KAAK,CAC1Bx1D,OAAAA,EACA,cAAew1D,EAAO,MAAM,AAC9B,GAEI,IAAI,CAAC,MAAM,EACT,CAA2B,SAApBA,EAAO,QAAQ,EAAoBA,EAAO,QAAQ,AAAD,GAC1D3hC,EAAI,SAAS,CAAC2hC,EAAQ,EAAG,EAG/B,CAEA3hC,EAAI,OAAO,GACb,CAEA,gBAAiB,CACf,IAAIz1B,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KACrCoD,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KAGzC,OAAO,IAAI2jD,GAAY/mD,EAAGoD,EAAGpD,EAFjB,IAAI,CAAC,QAAQ,CAAC,SAAS,SAAS,CAAC,KAELoD,EAD3B,IAAI,CAAC,QAAQ,CAAC,UAAU,SAAS,CAAC,KAEjD,CAEF,CAEA,MAAMi0D,WAAsB9O,GAC1B,aAAc,CACZ,KAAK,IAAItkD,WACT,IAAI,CAAC,IAAI,CAAG,QACd,CAEA,OAAOgX,CAAC,CAAE,CACV,CAEF,CAEA,MAAMq8C,GACJ,YAAYr+C,CAAQ,CAAE,CACpB,IAAI,CAAC,QAAQ,CAAGA,EAChB,IAAI,CAAC,MAAM,CAAG,GACdA,EAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAC1B,CAEA,KAAKitC,CAAU,CAAE5L,CAAG,CAAE,CACpB,IAAI4I,EAAQ,IAAI,CAEhB,OAAO,EAAkB,YACvB,GAAI,CACF,GAAI,CACFjqC,SAAAA,CAAQ,CACT,CAAGiqC,EAEAqU,EAAQC,AADM,OAAMv+C,EAAS,KAAK,CAAC,MAAM,CAAC,IAAI,CAACqhC,EAAG,EAC9B,oBAAoB,CAAC,QAC7Cr6C,MAAM,IAAI,CAACs3D,GAAO,OAAO,CAACE,IACxB,IAAIx1B,EAAOhpB,EAAS,aAAa,CAACw+C,EAClCx+C,CAAAA,EAAS,WAAW,CAACitC,EAAW,CAAGjkB,CACrC,EACF,CAAE,MAAO1M,EAAK,CACZrI,QAAQ,KAAK,CAAC,6BAA8B,MAAM,CAACotB,EAAK,MAAQ/kB,EAClE,CAEA2tB,EAAM,MAAM,CAAG,EACjB,IACF,CAEF,CAEA,MAAMwU,WAAqBhT,GACzB,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,QAMZgT,AADcC,AAJJ9c,EAAe76C,MAAM,IAAI,CAACS,EAAK,UAAU,EAClD,GAAG,CAACua,GAAKA,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,iEAAkE,IAC3G,OAAO,CAAC,cAAe,KAEN,KAAK,CAAC,KAChB,OAAO,CAACA,IACd,IAAIuiC,EAAMviC,EAAE,IAAI,GAEhB,IAAI,CAACuiC,GAIL,IAAIqa,EAAWra,EAAI,KAAK,CAAC,KACrBsa,EAAaD,CAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KAC/BE,EAAWF,CAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KACjCC,EAAW,OAAO,CAAC78C,IACjB,IAAI+8C,EAAW/8C,EAAE,IAAI,GAErB,IAAI,CAAC+8C,GAIL,IAAIrpC,EAAQ1V,EAAS,MAAM,CAAC++C,EAAS,EAAI,CAAC,EAa1C,GAZAD,EAAS,OAAO,CAACE,IACf,IAAIxjC,EAAOwjC,EAAQ,OAAO,CAAC,KACvB3gD,EAAO2gD,EAAQ,MAAM,CAAC,EAAGxjC,GAAM,IAAI,GACnCxyB,EAAQg2D,EAAQ,MAAM,CAACxjC,EAAO,EAAGwjC,EAAQ,MAAM,CAAGxjC,GAAM,IAAI,GAE5Dnd,GAAQrV,GACV0sB,CAAAA,CAAK,CAACrX,EAAK,CAAG,IAAI6lC,EAASlkC,EAAU3B,EAAMrV,EAAK,CAEpD,GACAgX,EAAS,MAAM,CAAC++C,EAAS,CAAGrpC,EAC5B1V,EAAS,iBAAiB,CAAC++C,EAAS,CAAG3b,EAAuB2b,GAE1DA,AAAa,eAAbA,EAA2B,CAE7B,IAAI9R,EAAav3B,CAAK,CAAC,cAAc,CAAC,SAAS,GAAG,OAAO,CAAC,OAAQ,IAElEupC,AADWvpC,EAAM,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,KAClC,OAAO,CAACwpC,IACX,GAAIA,EAAI,OAAO,CAAC,iBAAmB,EAAG,CACpC,IAAI7d,EAAMe,EAAiB8c,GAEvB7d,GACG,IAAIgd,GAAcr+C,GAAU,IAAI,CAACitC,EAAY5L,EAEtD,CACF,EACF,EACF,GACF,EACF,CAEF,CACAod,GAAa,gBAAgB,CAAGrc,CAEhC,OAAM+c,WAAmB7P,GACvB,aAAc,CACZ,KAAK,IAAItkD,WACT,IAAI,CAAC,IAAI,CAAG,KACd,CAEA,WAAWwxB,CAAG,CAAE,CACd,KAAK,CAAC,WAAWA,GACjB,IAAI23B,EAAQ,IAAI,CAAC,YAAY,CAAC,KAC1BC,EAAQ,IAAI,CAAC,YAAY,CAAC,KAE1BD,EAAM,QAAQ,IAChB33B,EAAI,SAAS,CAAC23B,EAAM,SAAS,CAAC,KAAM,GAGlCC,EAAM,QAAQ,IAChB53B,EAAI,SAAS,CAAC,EAAG43B,EAAM,SAAS,CAAC,KAErC,CAEA,KAAK53B,CAAG,CAAE,CACR,GAAI,CACF/nB,QAAAA,CAAO,CACR,CAAG,IAAI,CAEJA,GACFA,EAAQ,IAAI,CAAC+nB,EAEjB,CAEA,eAAeA,CAAG,CAAE,CAClB,GAAI,CACFxc,SAAAA,CAAQ,CACRvL,QAAAA,CAAO,CACR,CAAG,IAAI,CAER,GAAIA,EAAS,CACX,IAAI2qD,EAAU3qD,EAad,GAXqB,WAAjBA,EAAQ,IAAI,GAGd2qD,AADAA,CAAAA,EAAU,IAAIrK,GAAW/0C,EAAU,KAAI,EAC/B,UAAU,CAAC,OAAO,CAAG,IAAIkkC,EAASlkC,EAAU,UAAWvL,EAAQ,YAAY,CAAC,WAAW,SAAS,IACxG2qD,EAAQ,UAAU,CAAC,mBAAmB,CAAG,IAAIlb,EAASlkC,EAAU,sBAAuBvL,EAAQ,YAAY,CAAC,uBAAuB,SAAS,IAC5I2qD,EAAQ,UAAU,CAAC,QAAQ,CAAG,IAAIlb,EAASlkC,EAAU,WAAYvL,EAAQ,YAAY,CAAC,YAAY,SAAS,IAC3G2qD,EAAQ,QAAQ,CAAG3qD,EAAQ,QAAQ,CAEnCA,EAAQ,MAAM,CAAC,OAAO,CAAG,IAAIyvC,EAASlkC,EAAU,UAAW,IAAI,CAAC,gBAAgB,KAG9Eo/C,AAAiB,QAAjBA,EAAQ,IAAI,CAAY,CAC1B,IAAIjW,EAAa,IAAI,CAAC,QAAQ,CAAC,QAAS,GAAO,IAC3CC,EAAc,IAAI,CAAC,QAAQ,CAAC,SAAU,GAAO,IAE7CD,EAAW,QAAQ,IACrBiW,CAAAA,EAAQ,UAAU,CAAC,KAAK,CAAG,IAAIlb,EAASlkC,EAAU,QAASmpC,EAAW,SAAS,GAAE,EAG/EC,EAAY,QAAQ,IACtBgW,CAAAA,EAAQ,UAAU,CAAC,MAAM,CAAG,IAAIlb,EAASlkC,EAAU,SAAUopC,EAAY,SAAS,GAAE,CAExF,CAEA,IAAIx6B,EAAYwwC,EAAQ,MAAM,AAC9BA,CAAAA,EAAQ,MAAM,CAAG,IAAI,CACrBA,EAAQ,MAAM,CAAC5iC,GACf4iC,EAAQ,MAAM,CAAGxwC,CACnB,CACF,CAEA,eAAe4N,CAAG,CAAE,CAClB,GAAI,CACF/nB,QAAAA,CAAO,CACR,CAAG,IAAI,QAER,AAAIA,EACKA,EAAQ,cAAc,CAAC+nB,GAGzB,IACT,CAEA,kBAAmB,CACjB,GAAI,CACFxc,SAAAA,CAAQ,CACRvL,QAAAA,CAAO,CACR,CAAG,IAAI,CACR,OAAO02C,GAAU,WAAW,CAACnrC,EAAUvL,EACzC,CAEA,IAAI,SAAU,CAKZ,MAJI,CAAC,IAAI,CAAC,aAAa,EACrB,KAAI,CAAC,aAAa,CAAG,IAAI,CAAC,gBAAgB,GAAG,aAAa,EAAC,EAGtD,IAAI,CAAC,aAAa,AAC3B,CAEF,CAEA,SAAS4qD,GAAMC,CAAG,CAAEv4D,CAAC,CAAEoD,CAAC,CAAEkQ,CAAK,CAAEklD,CAAO,CAAE1gB,CAAI,EAC5C,OAAOygB,CAAG,CAACn1D,EAAIkQ,EAAQ,EAAItT,AAAI,EAAJA,EAAQ83C,EAAK,AAC1C,CAEA,SAAS2gB,GAAMF,CAAG,CAAEv4D,CAAC,CAAEoD,CAAC,CAAEkQ,CAAK,CAAEklD,CAAO,CAAE1gB,CAAI,CAAEl5B,CAAG,EACjD25C,CAAG,CAACn1D,EAAIkQ,EAAQ,EAAItT,AAAI,EAAJA,EAAQ83C,EAAK,CAAGl5B,CACtC,CAEA,SAASte,GAAE8iB,CAAM,CAAE/iB,CAAC,CAAEyE,CAAC,EAErB,OAAO4zD,AADEt1C,CAAM,CAAC/iB,EAAE,CACNyE,CACd,CAEA,SAASnC,GAAEJ,CAAC,CAAEs2C,CAAE,CAAEC,CAAE,CAAE6f,CAAE,EACtB,OAAO9f,EAAKt4C,KAAK,GAAG,CAACgC,GAAKu2C,EAAKv4C,KAAK,GAAG,CAACgC,GAAKo2D,CAC/C,CAEA,MAAMC,WAA6BlU,GACjC,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,gBACZ,IAAIvhC,EAAS63B,EAAU,IAAI,CAAC,YAAY,CAAC,UAAU,SAAS,IAE5D,OAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,SAAS,CAAC,WAE1C,IAAK,WAED,IAAIz1C,EAAI4d,CAAM,CAAC,EAAE,CAGjBA,EAAS,CAAC,KAAQ,KAAQ5d,EAAG,KAAQ,KAAQA,EAAG,KAAQ,KAAQA,EAAG,EAAG,EAAG,KAAQ,KAAQA,EAAG,KAAQ,KAAQA,EAAG,KAAQ,KAAQA,EAAG,EAAG,EAAG,KAAQ,KAAQA,EAAG,KAAQ,KAAQA,EAAG,KAAQ,KAAQA,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAGpO,KAGJ,KAAK,YAED,IAAIjD,EAAI6gB,CAAM,CAAC,EAAE,CAAG7iB,KAAK,EAAE,CAAG,IAG9B6iB,EAAS,CAACzgB,GAAEJ,EAAG,KAAO,KAAO,OAASI,GAAEJ,EAAG,KAAO,MAAQ,OAASI,GAAEJ,EAAG,KAAO,MAAQ,MAAQ,EAAG,EAAGI,GAAEJ,EAAG,KAAO,MAAQ,MAAQI,GAAEJ,EAAG,KAAO,KAAO,KAAQI,GAAEJ,EAAG,KAAO,MAAQ,OAAS,EAAG,EAAGI,GAAEJ,EAAG,KAAO,MAAQ,OAASI,GAAEJ,EAAG,KAAO,MAAQ,MAAQI,GAAEJ,EAAG,KAAO,KAAO,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAGtT,KAGJ,KAAK,mBAEH6gB,EAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,MAAQ,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,AAIvG,CAEA,IAAI,CAAC,MAAM,CAAGA,EACd,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,QAAQ,EACpE,CAEA,MAAMqS,CAAG,CAAEojC,CAAE,CAAEC,CAAE,CAAExlD,CAAK,CAAE1R,CAAM,CAAE,CAQhC,IAAK,GAND,CACFm3D,eAAAA,CAAc,CACd31C,OAAAA,CAAM,CACP,CAAG,IAAI,CACJ41C,EAAUvjC,EAAI,YAAY,CAAC,EAAG,EAAGniB,EAAO1R,GAEnCwB,EAAI,EAAGA,EAAIxB,EAAQwB,IAC1B,IAAK,IAAIpD,EAAI,EAAGA,EAAIsT,EAAOtT,IAAK,CAC9B,IArEOu4D,EAAkBC,EAAlBD,EAAkBC,EAAlBD,EAAkBC,EAAlBD,EAAkBC,EAQtBp1C,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAAXse,EAAWte,EAJPyzD,EAAKv4D,EAAGoD,EAAGkQ,EAAOklD,GAAe55C,GAAjC25C,GAAKv4D,GAAGoD,GAAGkQ,GAAOklD,GAAe55C,GAAjC25C,GAAKv4D,GAAGoD,GAAGkQ,GAAOklD,GAAe55C,GAAjC25C,GAAKv4D,GAAGoD,GAAGkQ,GAAOklD,GAAe55C,GAiEpCjU,IArEG4tD,EAqEOS,EAAQ,IAAI,CArEDR,EAqEgB52D,EApExC22D,CAAG,CAACn1D,AAoE0BA,EAAGkQ,EApEjB,EAAItT,AAAI,EAoEGA,EAAqB,EApEf,EAqElC,IAAIi4C,IAtEGsgB,EAsEOS,EAAQ,IAAI,CAtEDR,EAsEgB52D,EArExC22D,CAAG,CAACn1D,AAqE0BA,EAAGkQ,EArEjB,EAAItT,AAAI,EAqEGA,EAAqB,EArEf,EAsElC,IAAIwC,IAvEG+1D,EAuEOS,EAAQ,IAAI,CAvEDR,EAuEgB52D,EAtExC22D,CAAG,CAACn1D,AAsE0BA,EAAGkQ,EAtEjB,EAAItT,AAAI,EAsEGA,EAAqB,EAtEf,EAuElC,IAAIuC,IAxEGg2D,EAwEOS,EAAQ,IAAI,CAxEDR,EAwEgB52D,EAvExC22D,CAAG,CAACn1D,AAuE0BA,EAAGkQ,EAvEjB,EAAItT,AAAI,EAuEGA,EAAqB,EAvEf,EAwElC,IAAIi5D,GAAK34D,CAAAA,AAjEN8iB,EAiEQA,EAjEGte,EAiEQ6F,GAAbrK,AAhEN8iB,CAAM,CAgEU,EAhEP,CACNte,GAFHse,EAiE0BA,EAjEfte,EAiE0BmzC,GA/DvCygB,AADEt1C,CAAM,CAgE4B,EAhEzB,CACNte,IAFHse,EAiE4CA,EAjEjCte,EAiE4CtC,GA/DzDk2D,AADEt1C,CAAM,CAgE8C,EAhE3C,CACNte,IAFHse,EAiE8DA,EAjEnDte,EAiE8DvC,GA/D3Em2D,AADEt1C,CAAM,CAgEgE,EAhE7D,CACNte,GAAL4zD,AA+D6F,EAhE3Ft1C,AAgEgFA,CAhE1E,CAgEkF,EAhE/E,AAgEmF,EAC/F,IAAI81C,GAAK54D,CAAAA,AAlEN8iB,EAkEQA,EAlEGte,EAkEQ6F,GAAbrK,AAjEN8iB,CAAM,CAiEU,EAjEP,CACNte,GAFHse,EAkE0BA,EAlEfte,EAkE0BmzC,GAhEvCygB,AADEt1C,CAAM,CAiE4B,EAjEzB,CACNte,IAFHse,EAkE4CA,EAlEjCte,EAkE4CtC,GAhEzDk2D,AADEt1C,CAAM,CAiE8C,EAjE3C,CACNte,IAFHse,EAkE8DA,EAlEnDte,EAkE8DvC,GAhE3Em2D,AADEt1C,CAAM,CAiEgE,EAjE7D,CACNte,GAAL4zD,AAgE6F,EAjE3Ft1C,AAiEgFA,CAjE1E,CAiEkF,EAjE/E,AAiEmF,EAC/F,IAAI+yB,GAAK71C,CAAAA,AAnEN8iB,EAmEQA,EAnEGte,EAmES6F,GAAdrK,AAlEN8iB,CAAM,CAkEU,GAlEP,CACNte,GAFHse,EAmE2BA,EAnEhBte,EAmE4BmzC,GAjEzCygB,AADEt1C,CAAM,CAkE6B,GAlE1B,CACNte,IAFHse,EAmE8CA,EAnEnCte,EAmE+CtC,GAjE5Dk2D,AADEt1C,CAAM,CAkEgD,GAlE7C,CACNte,IAFHse,EAmEiEA,EAnEtDte,EAmEkEvC,GAjE/Em2D,AADEt1C,CAAM,CAkEmE,GAlEhE,CACNte,GAAL4zD,AAiEkG,EAlEhGt1C,AAkEoFA,CAlE9E,CAkEsF,GAlEnF,AAkEwF,EACpG,IAAIgzB,GAAK91C,CAAAA,AApEN8iB,EAoEQA,EApEGte,EAoES6F,GAAdrK,AAnEN8iB,CAAM,CAmEU,GAnEP,CACNte,GAFHse,EAoE2BA,EApEhBte,EAoE4BmzC,GAlEzCygB,AADEt1C,CAAM,CAmE6B,GAnE1B,CACNte,IAFHse,EAoE8CA,EApEnCte,EAoE+CtC,GAlE5Dk2D,AADEt1C,CAAM,CAmEgD,GAnE7C,CACNte,IAFHse,EAoEiEA,EApEtDte,EAoEkEvC,GAlE/Em2D,AADEt1C,CAAM,CAmEmE,GAnEhE,CACNte,GAAL4zD,AAkEkG,EAnEhGt1C,AAmEoFA,CAnE9E,CAmEsF,GAnEnF,AAmEwF,EAEhG21C,IACFE,GAAK,EACLC,GAAK,EACL/iB,GAAK,EACLC,IAAM7zC,GAAI,KA9ELg2D,EAiFDS,EAAQ,IAAI,CAjFNh5D,EAiFQA,EAjFLoD,EAiFQA,EAjFLkQ,EAiFQA,EAjFDklD,GAiFQ52D,EAjFOgd,GAiFIq6C,GAhFlDV,CAAG,CAACn1D,EAAIkQ,EAAQ,EAAItT,AAAI,EAAJA,EAgF2B,EAhFd,CAAG4e,GADvB25C,GAkFDS,EAAQ,IAAI,CAlFNh5D,GAkFQA,EAlFLoD,GAkFQA,EAlFLkQ,GAkFQA,EAlFDklD,GAkFQ52D,EAlFOgd,GAkFIs6C,GAjFlDX,EAAG,CAACn1D,GAAIkQ,GAAQ,EAAItT,AAAI,EAAJA,GAiF2B,EAjFd,CAAG4e,GADvB25C,GAmFDS,EAAQ,IAAI,CAnFNh5D,GAmFQA,EAnFLoD,GAmFQA,EAnFLkQ,GAmFQA,EAnFDklD,GAmFQ52D,EAnFOgd,GAmFIu3B,GAlFlDoiB,EAAG,CAACn1D,GAAIkQ,GAAQ,EAAItT,AAAI,EAAJA,GAkF2B,EAlFd,CAAG4e,GADvB25C,GAoFDS,EAAQ,IAAI,CApFNh5D,GAoFQA,EApFLoD,GAoFQA,EApFLkQ,GAoFQA,EApFDklD,GAoFQ52D,EApFOgd,GAoFIw3B,GAnFlDmiB,EAAG,CAACn1D,GAAIkQ,GAAQ,EAAItT,AAAI,EAAJA,GAmF2B,EAnFd,CAAG4e,EAoFhC,CAGF6W,EAAI,SAAS,CAAC,EAAG,EAAGniB,EAAO1R,GAC3B6zB,EAAI,YAAY,CAACujC,EAAS,EAAG,EAC/B,CAEF,CAEA,MAAMG,WAAoBzU,GACxB,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,MACd,CAEA,MAAMwxB,CAAG,CAAE/nB,CAAO,CAAE,CAClB,GAAI,CACFuL,SAAAA,CAAQ,CACT,CAAG,IAAI,CAEJjZ,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KACrCoD,EAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,KACrCkQ,EAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,SAAS,CAAC,KACzC1R,EAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,SAAS,CAAC,KAE/C,GAAI,CAAC0R,GAAS,CAAC1R,EAAQ,CACrB,IAAIi9C,EAAc,IAAIkI,GACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC5lD,IACpB09C,EAAY,cAAc,CAAC19C,EAAM,cAAc,CAACs0B,GAClD,GACAz1B,EAAIO,KAAK,KAAK,CAACs+C,EAAY,EAAE,EAC7Bz7C,EAAI7C,KAAK,KAAK,CAACs+C,EAAY,EAAE,EAC7BvrC,EAAQ/S,KAAK,KAAK,CAACs+C,EAAY,KAAK,EACpCj9C,EAASrB,KAAK,KAAK,CAACs+C,EAAY,MAAM,CACxC,CAEA,IAAIua,EAAgB,IAAI,CAAC,YAAY,CAAC1rD,EAASyrD,GAAY,YAAY,EACnEE,EAAapgD,EAAS,YAAY,CAACjZ,EAAIsT,EAAOlQ,EAAIxB,GAClD03D,EAAUD,EAAW,UAAU,CAAC,MACpCpgD,EAAS,MAAM,CAAC,WAAW,CAACqgD,GAC5B,IAAI,CAAC,cAAc,CAACA,GAGpB,IAAIV,GAAqB3/C,EAAU,CACjC,SAAU,EACV,WAAY,EAAE,CACd,WAAY,CAAC,CACX,SAAU,OACV,MAAO,kBACT,EAAG,CACD,SAAU,iBACV,MAAO,MACT,EAAE,AACJ,GAAG,KAAK,CAACqgD,EAAS,EAAG,EAAGt5D,EAAIsT,EAAOlQ,EAAIxB,GACvC,IAAI23D,EAAYtgD,EAAS,YAAY,CAACjZ,EAAIsT,EAAOlQ,EAAIxB,GACjD43D,EAASD,EAAU,UAAU,CAAC,MAClCtgD,EAAS,MAAM,CAAC,WAAW,CAACugD,GAC5B9rD,EAAQ,MAAM,CAAC8rD,GACfA,EAAO,wBAAwB,CAAG,iBAClCA,EAAO,SAAS,CAAGF,EAAQ,aAAa,CAACD,EAAY,aACrDG,EAAO,QAAQ,CAAC,EAAG,EAAGx5D,EAAIsT,EAAOlQ,EAAIxB,GACrC6zB,EAAI,SAAS,CAAG+jC,EAAO,aAAa,CAACD,EAAW,aAChD9jC,EAAI,QAAQ,CAAC,EAAG,EAAGz1B,EAAIsT,EAAOlQ,EAAIxB,GAElC,IAAI,CAAC,aAAa,CAAC8L,EAAS0rD,EAC9B,CAEA,OAAOn+C,CAAC,CAAE,CACV,CAEF,CACAk+C,GAAY,YAAY,CAAG,CAAC,OAAQ,YAAa,YAAY,CAE7D,IAAIM,GAAO,KACX,CAEA,OAAMC,WAAwBhV,GAC5B,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,UACd,CAEA,MAAMwxB,CAAG,CAAE,CACT,GAAI,CACFxc,SAAAA,CAAQ,CACT,CAAG,IAAI,CACJ0gD,EAAe/e,QAAQ,cAAc,CAACnlB,GACtC,CACFmkC,UAAAA,CAAS,CACTC,UAAAA,CAAS,CACV,CAAGpkC,EAEAkkC,IACFA,EAAa,SAAS,CAAGF,GACzBE,EAAa,SAAS,CAAGF,IAG3B7e,QAAQ,KAAK,CAACgf,EAAWnkC,EAAK,EAAE,EAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACt0B,IACpB,GAAI,AAAsB,SAAfA,EAAM,IAAI,EAIrB,IAAI8iB,EAAY,AAAkC,SAA3B9iB,EAAM,gBAAgB,CAAmBA,EAAM,gBAAgB,GAAK,IAEvF,EAAC8iB,GACHA,CAAAA,EAAYmgC,GAAU,WAAW,CAACnrC,EAAU9X,EAAK,EAG/C8iB,GACFA,EAAU,KAAK,CAACwR,GAGlBt0B,EAAM,IAAI,CAACs0B,GAEPkkC,GACFA,CAAAA,EAAa,SAAS,CAAGE,CAAQ,EAG/B51C,GACFA,EAAU,OAAO,CAACwR,GAEtB,GACAmlB,QAAQ,KAAK,CAACif,EAAWpkC,EAAK,EAAE,EAChCA,EAAI,IAAI,GAEJkkC,IACFA,EAAa,SAAS,CAAGC,EACzBD,EAAa,SAAS,CAAGE,EAE7B,CAEA,OAAO5+C,CAAC,CAAE,CACV,CAEF,CAEA,MAAM6+C,WAAsBpV,GAC1B,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,QACd,CAEA,MAAMwxB,CAAG,CAAE/nB,CAAO,CAAE,CAElB,GAAI,CACFuL,SAAAA,CAAQ,CACRrY,SAAAA,CAAQ,CACT,CAAG,IAAI,CACJi+C,EAAcnxC,EAAQ,cAAc,CAAC+nB,GAEzC,GAAI,CAACopB,EACH,OAGF,IAAI7P,EAAK,EACL+qB,EAAK,EACTn5D,EAAS,OAAO,CAACO,IACf,IAAI64D,EAAM74D,EAAM,mBAAmB,EAAI,EACvC6tC,EAAKzuC,KAAK,GAAG,CAACyuC,EAAIgrB,GAClBD,EAAKx5D,KAAK,GAAG,CAACw5D,EAAIC,EACpB,GACA,IAAI1mD,EAAQ/S,KAAK,KAAK,CAACs+C,EAAY,KAAK,EACpCj9C,EAASrB,KAAK,KAAK,CAACs+C,EAAY,MAAM,EACtCob,EAAiB3mD,EAAQ,EAAI07B,EAC7BkrB,EAAkBt4D,EAAS,EAAIm4D,EAEnC,GAAIE,CAAAA,CAAAA,EAAiB,KAAKC,CAAAA,EAAkB,IAI5C,IAAIl6D,EAAIO,KAAK,KAAK,CAACs+C,EAAY,CAAC,EAC5Bz7C,EAAI7C,KAAK,KAAK,CAACs+C,EAAY,CAAC,EAC5Bua,EAAgB,IAAI,CAAC,YAAY,CAAC1rD,EAASosD,GAAc,YAAY,EACrEP,EAAYtgD,EAAS,YAAY,CAACghD,EAAgBC,GAClDV,EAASD,EAAU,UAAU,CAAC,MAClCtgD,EAAS,MAAM,CAAC,WAAW,CAACugD,GAC5BA,EAAO,SAAS,CAAC,CAACx5D,EAAIgvC,EAAI,CAAC5rC,EAAI22D,GAC/BrsD,EAAQ,MAAM,CAAC8rD,GAEf54D,EAAS,OAAO,CAACO,IACY,YAAvB,OAAOA,EAAM,KAAK,EACpBA,EAAM,KAAK,CAACq4D,EAAQ,EAAG,EAAGS,EAAgBC,EAE9C,GAEAzkC,EAAI,SAAS,CAAC8jC,EAAW,EAAG,EAAGU,EAAgBC,EAAiBl6D,EAAIgvC,EAAI5rC,EAAI22D,EAAIE,EAAgBC,GAChG,IAAI,CAAC,aAAa,CAACxsD,EAAS0rD,GAC9B,CAEA,OAAOn+C,CAAC,CAAE,CACV,CAEF,CACA6+C,GAAc,YAAY,CAAG,CAAC,SAAU,YAAa,YAAY,AAEjE,OAAMK,WAA4BzV,GAChC,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,eACZ,IAAI,CAAC,4BAA4B,EACnC,CAEA,MAAM1pC,CAAC,CAAE49C,CAAE,CAAEC,CAAE,CAAEsB,CAAM,CAAE5B,CAAO,CAAE,CAClC,CAEF,CAEA,MAAM6B,WAA4B3V,GAChC,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,cACd,CAEA,MAAMgX,CAAC,CAAE49C,CAAE,CAAEC,CAAE,CAAEsB,CAAM,CAAE5B,CAAO,CAAE,CAClC,CAEF,CAEA,MAAM8B,WAA2B5V,GAC/B,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,aACd,CAEA,MAAMgX,CAAC,CAAE49C,CAAE,CAAEC,CAAE,CAAEsB,CAAM,CAAE5B,CAAO,CAAE,CAClC,CAEF,CAEA,MAAM+B,WAA8B7V,GAClC,YAAYzrC,CAAQ,CAAEvY,CAAI,CAAEikD,CAAgB,CAAE,CAC5C,KAAK,CAAC1rC,EAAUvY,EAAMikD,GACtB,IAAI,CAAC,IAAI,CAAG,iBACZ,IAAI,CAAC,UAAU,CAAGpkD,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,SAAS,IACxE,IAAI,CAAC,mBAAmB,CAAG,IAAI,CAAC,UAAU,AAC5C,CAEA,MAAMk1B,CAAG,CAAEz1B,CAAC,CAAEoD,CAAC,CAAEkQ,CAAK,CAAE1R,CAAM,CAAE,CAC9B,GAAI,CACFqX,SAAAA,CAAQ,CACRuhD,WAAAA,CAAU,CACX,CAAG,IAAI,CACJlhC,EAAOrgB,EAAS,MAAM,CAAGA,EAAS,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAG,KACzDhH,EAASwjB,EAAI,MAAM,AAEvBxjB,CAAAA,EAAO,EAAE,CAAGgH,EAAS,WAAW,GAE5BqgB,IACFrnB,EAAO,KAAK,CAAC,OAAO,CAAG,OACvBqnB,EAAK,WAAW,CAACrnB,IAGnB,SAAWA,EAAQjS,EAAGoD,EAAGkQ,EAAO1R,EAAQ44D,GAEpClhC,GACFA,EAAK,WAAW,CAACrnB,EAErB,CAEF,CAEA,MAAMwoD,WAAqB/V,GACzB,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,OACd,CAEF,CAEA,MAAMy2D,WAAoBhW,GACxB,aAAc,CACZ,KAAK,IAAIzgD,WACT,IAAI,CAAC,IAAI,CAAG,MACd,CAEF,CA8CA,SAAS02D,GAAUhI,CAAM,CAAEC,CAAc,EAAI,IAAI/6C,EAAO5S,OAAO,IAAI,CAAC0tD,GAAS,GAAI1tD,OAAO,qBAAqB,CAAE,CAAE,IAAI4tD,EAAU5tD,OAAO,qBAAqB,CAAC0tD,GAAaC,GAAkBC,CAAAA,EAAUA,EAAQ,MAAM,CAAC,SAAUC,CAAG,EAAI,OAAO7tD,OAAO,wBAAwB,CAAC0tD,EAAQG,GAAK,UAAU,AAAE,EAAC,EAAKj7C,EAAK,IAAI,CAAC,KAAK,CAACA,EAAMg7C,EAAU,CAAE,OAAOh7C,CAAM,CAe1V,SAAS+iD,KAqBP,MAAOA,AApBPA,CAAAA,GAAe,EAAkB,UAAWzC,CAAG,EAC7C,IAAI0C,EAAuB52D,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CACxF8yD,EAAQ99C,SAAS,aAAa,CAAC,OAMnC,OAJI4hD,GACF9D,CAAAA,EAAM,WAAW,CAAG,WAAU,EAGzB,IAAIrgC,QAAQ,CAACC,EAASC,KAC3BmgC,EAAM,MAAM,CAAG,KACbpgC,EAAQogC,EACV,EAEAA,EAAM,OAAO,CAAG,CAAC+D,EAAQC,EAASC,EAASC,EAAQluC,KACjD6J,EAAO7J,EACT,EAEAgqC,EAAM,GAAG,CAAGoB,CACd,EACF,EAAC,EACmB,KAAK,CAAC,IAAI,CAAEl0D,UAClC,CAEA,MAAMi3D,GACJ,YAAYC,CAAK,CAAE,CACjB,GAAI,CACFC,WAAAA,EAAa,EAAE,CACfC,OAAAA,EAAS,EAAE,CACXC,aAAAA,EAAeJ,GAAS,YAAY,CACpCK,YAAAA,EAAcL,GAAS,WAAW,CAClCL,qBAAAA,CAAoB,CACrB,CAAG52D,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,CACzE,KAAI,CAAC,KAAK,CAAGk3D,EACb,IAAI,CAAC,WAAW,CAAG,CAAC,EACpB,IAAI,CAAC,MAAM,CAAG,CAAC,EACf,IAAI,CAAC,iBAAiB,CAAG,CAAC,EAC1B,IAAI,CAAC,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC,KAAK,CAAG,EAAE,CACf,IAAI,CAAC,WAAW,CAAG,EAAE,CACrB,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,MAAM,CAAGA,EAAM,MAAM,CAC1B,IAAI,CAAC,UAAU,CAAGC,EAClB,IAAI,CAAC,MAAM,CAAGC,EACd,IAAI,CAAC,YAAY,CAAGC,EACpB,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,eAAe,CAACC,EAAaV,GACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,GAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAC/C,CAEA,gBAAgBU,CAAW,CAAEV,CAAoB,CAAE,OACjD,AAAI,AAAgC,WAAhC,OAAOA,EACF,CAACtjD,EAAQikD,IAA8BD,EAAYhkD,EAAQ,AAAqC,WAArC,OAAOikD,EAA0CA,EAA4BX,GAG1IU,CACT,CAEA,IAAI,QAAS,CACX,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,AAC3B,CAEA,IAAI,OAAQ,CACV,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,AAC1B,CAEA,IAAI,KAAM,CACR,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,AACxB,CAEA,IAAI,QAAS,CACX,GAAI,CACFE,YAAAA,CAAW,CACZ,CAAG,IAAI,CACR,OAAOA,CAAW,CAACA,EAAY,MAAM,CAAG,EAAE,AAC5C,CAEA,IAAI,OAAOx5D,CAAK,CAAE,CAChB,GAAI,CACFw5D,YAAAA,CAAW,CACZ,CAAG,IAAI,CACRA,EAAY,IAAI,CAACx5D,EACnB,CAEA,WAAY,CACV,GAAI,CACFw5D,YAAAA,CAAW,CACZ,CAAG,IAAI,CACRA,EAAY,GAAG,EACjB,CAEA,aAAc,CACZ,MAAO,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CACvC,CAEA,gBAAiB,CACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAACxgD,GAAKA,EAAE,MAAM,CACxC,CAEA,eAAgB,CACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAACA,GAAKA,EAAE,MAAM,CACvC,CAEA,sBAAsBhC,CAAQ,CAAE,CAC9B,IAAIyiD,EAAkB,IAAI,CAAC,aAAa,CAACziD,EAAS,eAAe,EAIjE,OAHAyiD,EAAgB,IAAI,CAAG,GACvBA,EAAgB,4BAA4B,GAC5C,IAAI,CAAC,eAAe,CAAGA,EAChBA,CACT,CAEA,cAAch7D,CAAI,CAAE,CAClB,IAAIk0B,EAAcl0B,EAAK,QAAQ,CAAC,OAAO,CAAC,UAAW,IAC/Ci7D,EAAcT,GAAS,YAAY,CAACtmC,EAAY,QAEpD,AAAI,AAAuB,SAAhB+mC,EACF,IAAIA,EAAY,IAAI,CAAEj7D,GAGxB,IAAIslD,GAAe,IAAI,CAAEtlD,EAClC,CAEA,eAAeA,CAAI,CAAE,CACnB,OAAO,IAAIqtD,GAAS,IAAI,CAAErtD,EAC5B,CAEA,WAAWoR,CAAM,CAAE,CACjB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC8pD,AA5I3B,SAAyBj/C,CAAM,EAAI,IAAK,IAAItc,EAAI,EAAGA,EAAI4D,UAAU,MAAM,CAAE5D,IAAK,CAAE,IAAIkX,EAAStT,AAAgB,MAAhBA,SAAS,CAAC5D,EAAE,CAAW4D,SAAS,CAAC5D,EAAE,CAAG,CAAC,CAAOA,CAAAA,EAAI,EAAKs6D,GAAU11D,OAAOsS,GAAS,IAAM,OAAO,CAAC,SAAUQ,CAAG,EAAI,EAAgB4E,EAAQ5E,EAAKR,CAAM,CAACQ,EAAI,CAAG,GAAe9S,OAAO,yBAAyB,CAAIA,OAAO,gBAAgB,CAAC0X,EAAQ1X,OAAO,yBAAyB,CAACsS,IAAmBojD,GAAU11D,OAAOsS,IAAS,OAAO,CAAC,SAAUQ,CAAG,EAAI9S,OAAO,cAAc,CAAC0X,EAAQ5E,EAAK9S,OAAO,wBAAwB,CAACsS,EAAQQ,GAAO,EAAM,CAAE,OAAO4E,CAAQ,EA4Ihf,CACrC,SAAU,IAAI,AAChB,EAAG7K,GACL,CAEF,CAKA,SAAS+pD,GAAQlJ,CAAM,CAAEC,CAAc,EAAI,IAAI/6C,EAAO5S,OAAO,IAAI,CAAC0tD,GAAS,GAAI1tD,OAAO,qBAAqB,CAAE,CAAE,IAAI4tD,EAAU5tD,OAAO,qBAAqB,CAAC0tD,GAAaC,GAAkBC,CAAAA,EAAUA,EAAQ,MAAM,CAAC,SAAUC,CAAG,EAAI,OAAO7tD,OAAO,wBAAwB,CAAC0tD,EAAQG,GAAK,UAAU,AAAE,EAAC,EAAKj7C,EAAK,IAAI,CAAC,KAAK,CAACA,EAAMg7C,EAAU,CAAE,OAAOh7C,CAAM,CAExV,SAASikD,GAAcn/C,CAAM,EAAI,IAAK,IAAItc,EAAI,EAAGA,EAAI4D,UAAU,MAAM,CAAE5D,IAAK,CAAE,IAAIkX,EAAStT,AAAgB,MAAhBA,SAAS,CAAC5D,EAAE,CAAW4D,SAAS,CAAC5D,EAAE,CAAG,CAAC,CAAOA,CAAAA,EAAI,EAAKw7D,GAAQ52D,OAAOsS,GAAS,IAAM,OAAO,CAAC,SAAUQ,CAAG,EAAI,EAAgB4E,EAAQ5E,EAAKR,CAAM,CAACQ,EAAI,CAAG,GAAe9S,OAAO,yBAAyB,CAAIA,OAAO,gBAAgB,CAAC0X,EAAQ1X,OAAO,yBAAyB,CAACsS,IAAmBskD,GAAQ52D,OAAOsS,IAAS,OAAO,CAAC,SAAUQ,CAAG,EAAI9S,OAAO,cAAc,CAAC0X,EAAQ5E,EAAK9S,OAAO,wBAAwB,CAACsS,EAAQQ,GAAO,EAAM,CAAE,OAAO4E,CAAQ,CANrhBu+C,GAAS,YAAY,CAhJrB,SAAsB5nD,CAAK,CAAE1R,CAAM,EACjC,IAAIqQ,EAASgH,SAAS,aAAa,CAAC,UAGpC,OAFAhH,EAAO,KAAK,CAAGqB,EACfrB,EAAO,MAAM,CAAGrQ,EACTqQ,CACT,EA4IAipD,GAAS,WAAW,CA1IpB,SAAqBrC,CAAE,EACrB,OAAO+B,GAAa,KAAK,CAAC,IAAI,CAAE32D,UAClC,EAyIAi3D,GAAS,YAAY,CAlMN,CACb,IAAOlN,GACP,KAAQa,GACR,OAAUI,GACV,QAAWC,GACX,KAAQC,GACR,SAAYC,GACZ,QAAWC,GACX,KAAQnF,GACR,QAAWoF,GACX,OAAUK,GACV,KAAQG,GACR,eAAkBW,GAClB,eAAkBE,GAClB,KAAQI,GACR,QAAWG,GACX,aAAgBU,GAChB,iBAAoBG,GACpB,KAAQG,GACR,YAAaE,GACb,gBAAiBC,GACjB,MAAStG,GACT,KAAQC,GACR,MAAS8B,GACT,KAAQwE,GACR,EAAKE,GACL,SAAYQ,GACZ,MAAS4D,GACT,EAAK7G,GACL,OAAUsH,GACV,MAASK,GACT,IAAOU,GACP,KAAQe,GACR,SAAYO,GACZ,OAAUI,GACV,aAAgBK,GAChB,aAAgBE,GAChB,YAAeC,GACf,cAAiB1B,GACjB,eAAkB2B,GAClB,MAASE,GACT,KAAQC,EACV,CAiKA,OAAMqB,GAOJ,YAAYtmC,CAAG,CAAE9W,CAAG,CAAE,CACpB,IAAIhM,EAAU1O,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,CACnF,KAAI,CAAC,MAAM,CAAG,IAAI++C,EAAOrwC,GACzB,IAAI,CAAC,MAAM,CAAG,IAAIusC,EAAOzpB,EAAK9iB,GAC9B,IAAI,CAAC,OAAO,CAAGA,EACf,IAAIsG,EAAW,IAAIiiD,GAAS,IAAI,CAAEvoD,GAC9B+oD,EAAkBziD,EAAS,qBAAqB,CAAC0F,EACrD,KAAI,CAAC,QAAQ,CAAG1F,EAChB,IAAI,CAAC,eAAe,CAAGyiD,CACzB,CAUA,OAAO,KAAKjmC,CAAG,CAAE9W,CAAG,CAAE,CACpB,IAAIq9C,EAAa/3D,UACjB,OAAO,EAAkB,YACvB,IAAI0O,EAAUqpD,EAAW,MAAM,CAAG,GAAKA,AAAkBh7D,KAAAA,IAAlBg7D,CAAU,CAAC,EAAE,CAAiBA,CAAU,CAAC,EAAE,CAAG,CAAC,EAClF7nC,EAAS,IAAI6uB,EAAOrwC,GAExB,OAAO,IAAIopD,GAAMtmC,EADC,OAAMtB,EAAO,KAAK,CAACxV,EAAG,EACLhM,EACrC,IACF,CAUA,OAAO,WAAW8iB,CAAG,CAAE9W,CAAG,CAAE,CAC1B,IAAIhM,EAAU1O,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,EAGnF,OAAO,IAAI83D,GAAMtmC,EADCtB,AADL,IAAI6uB,EAAOrwC,GACC,eAAe,CAACgM,GACNhM,EACrC,CAUA,KAAK8iB,CAAG,CAAE9W,CAAG,CAAE,CACb,IAAIhM,EAAU1O,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,EACnF,OAAO83D,GAAM,IAAI,CAACtmC,EAAK9W,EAAKm9C,GAAcA,GAAc,CAAC,EAAG,IAAI,CAAC,OAAO,EAAGnpD,GAC7E,CAUA,WAAW8iB,CAAG,CAAE9W,CAAG,CAAE,CACnB,IAAIhM,EAAU1O,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,EACnF,OAAO83D,GAAM,UAAU,CAACtmC,EAAK9W,EAAKm9C,GAAcA,GAAc,CAAC,EAAG,IAAI,CAAC,OAAO,EAAGnpD,GACnF,CAOA,OAAQ,CACN,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAC1B,CAOA,SAAU,CACR,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAC5B,CAOA,QAAS,CACP,IAAIspD,EAAch4D,UACdi/C,EAAQ,IAAI,CAEhB,OAAO,EAAkB,YACvB,IAAIvwC,EAAUspD,EAAY,MAAM,CAAG,GAAKA,AAAmBj7D,KAAAA,IAAnBi7D,CAAW,CAAC,EAAE,CAAiBA,CAAW,CAAC,EAAE,CAAG,CAAC,EAEzF/Y,EAAM,KAAK,CAAC4Y,GAAc,CACxB,aAAc,GACd,gBAAiB,GACjB,YAAa,EACf,EAAGnpD,IAEH,MAAMuwC,EAAM,KAAK,GAEjBA,EAAM,IAAI,EACZ,IACF,CAOA,OAAQ,CACN,IAAIvwC,EAAU1O,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAG,CAAC,EAC/E,CACFy3D,gBAAAA,CAAe,CACf75B,OAAAA,CAAM,CACN,QAASq6B,CAAW,CACrB,CAAG,IAAI,CACRr6B,EAAO,KAAK,CAAC65B,EAAiBI,GAAcA,GAAc,CACxD,aAAc,EAChB,EAAGI,GAAcvpD,GACnB,CAMA,MAAO,CACL,IAAI,CAAC,MAAM,CAAC,IAAI,EAClB,CASA,OAAOW,CAAK,CAAE,CACZ,IAAI1R,EAASqC,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,CAAiBA,SAAS,CAAC,EAAE,CAAGqP,EAC7Eg7C,EAAsBrqD,UAAU,MAAM,CAAG,GAAKA,AAAiBjD,KAAAA,IAAjBiD,SAAS,CAAC,EAAE,EAAiBA,SAAS,CAAC,EAAE,CAC3F,IAAI,CAAC,eAAe,CAAC,MAAM,CAACqP,EAAO1R,EAAQ0sD,EAC7C,CAEF,6OCnwMI6N,EAAW,IAvIf,MAAMC,EACJ,aAAc,CACZ,IAAI,CAAC,QAAQ,CAAG,KAChB,IAAI,CAAC,OAAO,CAAG,IAAIr7D,IACnB,IAAI,CAAC,QAAQ,CAAG,GAChB,IAAI,CAAC,SAAS,CAAGC,KAAAA,CACnB,CACA,QAAQyjC,CAAK,CAAE43B,CAAK,CAAEC,CAAI,CAAE7uD,CAAI,CAAE,CAChC,IAAM8uD,EAAYF,EAAM,SAAS,CAAC5uD,EAAK,CACjC+uD,EAAWH,EAAM,QAAQ,CAC/BE,EAAU,OAAO,CAACz3C,GAAMA,EAAG,CACzB2f,MAAAA,EACA,QAAS43B,EAAM,OAAO,CACtBG,SAAAA,EACA,YAAaj8D,KAAK,GAAG,CAAC+7D,EAAOD,EAAM,KAAK,CAAEG,EAC5C,GACF,CACA,UAAW,CACT,IAAI,IAAI,CAAC,QAAQ,CAGjB,IAAI,CAAC,QAAQ,CAAG,GAChB,IAAI,CAAC,QAAQ,CAAG,QAAqB,CAAC56B,OAAQ,KAC5C,IAAI,CAAC,OAAO,GACZ,IAAI,CAAC,QAAQ,CAAG,KACZ,IAAI,CAAC,QAAQ,EACf,IAAI,CAAC,QAAQ,EAEjB,EACF,CACA,QAAQ06B,EAAOhpB,KAAK,GAAG,EAAE,CAAE,CACzB,IAAImpB,EAAY,EAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAACJ,EAAO53B,SAOvBi4B,EANJ,GAAI,CAACL,EAAM,OAAO,EAAI,CAACA,EAAM,KAAK,CAAC,MAAM,CACvC,OAEF,IAAMn6B,EAAQm6B,EAAM,KAAK,CACrBh8D,EAAI6hC,EAAM,MAAM,CAAG,EACnBy6B,EAAO,GAEX,KAAOt8D,GAAK,EAAG,EAAEA,EAEXq8D,AADJA,CAAAA,EAAOx6B,CAAK,CAAC7hC,EAAE,AAAD,EACL,OAAO,EACVq8D,EAAK,MAAM,CAAGL,EAAM,QAAQ,EAC9BA,CAAAA,EAAM,QAAQ,CAAGK,EAAK,MAAM,AAAD,EAE7BA,EAAK,IAAI,CAACJ,GACVK,EAAO,KAEPz6B,CAAK,CAAC7hC,EAAE,CAAG6hC,CAAK,CAACA,EAAM,MAAM,CAAG,EAAE,CAClCA,EAAM,GAAG,IAGTy6B,IACFl4B,EAAM,IAAI,GACV,IAAI,CAAC,OAAO,CAACA,EAAO43B,EAAOC,EAAM,aAE/B,CAACp6B,EAAM,MAAM,GACfm6B,EAAM,OAAO,CAAG,GAChB,IAAI,CAAC,OAAO,CAAC53B,EAAO43B,EAAOC,EAAM,YACjCD,EAAM,OAAO,CAAG,IAElBI,GAAav6B,EAAM,MAAM,AAC3B,GACA,IAAI,CAAC,SAAS,CAAGo6B,EACC,IAAdG,GACF,KAAI,CAAC,QAAQ,CAAG,EAAI,CAExB,CACA,UAAUh4B,CAAK,CAAE,CACf,IAAMm4B,EAAS,IAAI,CAAC,OAAO,CACvBP,EAAQO,EAAO,GAAG,CAACn4B,GAavB,MAZI,CAAC43B,IACHA,EAAQ,CACN,QAAS,GACT,QAAS,GACT,MAAO,EAAE,CACT,UAAW,CACT,SAAU,EAAE,CACZ,SAAU,EAAE,AACd,CACF,EACAO,EAAO,GAAG,CAACn4B,EAAO43B,IAEbA,CACT,CACA,OAAO53B,CAAK,CAAEj0B,CAAK,CAAE29B,CAAE,CAAE,CACvB,IAAI,CAAC,SAAS,CAAC1J,GAAO,SAAS,CAACj0B,EAAM,CAAC,IAAI,CAAC29B,EAC9C,CACA,IAAI1J,CAAK,CAAEvC,CAAK,CAAE,CAChB,GAAI,EAACA,IAAS,CAACA,EAAM,MAAM,CAG3B,IAAI,CAAC,SAAS,CAACuC,GAAO,KAAK,CAAC,IAAI,IAAIvC,EACtC,CACA,IAAIuC,CAAK,CAAE,CACT,OAAO,IAAI,CAAC,SAAS,CAACA,GAAO,KAAK,CAAC,MAAM,CAAG,CAC9C,CACA,MAAMA,CAAK,CAAE,CACX,IAAM43B,EAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC53B,GAC/B,IAAI,CAAC43B,EAGLA,EAAM,OAAO,CAAG,GAChBA,EAAM,KAAK,CAAG/oB,KAAK,GAAG,GACtB+oB,EAAM,QAAQ,CAAGA,EAAM,KAAK,CAAC,MAAM,CAAC,CAAC1H,EAAKC,IAAQr0D,KAAK,GAAG,CAACo0D,EAAKC,EAAI,SAAS,EAAG,GAChF,IAAI,CAAC,QAAQ,EACf,CACA,QAAQnwB,CAAK,CAAE,CACb,GAAI,CAAC,IAAI,CAAC,QAAQ,CAChB,MAAO,GAET,IAAM43B,EAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC53B,SAC/B,EAAK43B,KAAUA,EAAM,OAAO,IAAKA,EAAM,KAAK,CAAC,MAAM,EAC1C,EAGX,CACA,KAAK53B,CAAK,CAAE,CACV,IAAM43B,EAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC53B,GAC/B,GAAI,CAAC43B,GAAS,CAACA,EAAM,KAAK,CAAC,MAAM,CAC/B,OAEF,IAAMn6B,EAAQm6B,EAAM,KAAK,CACrBh8D,EAAI6hC,EAAM,MAAM,CAAG,EACvB,KAAO7hC,GAAK,EAAG,EAAEA,EACf6hC,CAAK,CAAC7hC,EAAE,CAAC,MAAM,EAEjBg8D,CAAAA,EAAM,KAAK,CAAG,EAAE,CAChB,IAAI,CAAC,OAAO,CAAC53B,EAAO43B,EAAO/oB,KAAK,GAAG,GAAI,WACzC,CACA,OAAO7O,CAAK,CAAE,CACZ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAACA,EAC7B,CACF,EAGA,IAAMo4B,EAAc,cACdC,EAAgB,CACpB,SAAQ1U,EAAMoJ,EAAIuL,IACTA,EAAS,GAAMvL,EAAKpJ,EAE7B,MAAMA,CAAI,CAAEoJ,CAAE,CAAEuL,CAAM,EACpB,IAAMC,EAAK,QAAM5U,GAAQyU,GACnBI,EAAKD,EAAG,KAAK,EAAI,QAAMxL,GAAMqL,GACnC,OAAOI,GAAMA,EAAG,KAAK,CACjBA,EAAG,GAAG,CAACD,EAAID,GAAQ,SAAS,GAC5BvL,CACN,EACA,QAAOpJ,EAAMoJ,EAAIuL,IACR3U,EAAO,AAACoJ,CAAAA,EAAKpJ,CAAG,EAAK2U,CAEhC,CACA,OAAMG,EACJ,YAAY53B,CAAG,CAAE3oB,CAAM,CAAE8X,CAAI,CAAE+8B,CAAE,CAAE,CACjC,IAAM2L,EAAexgD,CAAM,CAAC8X,EAAK,CACjC+8B,EAAK,QAAQ,CAAClsB,EAAI,EAAE,CAAEksB,EAAI2L,EAAc73B,EAAI,IAAI,CAAC,EACjD,IAAM8iB,EAAO,QAAQ,CAAC9iB,EAAI,IAAI,CAAE63B,EAAc3L,EAAG,CACjD,KAAI,CAAC,OAAO,CAAG,GACf,IAAI,CAAC,GAAG,CAAGlsB,EAAI,EAAE,EAAIw3B,CAAa,CAACx3B,EAAI,IAAI,EAAI,OAAO8iB,EAAK,CAC3D,IAAI,CAAC,OAAO,CAAG,GAAO,CAAC9iB,EAAI,MAAM,CAAC,EAAI,UAAc,CACpD,IAAI,CAAC,MAAM,CAAG/kC,KAAK,KAAK,CAAC+yC,KAAK,GAAG,GAAMhO,CAAAA,EAAI,KAAK,EAAI,IACpD,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,MAAM,CAAG/kC,KAAK,KAAK,CAAC+kC,EAAI,QAAQ,EACtD,IAAI,CAAC,KAAK,CAAG,CAAC,CAACA,EAAI,IAAI,CACvB,IAAI,CAAC,OAAO,CAAG3oB,EACf,IAAI,CAAC,KAAK,CAAG8X,EACb,IAAI,CAAC,KAAK,CAAG2zB,EACb,IAAI,CAAC,GAAG,CAAGoJ,EACX,IAAI,CAAC,SAAS,CAAGxwD,KAAAA,CACnB,CACA,QAAS,CACP,OAAO,IAAI,CAAC,OAAO,AACrB,CACA,OAAOskC,CAAG,CAAEksB,CAAE,CAAE8K,CAAI,CAAE,CACpB,GAAI,IAAI,CAAC,OAAO,CAAE,CAChB,IAAI,CAAC,OAAO,CAAC,IACb,IAAMa,EAAe,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CACvCC,EAAUd,EAAO,IAAI,CAAC,MAAM,CAC5Be,EAAS,IAAI,CAAC,SAAS,CAAGD,CAChC,KAAI,CAAC,MAAM,CAAGd,EACd,IAAI,CAAC,SAAS,CAAG/7D,KAAK,KAAK,CAACA,KAAK,GAAG,CAAC88D,EAAQ/3B,EAAI,QAAQ,GACzD,IAAI,CAAC,MAAM,EAAI83B,EACf,IAAI,CAAC,KAAK,CAAG,CAAC,CAAC93B,EAAI,IAAI,CACvB,IAAI,CAAC,GAAG,CAAG,QAAQ,CAACA,EAAI,EAAE,CAAEksB,EAAI2L,EAAc73B,EAAI,IAAI,CAAC,EACvD,IAAI,CAAC,KAAK,CAAG,QAAQ,CAACA,EAAI,IAAI,CAAE63B,EAAc3L,EAAG,CACnD,CACF,CACA,QAAS,CACH,IAAI,CAAC,OAAO,GACd,IAAI,CAAC,IAAI,CAACle,KAAK,GAAG,IAClB,IAAI,CAAC,OAAO,CAAG,GACf,IAAI,CAAC,OAAO,CAAC,IAEjB,CACA,KAAKgpB,CAAI,CAAE,KAOLS,EANJ,IAAMK,EAAUd,EAAO,IAAI,CAAC,MAAM,CAC5BgB,EAAW,IAAI,CAAC,SAAS,CACzB7oC,EAAO,IAAI,CAAC,KAAK,CACjB2zB,EAAO,IAAI,CAAC,KAAK,CACjBmV,EAAO,IAAI,CAAC,KAAK,CACjB/L,EAAK,IAAI,CAAC,GAAG,CAGnB,GADA,IAAI,CAAC,OAAO,CAAGpJ,IAASoJ,GAAO+L,CAAAA,GAASH,EAAUE,CAAQ,EACtD,CAAC,IAAI,CAAC,OAAO,CAAE,CACjB,IAAI,CAAC,OAAO,CAAC7oC,EAAK,CAAG+8B,EACrB,IAAI,CAAC,OAAO,CAAC,IACb,MACF,CACA,GAAI4L,EAAU,EAAG,CACf,IAAI,CAAC,OAAO,CAAC3oC,EAAK,CAAG2zB,EACrB,MACF,CACA2U,EAAS,AAACK,EAAUE,EAAY,EAChCP,EAASQ,GAAQR,EAAS,EAAI,EAAIA,EAASA,EAC3CA,EAAS,IAAI,CAAC,OAAO,CAACx8D,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAAC,EAAGw8D,KAC9C,IAAI,CAAC,OAAO,CAACtoC,EAAK,CAAG,IAAI,CAAC,GAAG,CAAC2zB,EAAMoJ,EAAIuL,EAC1C,CACA,MAAO,CACL,IAAMS,EAAW,IAAI,CAAC,SAAS,EAAK,KAAI,CAAC,SAAS,CAAG,EAAE,AAAD,EACtD,OAAO,IAAI9mC,QAAQ,CAAC6K,EAAKk8B,KACvBD,EAAS,IAAI,CAAC,CAACj8B,IAAAA,EAAKk8B,IAAAA,CAAG,EACzB,EACF,CACA,QAAQC,CAAQ,CAAE,CAChB,IAAMC,EAASD,EAAW,MAAQ,MAC5BF,EAAW,IAAI,CAAC,SAAS,EAAI,EAAE,CACrC,IAAK,IAAIn9D,EAAI,EAAGA,EAAIm9D,EAAS,MAAM,CAAEn9D,IACnCm9D,CAAQ,CAACn9D,EAAE,CAACs9D,EAAO,EAEvB,CACF,CAIA,OAAY,CAAC,YAAa,CACxB,MAAO38D,KAAAA,EACP,SAAU,IACV,OAAQ,eACR,GAAIA,KAAAA,EACJ,KAAMA,KAAAA,EACN,KAAMA,KAAAA,EACN,GAAIA,KAAAA,EACJ,KAAMA,KAAAA,CACR,GACA,IAAM48D,EAAmB34D,OAAO,IAAI,CAAC,aAAkB,EACvD,YAAiB,CAAC,YAAa,CAC7B,UAAW,GACX,WAAY,GACZ,YAAa,AAACqS,GAASA,AAAS,eAATA,GAAyBA,AAAS,eAATA,GAAyBA,AAAS,OAATA,CAC3E,GACA,OAAY,CAAC,aAAc,CACzB,OAAQ,CACN,KAAM,QACN,WApBW,CAAC,QAAS,cAAe,kBAAkB,AAqBxD,EACA,QAAS,CACP,KAAM,SACN,WAzBY,CAAC,IAAK,IAAK,cAAe,SAAU,UAAU,AA0B5D,CACF,GACA,YAAiB,CAAC,aAAc,CAC9B,UAAW,WACb,GACA,OAAY,CAAC,cAAe,CAC1B,OAAQ,CACN,UAAW,CACT,SAAU,GACZ,CACF,EACA,OAAQ,CACN,UAAW,CACT,SAAU,CACZ,CACF,EACA,KAAM,CACJ,WAAY,CACV,OAAQ,CACN,KAAM,aACR,EACA,QAAS,CACP,KAAM,UACN,SAAU,CACZ,CACF,CACF,EACA,KAAM,CACJ,WAAY,CACV,OAAQ,CACN,GAAI,aACN,EACA,QAAS,CACP,KAAM,UACN,OAAQ,SACR,GAAIxS,GAAKA,AAAI,EAAJA,CACX,CACF,CACF,CACF,EACA,OAAM+4D,EACJ,YAAYp5B,CAAK,CAAE3yB,CAAM,CAAE,CACzB,IAAI,CAAC,MAAM,CAAG2yB,EACd,IAAI,CAAC,WAAW,CAAG,IAAI1jC,IACvB,IAAI,CAAC,SAAS,CAAC+Q,EACjB,CACA,UAAUA,CAAM,CAAE,CAChB,GAAI,CAAC,QAASA,GACZ,OAEF,IAAMgsD,EAAgB,IAAI,CAAC,WAAW,CACtC74D,OAAO,mBAAmB,CAAC6M,GAAQ,OAAO,CAACiG,IACzC,IAAMutB,EAAMxzB,CAAM,CAACiG,EAAI,CACvB,GAAI,CAAC,QAASutB,GACZ,OAEF,IAAMo4B,EAAW,CAAC,EAClB,IAAK,IAAMK,KAAUH,EACnBF,CAAQ,CAACK,EAAO,CAAGz4B,CAAG,CAACy4B,EAAO,CAEhC,AAAC,SAAQz4B,EAAI,UAAU,GAAKA,EAAI,UAAU,EAAI,CAACvtB,EAAI,AAAD,EAAG,OAAO,CAAC,AAAC0c,IACxDA,CAAAA,IAAS1c,GAAO,CAAC+lD,EAAc,GAAG,CAACrpC,EAAI,GACzCqpC,EAAc,GAAG,CAACrpC,EAAMipC,EAE5B,EACF,EACF,CACA,gBAAgB/gD,CAAM,CAAE6X,CAAM,CAAE,CAC9B,IAAMwpC,EAAaxpC,EAAO,OAAO,CAC3B7hB,EAAUsrD,AAwEpB,SAA8BthD,CAAM,CAAEqhD,CAAU,EAC9C,GAAI,CAACA,EACH,OAEF,IAAIrrD,EAAUgK,EAAO,OAAO,CAC5B,GAAI,CAAChK,EAAS,CACZgK,EAAO,OAAO,CAAGqhD,EACjB,MACF,CAIA,OAHIrrD,EAAQ,OAAO,EACjBgK,CAAAA,EAAO,OAAO,CAAGhK,EAAU1N,OAAO,MAAM,CAAC,CAAC,EAAG0N,EAAS,CAAC,QAAS,GAAO,YAAa,CAAC,CAAC,EAAC,EAElFA,CACT,EArFyCgK,EAAQqhD,GAC7C,GAAI,CAACrrD,EACH,MAAO,EAAE,CAEX,IAAMurD,EAAa,IAAI,CAAC,iBAAiB,CAACvrD,EAASqrD,GAOnD,OANIA,EAAW,OAAO,EACpBG,AAuDN,UAAkBD,CAAU,CAAEzvC,CAAU,EACtC,IAAM2vC,EAAU,EAAE,CACZvmD,EAAO5S,OAAO,IAAI,CAACwpB,GACzB,IAAK,IAAIpuB,EAAI,EAAGA,EAAIwX,EAAK,MAAM,CAAExX,IAAK,CACpC,IAAMg+D,EAAOH,CAAU,CAACrmD,CAAI,CAACxX,EAAE,CAAC,CAC5Bg+D,GAAQA,EAAK,MAAM,IACrBD,EAAQ,IAAI,CAACC,EAAK,IAAI,GAE1B,CACA,OAAO3nC,QAAQ,GAAG,CAAC0nC,EACrB,GAjEezhD,EAAO,OAAO,CAAC,WAAW,CAAEqhD,GAAY,IAAI,CAAC,KACpDrhD,EAAO,OAAO,CAAGqhD,CACnB,EAAG,KACH,GAEKE,CACT,CACA,kBAAkBvhD,CAAM,CAAE6X,CAAM,CAAE,KAM5Bn0B,EALJ,IAAMy9D,EAAgB,IAAI,CAAC,WAAW,CAChCI,EAAa,EAAE,CACfE,EAAUzhD,EAAO,WAAW,EAAKA,CAAAA,EAAO,WAAW,CAAG,CAAC,GACvDgS,EAAQ1pB,OAAO,IAAI,CAACuvB,GACpB8nC,EAAOhpB,KAAK,GAAG,GAErB,IAAKjzC,EAAIsuB,EAAM,MAAM,CAAG,EAAGtuB,GAAK,EAAG,EAAEA,EAAG,CACtC,IAAMo0B,EAAO9F,CAAK,CAACtuB,EAAE,CACrB,GAAIo0B,AAAmB,MAAnBA,EAAK,MAAM,CAAC,GACd,SAEF,GAAIA,AAAS,YAATA,EAAoB,CACtBypC,EAAW,IAAI,IAAI,IAAI,CAAC,eAAe,CAACvhD,EAAQ6X,IAChD,QACF,CACA,IAAMvyB,EAAQuyB,CAAM,CAACC,EAAK,CACtButB,EAAYoc,CAAO,CAAC3pC,EAAK,CACvB6Q,EAAMw4B,EAAc,GAAG,CAACrpC,GAC9B,GAAIutB,EAAW,CACb,GAAI1c,GAAO0c,EAAU,MAAM,GAAI,CAC7BA,EAAU,MAAM,CAAC1c,EAAKrjC,EAAOq6D,GAC7B,QACF,CACEta,EAAU,MAAM,EAEpB,CACA,GAAI,CAAC1c,GAAO,CAACA,EAAI,QAAQ,CAAE,CACzB3oB,CAAM,CAAC8X,EAAK,CAAGxyB,EACf,QACF,CACAm8D,CAAO,CAAC3pC,EAAK,CAAGutB,EAAY,IAAIkb,EAAU53B,EAAK3oB,EAAQ8X,EAAMxyB,GAC7Di8D,EAAW,IAAI,CAAClc,EAClB,CACA,OAAOkc,CACT,CACA,OAAOvhD,CAAM,CAAE6X,CAAM,CAAE,CACrB,GAAI,AAA0B,IAA1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAQ,CAC/BvvB,OAAO,MAAM,CAAC0X,EAAQ6X,GACtB,MACF,CACA,IAAM0pC,EAAa,IAAI,CAAC,iBAAiB,CAACvhD,EAAQ6X,GAClD,GAAI0pC,EAAW,MAAM,CAEnB,OADA/B,EAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE+B,GACnB,EAEX,CACF,CA2BA,SAASI,EAAU3sD,CAAK,CAAE4sD,CAAe,EACvC,IAAMC,EAAO7sD,GAASA,EAAM,OAAO,EAAI,CAAC,EAClC8sD,EAAUD,EAAK,OAAO,CACtBn8B,EAAMm8B,AAAax9D,KAAAA,IAAbw9D,EAAK,GAAG,CAAiBD,EAAkB,EACjDj8B,EAAMk8B,AAAax9D,KAAAA,IAAbw9D,EAAK,GAAG,CAAiBD,EAAkB,EACvD,MAAO,CACL,MAAOE,EAAUn8B,EAAMD,EACvB,IAAKo8B,EAAUp8B,EAAMC,CACvB,CACF,CAgCA,SAASo8B,EAAwBj6B,CAAK,CAAEk6B,CAAa,MAG/Ct+D,EAAG8hC,EAFP,IAAMtqB,EAAO,EAAE,CACT+mD,EAAWn6B,EAAM,sBAAsB,CAACk6B,GAE9C,IAAKt+D,EAAI,EAAG8hC,EAAOy8B,EAAS,MAAM,CAAEv+D,EAAI8hC,EAAM,EAAE9hC,EAC9CwX,EAAK,IAAI,CAAC+mD,CAAQ,CAACv+D,EAAE,CAAC,KAAK,EAE7B,OAAOwX,CACT,CACA,SAASgnD,EAAWzpC,CAAK,CAAEnzB,CAAK,CAAE68D,CAAO,CAAEnsD,EAAU,CAAC,CAAC,MAGjDtS,EAAG8hC,EAAMqG,EAAcu2B,EAF3B,IAAMlnD,EAAOud,EAAM,IAAI,CACjB4pC,EAAarsD,AAAiB,WAAjBA,EAAQ,IAAI,CAE/B,GAAI1Q,AAAU,OAAVA,GAGJ,IAAK5B,EAAI,EAAG8hC,EAAOtqB,EAAK,MAAM,CAAExX,EAAI8hC,EAAM,EAAE9hC,EAAG,CAE7C,GAAImoC,AADJA,CAAAA,EAAe,CAAC3wB,CAAI,CAACxX,EAAE,AAAD,IACDy+D,EAAS,CAC5B,GAAInsD,EAAQ,GAAG,CACb,SAEF,KACF,CACAosD,EAAa3pC,EAAM,MAAM,CAACoT,EAAa,CACnC,QAAeu2B,IAAgBC,CAAAA,GAAe/8D,AAAU,IAAVA,GAAe,QAAKA,KAAW,QAAK88D,EAAW,GAC/F98D,CAAAA,GAAS88D,CAAS,CAEtB,CACA,OAAO98D,EACT,CAcA,SAASg9D,EAAUttD,CAAK,CAAEutD,CAAI,EAC5B,IAAMC,EAAUxtD,GAASA,EAAM,OAAO,CAAC,OAAO,CAC9C,OAAOwtD,GAAYA,AAAYn+D,KAAAA,IAAZm+D,GAAyBD,AAAel+D,KAAAA,IAAfk+D,EAAK,KAAK,AACxD,CAeA,SAASE,EAAoBhqC,CAAK,CAAEiqC,CAAM,CAAEC,CAAQ,CAAE7xD,CAAI,EACxD,IAAK,IAAMyxD,KAAQG,EAAO,uBAAuB,CAAC5xD,GAAM,OAAO,GAAI,CACjE,IAAMxL,EAAQmzB,CAAK,CAAC8pC,EAAK,KAAK,CAAC,CAC/B,GAAI,AAACI,GAAYr9D,EAAQ,GAAO,CAACq9D,GAAYr9D,EAAQ,EACnD,OAAOi9D,EAAK,KAAK,AAErB,CACA,OAAO,IACT,CACA,SAASK,EAAaC,CAAU,CAAEC,CAAM,MAvBnBC,EAAYC,EAAYT,MA+BvC9pC,EAPJ,GAAM,CAACqP,MAAAA,CAAK,CAAE,YAAay6B,CAAI,CAAC,CAAGM,EAC7BI,EAASn7B,EAAM,OAAO,EAAKA,CAAAA,EAAM,OAAO,CAAG,CAAC,GAC5C,CAACo7B,OAAAA,CAAM,CAAER,OAAAA,CAAM,CAAE,MAAO72B,CAAY,CAAC,CAAG02B,EACxCY,EAAQD,EAAO,IAAI,CACnBE,EAAQV,EAAO,IAAI,CACzB,IAAMtnD,GA7Ba2nD,EA6BKG,EA7BOF,EA6BCN,EA7BWH,EA6BHA,EA5BjC,CAAC,EAAEQ,EAAW,EAAE,CAAC,CAAC,EAAEC,EAAW,EAAE,CAAC,CAAC,EAAET,EAAK,KAAK,EAAIA,EAAK,IAAI,CAAC,CAAC,EA6B/D/8B,EAAOs9B,EAAO,MAAM,CAE1B,IAAK,IAAIp/D,EAAI,EAAGA,EAAI8hC,EAAM,EAAE9hC,EAAG,CAC7B,IAAMq8D,EAAO+C,CAAM,CAACp/D,EAAE,CAChB,CAAC,CAACy/D,EAAM,CAAE/9D,CAAK,CAAE,CAACg+D,EAAM,CAAE99D,CAAK,CAAC,CAAGy6D,CAGzCtnC,CADAA,CAAAA,EAAQ4qC,AADWtD,CAAAA,EAAK,OAAO,EAAKA,CAAAA,EAAK,OAAO,CAAG,CAAC,EAAC,CACnC,CAACqD,EAAM,CAAGE,AA1BhC,SAA0BL,CAAM,CAAEM,CAAQ,CAAEC,CAAU,EACpD,IAAMC,EAAWR,CAAM,CAACM,EAAS,EAAKN,CAAAA,CAAM,CAACM,EAAS,CAAG,CAAC,GAC1D,OAAOE,CAAQ,CAACD,EAAW,EAAKC,CAAAA,CAAQ,CAACD,EAAW,CAAG,CAAC,EAC1D,EAuBiDP,EAAQ7nD,EAAKhW,EAAK,CAC1D,CAACymC,EAAa,CAAGvmC,EACtBmzB,EAAM,IAAI,CAAGgqC,EAAoBhqC,EAAOiqC,EAAQ,GAAMH,EAAK,IAAI,EAC/D9pC,EAAM,OAAO,CAAGgqC,EAAoBhqC,EAAOiqC,EAAQ,GAAOH,EAAK,IAAI,CACrE,CACF,CACA,SAASmB,EAAgB57B,CAAK,CAAEsB,CAAI,EAClC,IAAMu6B,EAAS77B,EAAM,MAAM,CAC3B,OAAOx/B,OAAO,IAAI,CAACq7D,GAAQ,MAAM,CAACvoD,GAAOuoD,CAAM,CAACvoD,EAAI,CAAC,IAAI,GAAKguB,GAAM,KAAK,EAC3E,CAyBA,SAASw6B,EAAYrB,CAAI,CAAEh9B,CAAK,EAC9B,IAAMsG,EAAe02B,EAAK,UAAU,CAAC,KAAK,CACpCn5B,EAAOm5B,EAAK,MAAM,EAAIA,EAAK,MAAM,CAAC,IAAI,CAC5C,IAAI,CAACn5B,EAIL,IAAK,IAAM05B,KADXv9B,EAAQA,GAASg9B,EAAK,OAAO,CACD,CAC1B,IAAMU,EAASH,EAAO,OAAO,CAC7B,GAAI,CAACG,GAAUA,AAAiB5+D,KAAAA,IAAjB4+D,CAAM,CAAC75B,EAAK,EAAkB65B,AAA+B5+D,KAAAA,IAA/B4+D,CAAM,CAAC75B,EAAK,CAACyC,EAAa,CACrE,MAEF,QAAOo3B,CAAM,CAAC75B,EAAK,CAACyC,EAAa,AACnC,CACF,CACA,IAAMg4B,EAAqB,AAACC,GAASA,AAAS,UAATA,GAAoBA,AAAS,SAATA,EACnDC,EAAmB,CAACC,EAAQC,IAAWA,EAASD,EAAS17D,OAAO,MAAM,CAAC,CAAC,EAAG07D,GAC3EtrC,EAAc,CAACwrC,EAAU3B,EAAMz6B,IAAUo8B,GAAY,CAAC3B,EAAK,MAAM,EAAIA,EAAK,QAAQ,EACnF,CAAC,KAAMR,EAAwBj6B,EAAO,IAAO,OAAQ,IAAI,CAC9D,OAAMq8B,EACJ,YAAYr8B,CAAK,CAAE+D,CAAY,CAAE,CAC/B,IAAI,CAAC,KAAK,CAAG/D,EACb,IAAI,CAAC,IAAI,CAAGA,EAAM,GAAG,CACrB,IAAI,CAAC,KAAK,CAAG+D,EACb,IAAI,CAAC,eAAe,CAAG,CAAC,EACxB,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,OAAO,GAC/B,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAClC,IAAI,CAAC,OAAO,CAAGxnC,KAAAA,EACf,IAAI,CAAC,QAAQ,CAAG,GAChB,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,cAAc,CAAGA,KAAAA,EACtB,IAAI,CAAC,UAAU,CAAGA,KAAAA,EAClB,IAAI,CAAC,UAAU,CAAGA,KAAAA,EAClB,IAAI,CAAC,mBAAmB,CAAG,GAC3B,IAAI,CAAC,kBAAkB,CAAG,GAC1B,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,SAAS,CAAG,EAAE,CACnB,IAAI,CAAC,UAAU,EACjB,CACA,YAAa,CACX,IAAMk+D,EAAO,IAAI,CAAC,WAAW,CAC7B,IAAI,CAAC,SAAS,GACd,IAAI,CAAC,UAAU,GACfA,EAAK,QAAQ,CAAGD,EAAUC,EAAK,MAAM,CAAEA,GACvC,IAAI,CAAC,WAAW,EAClB,CACA,YAAY12B,CAAY,CAAE,CACpB,IAAI,CAAC,KAAK,GAAKA,GACjB+3B,EAAY,IAAI,CAAC,WAAW,EAE9B,IAAI,CAAC,KAAK,CAAG/3B,CACf,CACA,YAAa,CACX,IAAM/D,EAAQ,IAAI,CAAC,KAAK,CAClBy6B,EAAO,IAAI,CAAC,WAAW,CACvB72B,EAAU,IAAI,CAAC,UAAU,GACzB04B,EAAW,CAACh7B,EAAM/lC,EAAGoD,EAAGuH,IAAMo7B,AAAS,MAATA,EAAe/lC,EAAI+lC,AAAS,MAATA,EAAep7B,EAAIvH,EACpE49D,EAAM9B,EAAK,OAAO,CAAG,QAAe72B,EAAQ,OAAO,CAAEg4B,EAAgB57B,EAAO,MAC5Ew8B,EAAM/B,EAAK,OAAO,CAAG,QAAe72B,EAAQ,OAAO,CAAEg4B,EAAgB57B,EAAO,MAC5Ey8B,EAAMhC,EAAK,OAAO,CAAG,QAAe72B,EAAQ,OAAO,CAAEg4B,EAAgB57B,EAAO,MAC5E08B,EAAYjC,EAAK,SAAS,CAC1BkC,EAAMlC,EAAK,OAAO,CAAG6B,EAASI,EAAWH,EAAKC,EAAKC,GACnDG,EAAMnC,EAAK,OAAO,CAAG6B,EAASI,EAAWF,EAAKD,EAAKE,EACzDhC,CAAAA,EAAK,MAAM,CAAG,IAAI,CAAC,aAAa,CAAC8B,GACjC9B,EAAK,MAAM,CAAG,IAAI,CAAC,aAAa,CAAC+B,GACjC/B,EAAK,MAAM,CAAG,IAAI,CAAC,aAAa,CAACgC,GACjChC,EAAK,MAAM,CAAG,IAAI,CAAC,aAAa,CAACkC,GACjClC,EAAK,MAAM,CAAG,IAAI,CAAC,aAAa,CAACmC,EACnC,CACA,YAAa,CACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,AAC7C,CACA,SAAU,CACR,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAC7C,CACA,cAAcC,CAAO,CAAE,CACrB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAACA,EAAQ,AACnC,CACA,eAAe3vD,CAAK,CAAE,CACpB,IAAMutD,EAAO,IAAI,CAAC,WAAW,CAC7B,OAAOvtD,IAAUutD,EAAK,MAAM,CACxBA,EAAK,MAAM,CACXA,EAAK,MAAM,AACjB,CACA,OAAQ,CACN,IAAI,CAAC,OAAO,CAAC,QACf,CACA,UAAW,CACT,IAAMA,EAAO,IAAI,CAAC,WAAW,AACzB,KAAI,CAAC,KAAK,EACZ,QAAoB,IAAI,CAAC,KAAK,CAAE,IAAI,EAElCA,EAAK,QAAQ,EACfqB,EAAYrB,EAEhB,CACA,YAAa,CACX,IAAM72B,EAAU,IAAI,CAAC,UAAU,GACzBvnC,EAAOunC,EAAQ,IAAI,EAAKA,CAAAA,EAAQ,IAAI,CAAG,EAAE,AAAD,EACxCk5B,EAAQ,IAAI,CAAC,KAAK,CACxB,GAAI,QAASzgE,GACX,IAAI,CAAC,KAAK,CAAG0gE,AA7LnB,SAAkC1gE,CAAI,MAGhCT,EAAG8hC,EAAMpqB,EAFb,IAAMF,EAAO5S,OAAO,IAAI,CAACnE,GACnB2gE,EAAQ,AAAIxhE,MAAM4X,EAAK,MAAM,EAEnC,IAAKxX,EAAI,EAAG8hC,EAAOtqB,EAAK,MAAM,CAAExX,EAAI8hC,EAAM,EAAE9hC,EAC1C0X,EAAMF,CAAI,CAACxX,EAAE,CACbohE,CAAK,CAACphE,EAAE,CAAG,CACT,EAAG0X,EACH,EAAGjX,CAAI,CAACiX,EAAI,AACd,EAEF,OAAO0pD,CACT,EAiL4C3gE,QACjC,GAAIygE,IAAUzgE,EAAM,CACzB,GAAIygE,EAAO,CACT,QAAoBA,EAAO,IAAI,EAC/B,IAAMrC,EAAO,IAAI,CAAC,WAAW,CAC7BqB,EAAYrB,GACZA,EAAK,OAAO,CAAG,EAAE,AACnB,CACIp+D,GAAQmE,OAAO,YAAY,CAACnE,IAC9B,QAAkBA,EAAM,IAAI,EAE9B,IAAI,CAAC,SAAS,CAAG,EAAE,CACnB,IAAI,CAAC,KAAK,CAAGA,CACf,CACF,CACA,aAAc,CACZ,IAAMo+D,EAAO,IAAI,CAAC,WAAW,CAC7B,IAAI,CAAC,UAAU,GACX,IAAI,CAAC,kBAAkB,EACzBA,CAAAA,EAAK,OAAO,CAAG,IAAI,IAAI,CAAC,kBAAkB,AAAC,CAE/C,CACA,sBAAsBwC,CAAgB,CAAE,CACtC,IAAMxC,EAAO,IAAI,CAAC,WAAW,CACvB72B,EAAU,IAAI,CAAC,UAAU,GAC3Bs5B,EAAe,GACnB,IAAI,CAAC,UAAU,GACf,IAAMC,EAAa1C,EAAK,QAAQ,AAChCA,CAAAA,EAAK,QAAQ,CAAGD,EAAUC,EAAK,MAAM,CAAEA,GACnCA,EAAK,KAAK,GAAK72B,EAAQ,KAAK,GAC9Bs5B,EAAe,GACfpB,EAAYrB,GACZA,EAAK,KAAK,CAAG72B,EAAQ,KAAK,EAE5B,IAAI,CAAC,eAAe,CAACq5B,GACjBC,CAAAA,GAAgBC,IAAe1C,EAAK,QAAQ,AAAD,GAC7CK,EAAa,IAAI,CAAEL,EAAK,OAAO,CAEnC,CACA,WAAY,CACV,IAAMptD,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAC1B+vD,EAAY/vD,EAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAC9CgwD,EAAShwD,EAAO,eAAe,CAAC,IAAI,CAAC,UAAU,GAAI+vD,EAAW,GACpE,KAAI,CAAC,OAAO,CAAG/vD,EAAO,cAAc,CAACgwD,EAAQ,IAAI,CAAC,UAAU,IAC5D,IAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACpC,IAAI,CAAC,eAAe,CAAG,CAAC,CAC1B,CACA,MAAM1/D,CAAK,CAAE3B,CAAK,CAAE,KAMdJ,EAAGu0D,EAAK6K,EALZ,GAAM,CAAC,YAAaP,CAAI,CAAE,MAAOp+D,CAAI,CAAC,CAAG,IAAI,CACvC,CAAC++D,OAAAA,CAAM,CAAEkC,SAAAA,CAAQ,CAAC,CAAG7C,EACrBY,EAAQD,EAAO,IAAI,CACrBmC,EAAS5/D,AAAU,IAAVA,GAAe3B,IAAUK,EAAK,MAAM,EAAUo+D,EAAK,OAAO,CACnE98B,EAAOhgC,EAAQ,GAAK88D,EAAK,OAAO,CAAC98D,EAAQ,EAAE,CAE/C,GAAI,AAAkB,KAAlB,IAAI,CAAC,QAAQ,CACf88D,EAAK,OAAO,CAAGp+D,EACfo+D,EAAK,OAAO,CAAG,GACfO,EAAS3+D,MACJ,CAEH2+D,EADE,QAAQ3+D,CAAI,CAACsB,EAAM,EACZ,IAAI,CAAC,cAAc,CAAC88D,EAAMp+D,EAAMsB,EAAO3B,GACvC,QAASK,CAAI,CAACsB,EAAM,EACpB,IAAI,CAAC,eAAe,CAAC88D,EAAMp+D,EAAMsB,EAAO3B,GAExC,IAAI,CAAC,kBAAkB,CAACy+D,EAAMp+D,EAAMsB,EAAO3B,GAEtD,IAAMwhE,EAA6B,IAAMrN,AAAe,OAAfA,CAAG,CAACkL,EAAM,EAAc19B,GAAQwyB,CAAG,CAACkL,EAAM,CAAG19B,CAAI,CAAC09B,EAAM,CACjG,IAAKz/D,EAAI,EAAGA,EAAII,EAAO,EAAEJ,EACvB6+D,EAAK,OAAO,CAAC7+D,EAAI+B,EAAM,CAAGwyD,EAAM6K,CAAM,CAACp/D,EAAE,CACrC2hE,IACEC,KACFD,CAAAA,EAAS,EAAI,EAEf5/B,EAAOwyB,EAGXsK,CAAAA,EAAK,OAAO,CAAG8C,CACjB,CACID,GACFxC,EAAa,IAAI,CAAEE,EAEvB,CACA,mBAAmBP,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,KAOvCJ,EAAS0B,EANb,GAAM,CAAC89D,OAAAA,CAAM,CAAER,OAAAA,CAAM,CAAC,CAAGH,EACnBY,EAAQD,EAAO,IAAI,CACnBE,EAAQV,EAAO,IAAI,CACnBxzC,EAASg0C,EAAO,SAAS,GACzBqC,EAAcrC,IAAWR,EACzBI,EAAS,AAAIx/D,MAAMQ,GAEzB,IAAKJ,EAAI,EAAiBA,EAAPI,EAAiB,EAAEJ,EACpC0B,EAAQ1B,EAAI+B,EACZq9D,CAAM,CAACp/D,EAAE,CAAG,CACV,CAACy/D,EAAM,CAAEoC,GAAerC,EAAO,KAAK,CAACh0C,CAAM,CAAC9pB,EAAM,CAAEA,GACpD,CAACg+D,EAAM,CAAEV,EAAO,KAAK,CAACv+D,CAAI,CAACiB,EAAM,CAAEA,EACrC,EAEF,OAAO09D,CACT,CACA,eAAeP,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,KAGnCJ,EAAS0B,EAAO26D,EAFpB,GAAM,CAACyF,OAAAA,CAAM,CAAEC,OAAAA,CAAM,CAAC,CAAGlD,EACnBO,EAAS,AAAIx/D,MAAMQ,GAEzB,IAAKJ,EAAI,EAAiBA,EAAPI,EAAiB,EAAEJ,EAEpCq8D,EAAO57D,CAAI,CADXiB,EAAQ1B,EAAI+B,EACM,CAClBq9D,CAAM,CAACp/D,EAAE,CAAG,CACV,EAAG8hE,EAAO,KAAK,CAACzF,CAAI,CAAC,EAAE,CAAE36D,GACzB,EAAGqgE,EAAO,KAAK,CAAC1F,CAAI,CAAC,EAAE,CAAE36D,EAC3B,EAEF,OAAO09D,CACT,CACA,gBAAgBP,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,KAIpCJ,EAAS0B,EAAO26D,EAHpB,GAAM,CAACyF,OAAAA,CAAM,CAAEC,OAAAA,CAAM,CAAC,CAAGlD,EACnB,CAACmD,SAAAA,EAAW,GAAG,CAAEC,SAAAA,EAAW,GAAG,CAAC,CAAG,IAAI,CAAC,QAAQ,CAChD7C,EAAS,AAAIx/D,MAAMQ,GAEzB,IAAKJ,EAAI,EAAiBA,EAAPI,EAAiB,EAAEJ,EAEpCq8D,EAAO57D,CAAI,CADXiB,EAAQ1B,EAAI+B,EACM,CAClBq9D,CAAM,CAACp/D,EAAE,CAAG,CACV,EAAG8hE,EAAO,KAAK,CAAC,QAAiBzF,EAAM2F,GAAWtgE,GAClD,EAAGqgE,EAAO,KAAK,CAAC,QAAiB1F,EAAM4F,GAAWvgE,EACpD,EAEF,OAAO09D,CACT,CACA,UAAU19D,CAAK,CAAE,CACf,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAACA,EAAM,AACxC,CACA,eAAeA,CAAK,CAAE,CACpB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAACA,EAAM,AACrC,CACA,WAAW4P,CAAK,CAAE8tD,CAAM,CAAEgB,CAAI,CAAE,CAC9B,IAAMh8B,EAAQ,IAAI,CAAC,KAAK,CAClBy6B,EAAO,IAAI,CAAC,WAAW,CACvBj9D,EAAQw9D,CAAM,CAAC9tD,EAAM,IAAI,CAAC,CAKhC,OAAOktD,EAJO,CACZ,KAAMH,EAAwBj6B,EAAO,IACrC,OAAQg7B,EAAO,OAAO,CAAC9tD,EAAM,IAAI,CAAC,AACpC,EACyB1P,EAAOi9D,EAAK,KAAK,CAAE,CAACuB,KAAAA,CAAI,EACnD,CACA,sBAAsB19B,CAAK,CAAEpxB,CAAK,CAAE8tD,CAAM,CAAErqC,CAAK,CAAE,CACjD,IAAMmtC,EAAc9C,CAAM,CAAC9tD,EAAM,IAAI,CAAC,CAClC1P,EAAQsgE,AAAgB,OAAhBA,EAAuBvqB,IAAMuqB,EACnC/tC,EAASY,GAASqqC,EAAO,OAAO,CAAC9tD,EAAM,IAAI,CAAC,CAC9CyjB,GAASZ,IACXY,EAAM,MAAM,CAAGZ,EACfvyB,EAAQ48D,EAAWzpC,EAAOmtC,EAAa,IAAI,CAAC,WAAW,CAAC,KAAK,GAE/Dx/B,EAAM,GAAG,CAAGxiC,KAAK,GAAG,CAACwiC,EAAM,GAAG,CAAE9gC,GAChC8gC,EAAM,GAAG,CAAGxiC,KAAK,GAAG,CAACwiC,EAAM,GAAG,CAAE9gC,EAClC,CACA,UAAU0P,CAAK,CAAEkvD,CAAQ,CAAE,KASrBxgE,EAAGo/D,EARP,IAAMP,EAAO,IAAI,CAAC,WAAW,CACvBsD,EAAUtD,EAAK,OAAO,CACtB8C,EAAS9C,EAAK,OAAO,EAAIvtD,IAAUutD,EAAK,MAAM,CAC9C/8B,EAAOqgC,EAAQ,MAAM,CACrBC,EAAa,IAAI,CAAC,cAAc,CAAC9wD,GACjCyjB,EAAQC,EAAYwrC,EAAU3B,EAAM,IAAI,CAAC,KAAK,EAC9Cn8B,EAAQ,CAAC,IAAK0C,OAAO,iBAAiB,CAAE,IAAKA,OAAO,iBAAiB,EACrE,CAAC,IAAKi9B,CAAQ,CAAE,IAAKC,CAAQ,CAAC,CAAGC,AA5U3C,SAAuBjxD,CAAK,EAC1B,GAAM,CAAC0wB,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAEugC,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAC,CAAGnxD,EAAM,aAAa,GAC9D,MAAO,CACL,IAAKkxD,EAAaxgC,EAAMoD,OAAO,iBAAiB,CAChD,IAAKq9B,EAAaxgC,EAAMmD,OAAO,iBAAiB,AAClD,CACF,EAsUyDg9B,GAErD,SAASM,IAEP,IAAMhE,EAAaU,AADnBA,CAAAA,EAAS+C,CAAO,CAACniE,EAAE,AAAD,CACO,CAACoiE,EAAW,IAAI,CAAC,CAC1C,MAAO,CAAC,QAAehD,CAAM,CAAC9tD,EAAM,IAAI,CAAC,GAAK+wD,EAAW3D,GAAc4D,EAAW5D,CACpF,CACA,IAAK1+D,EAAI,EAAGA,EAAI8hC,EAAM,EAAE9hC,EAAG,CACzB,IAAI0iE,IAIJ,IADA,IAAI,CAAC,qBAAqB,CAAChgC,EAAOpxB,EAAO8tD,EAAQrqC,GAC7C4sC,EACF,KACF,CACF,CACA,GAAIA,EACF,IAAK3hE,EAAI8hC,EAAO,EAAG9hC,GAAK,EAAG,EAAEA,EAAG,CAC9B,IAAI0iE,KAGJ,IAAI,CAAC,qBAAqB,CAAChgC,EAAOpxB,EAAO8tD,EAAQrqC,GACjD,MACF,CAEF,OAAO2N,CACT,CACA,mBAAmBpxB,CAAK,CAAE,KAGpBtR,EAAG8hC,EAAMlgC,EAFb,IAAMw9D,EAAS,IAAI,CAAC,WAAW,CAAC,OAAO,CACjCjrC,EAAS,EAAE,CAEjB,IAAKn0B,EAAI,EAAG8hC,EAAOs9B,EAAO,MAAM,CAAEp/D,EAAI8hC,EAAM,EAAE9hC,EAC5C4B,EAAQw9D,CAAM,CAACp/D,EAAE,CAACsR,EAAM,IAAI,CAAC,CACzB,QAAe1P,IACjBuyB,EAAO,IAAI,CAACvyB,GAGhB,OAAOuyB,CACT,CACA,gBAAiB,CACf,MAAO,EACT,CACA,iBAAiBzyB,CAAK,CAAE,CACtB,IAAMm9D,EAAO,IAAI,CAAC,WAAW,CACvBW,EAASX,EAAK,MAAM,CACpBG,EAASH,EAAK,MAAM,CACpBO,EAAS,IAAI,CAAC,SAAS,CAAC19D,GAC9B,MAAO,CACL,MAAO89D,EAAS,GAAKA,EAAO,gBAAgB,CAACJ,CAAM,CAACI,EAAO,IAAI,CAAC,EAAI,GACpE,MAAOR,EAAS,GAAKA,EAAO,gBAAgB,CAACI,CAAM,CAACJ,EAAO,IAAI,CAAC,EAAI,EACtE,CACF,CACA,QAAQoB,CAAI,CAAE,KArcAx+D,EAscZ,IArcE7B,EAAGuK,EAAGnI,EAAG+G,EAqcL21D,EAAO,IAAI,CAAC,WAAW,CAC7B,IAAI,CAAC,MAAM,CAACuB,GAAQ,UACpBvB,CAAAA,EAAK,KAAK,EAxcEj9D,EAwcQ,QAAe,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE+gE,AArd1D,SAAqBb,CAAM,CAAEC,CAAM,CAAE7D,CAAe,EAClD,GAAIA,AAAoB,KAApBA,EACF,MAAO,GAET,IAAMv+D,EAAIs+D,EAAU6D,EAAQ5D,GACtBn7D,EAAIk7D,EAAU8D,EAAQ7D,GAC5B,MAAO,CACL,IAAKn7D,EAAE,GAAG,CACV,MAAOpD,EAAE,GAAG,CACZ,OAAQoD,EAAE,KAAK,CACf,KAAMpD,EAAE,KAAK,AACf,CACF,EAycsEk/D,EAAK,MAAM,CAAEA,EAAK,MAAM,CAAE,IAAI,CAAC,cAAc,KAtc7G,QAASj9D,IACX7B,EAAI6B,EAAM,GAAG,CACb0I,EAAI1I,EAAM,KAAK,CACfO,EAAIP,EAAM,MAAM,CAChBsH,EAAItH,EAAM,IAAI,EAEd7B,EAAIuK,EAAInI,EAAI+G,EAAItH,EAEX,CACL,IAAK7B,EACL,MAAOuK,EACP,OAAQnI,EACR,KAAM+G,EACN,SAAUtH,AAAU,KAAVA,CACZ,EAybA,CACA,OAAOw+D,CAAI,CAAE,CAAC,CACd,MAAO,KAUDpgE,EATJ,IAAMo1B,EAAM,IAAI,CAAC,IAAI,CACfgP,EAAQ,IAAI,CAAC,KAAK,CAClBy6B,EAAO,IAAI,CAAC,WAAW,CACvB1wD,EAAW0wD,EAAK,IAAI,EAAI,EAAE,CAC1B/7B,EAAOsB,EAAM,SAAS,CACtBw+B,EAAS,EAAE,CACX7gE,EAAQ,IAAI,CAAC,UAAU,EAAI,EAC3B3B,EAAQ,IAAI,CAAC,UAAU,EAAK+N,EAAS,MAAM,CAAGpM,EAC9C8gE,EAA0B,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAKpE,IAHIhE,EAAK,OAAO,EACdA,EAAK,OAAO,CAAC,IAAI,CAACzpC,EAAK0N,EAAM/gC,EAAO3B,GAEjCJ,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAO,EAAEJ,EAAG,CACtC,IAAMqN,EAAUc,CAAQ,CAACnO,EAAE,CAC3B,IAAIqN,EAAQ,MAAM,CAGdA,EAAQ,MAAM,EAAIw1D,EACpBD,EAAO,IAAI,CAACv1D,GAEZA,EAAQ,IAAI,CAAC+nB,EAAK0N,EAEtB,CACA,IAAK9iC,EAAI,EAAGA,EAAI4iE,EAAO,MAAM,CAAE,EAAE5iE,EAC/B4iE,CAAM,CAAC5iE,EAAE,CAAC,IAAI,CAACo1B,EAAK0N,EAExB,CACA,SAASphC,CAAK,CAAEkhE,CAAM,CAAE,CACtB,IAAMxC,EAAOwC,EAAS,SAAW,UACjC,OAAOlhE,AAAUf,KAAAA,IAAVe,GAAuB,IAAI,CAAC,WAAW,CAAC,OAAO,CAClD,IAAI,CAAC,4BAA4B,CAAC0+D,GAClC,IAAI,CAAC,yBAAyB,CAAC1+D,GAAS,EAAG0+D,EACjD,CACA,WAAW1+D,CAAK,CAAEkhE,CAAM,CAAExC,CAAI,CAAE,KAlXPh8D,EAAQ1C,EAAO2L,EAZZjJ,EAAQ1C,MAgY9ByL,EADJ,IAAM66B,EAAU,IAAI,CAAC,UAAU,GAE/B,GAAItmC,GAAS,GAAKA,EAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAE,EACtD,IAAM2L,EAAU,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC3L,EAAM,AAG5CyL,CAFAA,CAAAA,EAAUE,EAAQ,QAAQ,EACvBA,CAAAA,EAAQ,QAAQ,EAxXEjJ,EAwXmB,IAAI,CAAC,UAAU,GAxX1B1C,EAwX8BA,EAxXvB2L,EAwX8BA,EAvX/D,QAAcjJ,EAAQ,CAC3B,OAAQ,GACR,UAAW1C,EACX,OAAQf,KAAAA,EACR,IAAKA,KAAAA,EACL0M,QAAAA,EACA3L,MAAAA,EACA,KAAM,UACN,KAAM,MACR,GA8W6E,CAAC,EAClE,MAAM,CAAG,IAAI,CAAC,SAAS,CAACA,GAChCyL,EAAQ,GAAG,CAAG66B,EAAQ,IAAI,CAACtmC,EAAM,CACjCyL,EAAQ,KAAK,CAAGA,EAAQ,SAAS,CAAGzL,CACtC,KAAO,EAGLyL,AAFAA,CAAAA,EAAU,IAAI,CAAC,QAAQ,EACpB,KAAI,CAAC,QAAQ,EA1YQ/I,EA0YgB,IAAI,CAAC,KAAK,CAAC,UAAU,GA1Y7B1C,EA0YiC,IAAI,CAAC,KAAK,CAzYxE,QAAc0C,EACnB,CACE,OAAQ,GACR,QAASzD,KAAAA,EACT,aAAce,EACdA,MAAAA,EACA,KAAM,UACN,KAAM,SACR,GAiY6E,CAAC,EACpE,OAAO,CAAGsmC,EAClB76B,EAAQ,KAAK,CAAGA,EAAQ,YAAY,CAAG,IAAI,CAAC,KAAK,AACnD,CAGA,OAFAA,EAAQ,MAAM,CAAG,CAAC,CAACy1D,EACnBz1D,EAAQ,IAAI,CAAGizD,EACRjzD,CACT,CACA,6BAA6BizD,CAAI,CAAE,CACjC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAEA,EACjE,CACA,0BAA0B1+D,CAAK,CAAE0+D,CAAI,CAAE,CACrC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAEA,EAAM1+D,EACpE,CACA,uBAAuB6yB,CAAW,CAAE6rC,EAAO,SAAS,CAAE1+D,CAAK,CAAE,CAC3D,IAAMkhE,EAASxC,AAAS,WAATA,EACThuC,EAAQ,IAAI,CAAC,eAAe,CAC5B0wC,EAAWvuC,EAAc,IAAM6rC,EAC/BE,EAASluC,CAAK,CAAC0wC,EAAS,CACxBC,EAAU,IAAI,CAAC,mBAAmB,EAAI,QAAQrhE,GACpD,GAAI4+D,EACF,OAAOD,EAAiBC,EAAQyC,GAElC,IAAMtxD,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAC1B+vD,EAAY/vD,EAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAE8iB,GACvDyuC,EAAWJ,EAAS,CAAC,CAAC,EAAEruC,EAAY,KAAK,CAAC,CAAE,QAASA,EAAa,GAAG,CAAG,CAACA,EAAa,GAAG,CACzFktC,EAAShwD,EAAO,eAAe,CAAC,IAAI,CAAC,UAAU,GAAI+vD,GACnDyB,EAAQr+D,OAAO,IAAI,CAAC,YAAiB,CAAC2vB,EAAY,EAElDJ,EAAS1iB,EAAO,mBAAmB,CAACgwD,EAAQwB,EADlC,IAAM,IAAI,CAAC,UAAU,CAACvhE,EAAOkhE,GACqBI,GAKlE,OAJI7uC,EAAO,OAAO,GAChBA,EAAO,OAAO,CAAG4uC,EACjB3wC,CAAK,CAAC0wC,EAAS,CAAGl+D,OAAO,MAAM,CAACy7D,EAAiBlsC,EAAQ4uC,KAEpD5uC,CACT,CACA,mBAAmBzyB,CAAK,CAAEwhE,CAAU,CAAEN,CAAM,CAAE,KAQxCtwD,EAPJ,IAAM8xB,EAAQ,IAAI,CAAC,KAAK,CAClBhS,EAAQ,IAAI,CAAC,eAAe,CAC5B0wC,EAAW,CAAC,UAAU,EAAEI,EAAW,CAAC,CACpC5C,EAASluC,CAAK,CAAC0wC,EAAS,CAC9B,GAAIxC,EACF,OAAOA,EAGT,GAAIl8B,AAA4B,KAA5BA,EAAM,OAAO,CAAC,SAAS,CAAY,CACrC,IAAM3yB,EAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAC1B+vD,EAAY/vD,EAAO,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAEyxD,GACzDzB,EAAShwD,EAAO,eAAe,CAAC,IAAI,CAAC,UAAU,GAAI+vD,GACzDlvD,EAAUb,EAAO,cAAc,CAACgwD,EAAQ,IAAI,CAAC,UAAU,CAAC//D,EAAOkhE,EAAQM,GACzE,CACA,IAAMrF,EAAa,IAAIL,EAAWp5B,EAAO9xB,GAAWA,EAAQ,UAAU,EAItE,OAHIA,GAAWA,EAAQ,UAAU,EAC/B8f,CAAAA,CAAK,CAAC0wC,EAAS,CAAGl+D,OAAO,MAAM,CAACi5D,EAAU,EAErCA,CACT,CACA,iBAAiBvrD,CAAO,CAAE,CACxB,IAAI,CAACA,EAAQ,OAAO,CAGpB,OAAO,IAAI,CAAC,cAAc,EAAK,KAAI,CAAC,cAAc,CAAG1N,OAAO,MAAM,CAAC,CAAC,EAAG0N,EAAO,CAChF,CACA,eAAe8tD,CAAI,CAAE+C,CAAa,CAAE,CAClC,MAAO,CAACA,GAAiBhD,EAAmBC,IAAS,IAAI,CAAC,KAAK,CAAC,mBAAmB,AACrF,CACA,kBAAkBr+D,CAAK,CAAEq+D,CAAI,CAAE,CAC7B,IAAMgD,EAAY,IAAI,CAAC,yBAAyB,CAACrhE,EAAOq+D,GAClDiD,EAA0B,IAAI,CAAC,cAAc,CAC7CF,EAAgB,IAAI,CAAC,gBAAgB,CAACC,GACtCE,EAAiB,IAAI,CAAC,cAAc,CAAClD,EAAM+C,IAAmBA,IAAkBE,EAEtF,OADA,IAAI,CAAC,mBAAmB,CAACF,EAAe/C,EAAMgD,GACvC,CAACD,cAAAA,EAAeG,eAAAA,CAAc,CACvC,CACA,cAAcj2D,CAAO,CAAE3L,CAAK,CAAE0sB,CAAU,CAAEgyC,CAAI,CAAE,CAC1CD,EAAmBC,GACrBx7D,OAAO,MAAM,CAACyI,EAAS+gB,GAEvB,IAAI,CAAC,kBAAkB,CAAC1sB,EAAO0+D,GAAM,MAAM,CAAC/yD,EAAS+gB,EAEzD,CACA,oBAAoB+0C,CAAa,CAAE/C,CAAI,CAAEzC,CAAU,CAAE,CAC/CwF,GAAiB,CAAChD,EAAmBC,IACvC,IAAI,CAAC,kBAAkB,CAACz/D,KAAAA,EAAWy/D,GAAM,MAAM,CAAC+C,EAAexF,EAEnE,CACA,UAAUtwD,CAAO,CAAE3L,CAAK,CAAE0+D,CAAI,CAAEwC,CAAM,CAAE,CACtCv1D,EAAQ,MAAM,CAAGu1D,EACjB,IAAMtwD,EAAU,IAAI,CAAC,QAAQ,CAAC5Q,EAAOkhE,GACrC,IAAI,CAAC,kBAAkB,CAAClhE,EAAO0+D,EAAMwC,GAAQ,MAAM,CAACv1D,EAAS,CAC3D,QAAS,AAAC,CAACu1D,GAAU,IAAI,CAAC,gBAAgB,CAACtwD,IAAaA,CAC1D,EACF,CACA,iBAAiBjF,CAAO,CAAE86B,CAAY,CAAEzmC,CAAK,CAAE,CAC7C,IAAI,CAAC,SAAS,CAAC2L,EAAS3L,EAAO,SAAU,GAC3C,CACA,cAAc2L,CAAO,CAAE86B,CAAY,CAAEzmC,CAAK,CAAE,CAC1C,IAAI,CAAC,SAAS,CAAC2L,EAAS3L,EAAO,SAAU,GAC3C,CACA,0BAA2B,CACzB,IAAM2L,EAAU,IAAI,CAAC,WAAW,CAAC,OAAO,CACpCA,GACF,IAAI,CAAC,SAAS,CAACA,EAAS1M,KAAAA,EAAW,SAAU,GAEjD,CACA,uBAAwB,CACtB,IAAM0M,EAAU,IAAI,CAAC,WAAW,CAAC,OAAO,CACpCA,GACF,IAAI,CAAC,SAAS,CAACA,EAAS1M,KAAAA,EAAW,SAAU,GAEjD,CACA,gBAAgB0gE,CAAgB,CAAE,CAChC,IAAM5gE,EAAO,IAAI,CAAC,KAAK,CACjB0N,EAAW,IAAI,CAAC,WAAW,CAAC,IAAI,CACtC,IAAK,GAAM,CAACmvD,EAAQiG,EAAMC,EAAK,GAAI,IAAI,CAAC,SAAS,CAC/C,IAAI,CAAClG,EAAO,CAACiG,EAAMC,EAErB,KAAI,CAAC,SAAS,CAAG,EAAE,CACnB,IAAMC,EAAUt1D,EAAS,MAAM,CACzBu1D,EAAUjjE,EAAK,MAAM,CACrBL,EAAQF,KAAK,GAAG,CAACwjE,EAASD,GAC5BrjE,GACF,IAAI,CAAC,KAAK,CAAC,EAAGA,GAEZsjE,EAAUD,EACZ,IAAI,CAAC,eAAe,CAACA,EAASC,EAAUD,EAASpC,GACxCqC,EAAUD,GACnB,IAAI,CAAC,eAAe,CAACC,EAASD,EAAUC,EAE5C,CACA,gBAAgB3hE,CAAK,CAAE3B,CAAK,CAAEihE,EAAmB,EAAI,CAAE,KAIjDrhE,EAHJ,IAAM6+D,EAAO,IAAI,CAAC,WAAW,CACvBp+D,EAAOo+D,EAAK,IAAI,CAChB/8D,EAAMC,EAAQ3B,EAEdujE,EAAO,AAACl3B,IAEZ,IADAA,EAAI,MAAM,EAAIrsC,EACTJ,EAAIysC,EAAI,MAAM,CAAG,EAAGzsC,GAAK8B,EAAK9B,IACjCysC,CAAG,CAACzsC,EAAE,CAAGysC,CAAG,CAACzsC,EAAII,EAAM,AAE3B,EAEA,IADAujE,EAAKljE,GACAT,EAAI+B,EAAO/B,EAAI8B,EAAK,EAAE9B,EACzBS,CAAI,CAACT,EAAE,CAAG,IAAI,IAAI,CAAC,eAAe,AAEhC,KAAI,CAAC,QAAQ,EACf2jE,EAAK9E,EAAK,OAAO,EAEnB,IAAI,CAAC,KAAK,CAAC98D,EAAO3B,GACdihE,GACF,IAAI,CAAC,cAAc,CAAC5gE,EAAMsB,EAAO3B,EAAO,QAE5C,CACA,eAAeiN,CAAO,CAAEtL,CAAK,CAAE3B,CAAK,CAAEggE,CAAI,CAAE,CAAC,CAC7C,gBAAgBr+D,CAAK,CAAE3B,CAAK,CAAE,CAC5B,IAAMy+D,EAAO,IAAI,CAAC,WAAW,CAC7B,GAAI,IAAI,CAAC,QAAQ,CAAE,CACjB,IAAM+E,EAAU/E,EAAK,OAAO,CAAC,MAAM,CAAC98D,EAAO3B,EACvCy+D,CAAAA,EAAK,QAAQ,EACfqB,EAAYrB,EAAM+E,EAEtB,CACA/E,EAAK,IAAI,CAAC,MAAM,CAAC98D,EAAO3B,EAC1B,CACA,MAAMksB,CAAI,CAAE,CACV,GAAI,IAAI,CAAC,QAAQ,CACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA,OACf,CACL,GAAM,CAACgxC,EAAQiG,EAAMC,EAAK,CAAGl3C,EAC7B,IAAI,CAACgxC,EAAO,CAACiG,EAAMC,EACrB,CACA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAKl3C,EAAK,CACpD,CACA,aAAc,CACZ,IAAMlsB,EAAQwD,UAAU,MAAM,CAC9B,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAmB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAGxD,EAAOA,EAAM,CAC9E,CACA,YAAa,CACX,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAmB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAG,EAAG,EAAE,CACrE,CACA,cAAe,CACb,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAmB,EAAG,EAAE,CACtC,CACA,cAAc2B,CAAK,CAAE3B,CAAK,CAAE,CACtBA,GACF,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAmB2B,EAAO3B,EAAM,EAE9C,IAAMyjE,EAAWjgE,UAAU,MAAM,CAAG,EAChCigE,GACF,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAmB9hE,EAAO8hE,EAAS,CAEnD,CACA,gBAAiB,CACf,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAmB,EAAGjgE,UAAU,MAAM,CAAC,CACrD,CACF,CACA68D,EAAkB,QAAQ,CAAG,CAAC,EAC9BA,EAAkB,SAAS,CAAC,kBAAkB,CAAG,KACjDA,EAAkB,SAAS,CAAC,eAAe,CAAG,KA+F9C,SAASqD,EAAWC,CAAK,CAAE1H,CAAI,CAAE2C,CAAM,CAAEh/D,CAAC,EAMxC,MALI,QAAQ+jE,IACVC,AAvBJ,SAAuBD,CAAK,CAAE1H,CAAI,CAAE2C,CAAM,CAAEh/D,CAAC,EAC3C,IAAMikE,EAAajF,EAAO,KAAK,CAAC+E,CAAK,CAAC,EAAE,CAAE/jE,GACpCkkE,EAAWlF,EAAO,KAAK,CAAC+E,CAAK,CAAC,EAAE,CAAE/jE,GAClCgiC,EAAM9hC,KAAK,GAAG,CAAC+jE,EAAYC,GAC3BjiC,EAAM/hC,KAAK,GAAG,CAAC+jE,EAAYC,GAC7BC,EAAWniC,EACXoiC,EAASniC,EACT/hC,KAAK,GAAG,CAAC8hC,GAAO9hC,KAAK,GAAG,CAAC+hC,KAC3BkiC,EAAWliC,EACXmiC,EAASpiC,GAEXq6B,CAAI,CAAC2C,EAAO,IAAI,CAAC,CAAGoF,EACpB/H,EAAK,OAAO,CAAG,CACb8H,SAAAA,EACAC,OAAAA,EACA,MAAOH,EACP,IAAKC,EACLliC,IAAAA,EACAC,IAAAA,CACF,CACF,EAGkB8hC,EAAO1H,EAAM2C,EAAQh/D,GAEnCq8D,CAAI,CAAC2C,EAAO,IAAI,CAAC,CAAGA,EAAO,KAAK,CAAC+E,EAAO/jE,GAEnCq8D,CACT,CACA,SAASgI,EAAsBxF,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,MAMjDJ,EAAG8hC,EAAMu6B,EAAM0H,EALnB,IAAMvE,EAASX,EAAK,MAAM,CACpBG,EAASH,EAAK,MAAM,CACpBrzC,EAASg0C,EAAO,SAAS,GACzBqC,EAAcrC,IAAWR,EACzBI,EAAS,EAAE,CAEjB,IAAKp/D,EAAI+B,EAAO+/B,EAAO//B,EAAQ3B,EAAOJ,EAAI8hC,EAAM,EAAE9hC,EAChD+jE,EAAQtjE,CAAI,CAACT,EAAE,CAEfq8D,AADAA,CAAAA,EAAO,CAAC,EACJ,CAACmD,EAAO,IAAI,CAAC,CAAGqC,GAAerC,EAAO,KAAK,CAACh0C,CAAM,CAACxrB,EAAE,CAAEA,GAC3Do/D,EAAO,IAAI,CAAC0E,EAAWC,EAAO1H,EAAM2C,EAAQh/D,IAE9C,OAAOo/D,CACT,CACA,SAASkF,EAAW98D,CAAM,EACxB,OAAOA,GAAUA,AAAoB7G,KAAAA,IAApB6G,EAAO,QAAQ,EAAkBA,AAAkB7G,KAAAA,IAAlB6G,EAAO,MAAM,AACjE,CAqDA,SAAS+8D,EAAU1zB,CAAI,CAAE3uC,CAAC,CAAEC,CAAC,CAAEi8D,CAAO,EAOpC,OAJEvtB,EAFEutB,EAEKoG,EADP3zB,EAAO4zB,AAOX,SAAcC,CAAI,CAAE9rB,CAAE,CAAEC,CAAE,EACxB,OAAO6rB,IAAS9rB,EAAKC,EAAK6rB,IAAS7rB,EAAKD,EAAK8rB,CAC/C,EATgB7zB,EAAM3uC,EAAGC,GACCA,EAAGD,GAElBsiE,EAAS3zB,EAAM3uC,EAAGC,EAG7B,CAIA,SAASqiE,EAAS//D,CAAC,CAAE1C,CAAK,CAAED,CAAG,EAC7B,MAAO2C,AAAM,UAANA,EAAgB1C,EAAQ0C,AAAM,QAANA,EAAc3C,EAAM2C,CACrD,CAMA,MAAMkgE,UAAsBlE,EAC1B,mBAAmB5B,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,CAC3C,OAAOikE,EAAsBxF,EAAMp+D,EAAMsB,EAAO3B,EAClD,CACA,eAAey+D,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,CACvC,OAAOikE,EAAsBxF,EAAMp+D,EAAMsB,EAAO3B,EAClD,CACA,gBAAgBy+D,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,KAMpCJ,EAAG8hC,EAAMu6B,EAAMzmC,EALnB,GAAM,CAAC4pC,OAAAA,CAAM,CAAER,OAAAA,CAAM,CAAC,CAAGH,EACnB,CAACmD,SAAAA,EAAW,GAAG,CAAEC,SAAAA,EAAW,GAAG,CAAC,CAAG,IAAI,CAAC,QAAQ,CAChD2C,EAAWpF,AAAgB,MAAhBA,EAAO,IAAI,CAAWwC,EAAWC,EAC5C4C,EAAW7F,AAAgB,MAAhBA,EAAO,IAAI,CAAWgD,EAAWC,EAC5C7C,EAAS,EAAE,CAEjB,IAAKp/D,EAAI+B,EAAO+/B,EAAO//B,EAAQ3B,EAAOJ,EAAI8hC,EAAM,EAAE9hC,EAChD41B,EAAMn1B,CAAI,CAACT,EAAE,CAEbq8D,AADAA,CAAAA,EAAO,CAAC,EACJ,CAACmD,EAAO,IAAI,CAAC,CAAGA,EAAO,KAAK,CAAC,QAAiB5pC,EAAKgvC,GAAW5kE,GAClEo/D,EAAO,IAAI,CAAC0E,EAAW,QAAiBluC,EAAKivC,GAAWxI,EAAM2C,EAAQh/D,IAExE,OAAOo/D,CACT,CACA,sBAAsB18B,CAAK,CAAEpxB,CAAK,CAAE8tD,CAAM,CAAErqC,CAAK,CAAE,CACjD,KAAK,CAAC,sBAAsB2N,EAAOpxB,EAAO8tD,EAAQrqC,GAClD,IAAMvtB,EAAS43D,EAAO,OAAO,CACzB53D,GAAU8J,IAAU,IAAI,CAAC,WAAW,CAAC,MAAM,GAC7CoxB,EAAM,GAAG,CAAGxiC,KAAK,GAAG,CAACwiC,EAAM,GAAG,CAAEl7B,EAAO,GAAG,EAC1Ck7B,EAAM,GAAG,CAAGxiC,KAAK,GAAG,CAACwiC,EAAM,GAAG,CAAEl7B,EAAO,GAAG,EAE9C,CACA,gBAAiB,CACf,OAAO,CACT,CACA,iBAAiB9F,CAAK,CAAE,CAEtB,GAAM,CAAC89D,OAAAA,CAAM,CAAER,OAAAA,CAAM,CAAC,CADT,IAAI,CAAC,WAAW,CAEvBI,EAAS,IAAI,CAAC,SAAS,CAAC19D,GACxB8F,EAAS43D,EAAO,OAAO,CACvBx9D,EAAQ0iE,EAAW98D,GACrB,IAAMA,EAAO,KAAK,CAAG,KAAOA,EAAO,GAAG,CAAG,IACzC,GAAKw3D,EAAO,gBAAgB,CAACI,CAAM,CAACJ,EAAO,IAAI,CAAC,EACpD,MAAO,CACL,MAAO,GAAKQ,EAAO,gBAAgB,CAACJ,CAAM,CAACI,EAAO,IAAI,CAAC,EACvD59D,MAAAA,CACF,CACF,CACA,YAAa,CACX,IAAI,CAAC,mBAAmB,CAAG,GAC3B,KAAK,CAAC,aAENi9D,AADa,IAAI,CAAC,WAAW,CACxB,KAAK,CAAG,IAAI,CAAC,UAAU,GAAG,KAAK,AACtC,CACA,OAAOuB,CAAI,CAAE,CACX,IAAMvB,EAAO,IAAI,CAAC,WAAW,CAC7B,IAAI,CAAC,cAAc,CAACA,EAAK,IAAI,CAAE,EAAGA,EAAK,IAAI,CAAC,MAAM,CAAEuB,EACtD,CACA,eAAe0E,CAAI,CAAE/iE,CAAK,CAAE3B,CAAK,CAAEggE,CAAI,CAAE,CACvC,IAAM2E,EAAQ3E,AAAS,UAATA,EACR,CAAC1+D,MAAAA,CAAK,CAAE,YAAa,CAACs9D,OAAAA,CAAM,CAAC,CAAC,CAAG,IAAI,CACrCvtB,EAAOutB,EAAO,YAAY,GAC1BgG,EAAahG,EAAO,YAAY,GAChCiG,EAAQ,IAAI,CAAC,SAAS,GACtB,CAAC9B,cAAAA,CAAa,CAAEG,eAAAA,CAAc,CAAC,CAAG,IAAI,CAAC,iBAAiB,CAACvhE,EAAOq+D,GACtE,IAAK,IAAIpgE,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAOJ,IAAK,CAC1C,IAAMo/D,EAAS,IAAI,CAAC,SAAS,CAACp/D,GACxBklE,EAAUH,GAAS,QAAc3F,CAAM,CAACJ,EAAO,IAAI,CAAC,EAAI,CAACvtB,KAAAA,EAAM,KAAMA,CAAI,EAAI,IAAI,CAAC,wBAAwB,CAACzxC,GAC3GmlE,EAAU,IAAI,CAAC,wBAAwB,CAACnlE,EAAGilE,GAC3ClwC,EAAQ,AAACqqC,CAAAA,EAAO,OAAO,EAAI,CAAC,EAAE,CAACJ,EAAO,IAAI,CAAC,CAC3C5wC,EAAa,CACjB42C,WAAAA,EACA,KAAME,EAAQ,IAAI,CAClB,mBAAoB,CAACnwC,GAASuvC,EAAWlF,EAAO,OAAO,GAAM19D,IAAUqzB,EAAM,IAAI,EAAIrzB,IAAUqzB,EAAM,OAAO,CAC5G,EAAGiwC,EAAaE,EAAQ,IAAI,CAAGC,EAAQ,MAAM,CAC7C,EAAGH,EAAaG,EAAQ,MAAM,CAAGD,EAAQ,IAAI,CAC7C,OAAQF,EAAaG,EAAQ,IAAI,CAAGjlE,KAAK,GAAG,CAACglE,EAAQ,IAAI,EACzD,MAAOF,EAAa9kE,KAAK,GAAG,CAACglE,EAAQ,IAAI,EAAIC,EAAQ,IAAI,AAC3D,EACI7B,GACFl1C,CAAAA,EAAW,OAAO,CAAG+0C,GAAiB,IAAI,CAAC,yBAAyB,CAACnjE,EAAG8kE,CAAI,CAAC9kE,EAAE,CAAC,MAAM,CAAG,SAAWogE,EAAI,EAE1G,IAAM9tD,EAAU8b,EAAW,OAAO,EAAI02C,CAAI,CAAC9kE,EAAE,CAAC,OAAO,EACrDolE,AA/HN,SAA0Bh3C,CAAU,CAAE9b,CAAO,CAAEyiB,CAAK,CAAErzB,CAAK,MApBtC0sB,EAqBnB,IApBIgwC,EAASr8D,EAAOD,EAAK+gB,EAAK3d,EAoB1B2rC,EAAOv+B,EAAQ,aAAa,CAC1B4uB,EAAM,CAAC,EACb,GAAI,CAAC2P,EAAM,CACTziB,EAAW,aAAa,CAAG8S,EAC3B,MACF,CACA,GAAI2P,AAAS,KAATA,EAAe,CACjBziB,EAAW,aAAa,CAAG,CAAC,IAAK,GAAM,MAAO,GAAM,OAAQ,GAAM,KAAM,EAAI,EAC5E,MACF,CACA,GAAM,CAACrsB,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAEs8D,QAAAA,CAAO,CAAEv7C,IAAAA,CAAG,CAAE3d,OAAAA,CAAM,CAAC,EA7BpCkpB,CAFeA,EA+BoCA,GA7BxC,UAAU,EACvBgwC,EAAUhwC,EAAW,IAAI,CAAGA,EAAW,CAAC,CACxCrsB,EAAQ,OACRD,EAAM,UAENs8D,EAAUhwC,EAAW,IAAI,CAAGA,EAAW,CAAC,CACxCrsB,EAAQ,SACRD,EAAM,OAEJs8D,GACFv7C,EAAM,MACN3d,EAAS,UAET2d,EAAM,QACN3d,EAAS,OAEJ,CAACnD,MAAAA,EAAOD,IAAAA,EAAKs8D,QAAAA,EAASv7C,IAAAA,EAAK3d,OAAAA,CAAM,EAc3B,YAAT2rC,GAAqB9b,IACvB3G,EAAW,kBAAkB,CAAG,GAC5B,AAAC2G,CAAAA,EAAM,IAAI,EAAI,KAAOrzB,EACxBmvC,EAAOhuB,EACE,AAACkS,CAAAA,EAAM,OAAO,EAAI,KAAOrzB,EAClCmvC,EAAO3rC,GAEPg8B,CAAG,CAACqjC,EAAUr/D,EAAQnD,EAAOD,EAAKs8D,GAAS,CAAG,GAC9CvtB,EAAOhuB,IAGXqe,CAAG,CAACqjC,EAAU1zB,EAAM9uC,EAAOD,EAAKs8D,GAAS,CAAG,GAC5ChwC,EAAW,aAAa,CAAG8S,CAC7B,EAsGuB9S,EAAY9b,EAASyiB,EAAOrzB,IAC7C2jE,AAvFN,SAA0Bj3C,CAAU,CAAE,CAACk3C,cAAAA,CAAa,CAAC,CAAE79D,CAAK,EAC1D2mB,EAAW,aAAa,CAAGk3C,AAAkB,SAAlBA,EACvB79D,AAAU,IAAVA,EAAc,IAAO,EACrB69D,CACN,EAmFuBl3C,EAAY9b,EAAS2yD,EAAM,KAAK,EACjD,IAAI,CAAC,aAAa,CAACH,CAAI,CAAC9kE,EAAE,CAAEA,EAAGouB,EAAYgyC,EAC7C,CACF,CACA,WAAWvmD,CAAI,CAAE0rD,CAAS,CAAE,CAC1B,GAAM,CAAC/F,OAAAA,CAAM,CAAC,CAAG,IAAI,CAAC,WAAW,CAC3BjB,EAAWiB,EAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,EACvD,MAAM,CAACX,GAAQA,EAAK,UAAU,CAAC,OAAO,CAAC,OAAO,EAC3CC,EAAUU,EAAO,OAAO,CAAC,OAAO,CAChCD,EAAS,EAAE,CACXiG,EAAW,AAAC3G,IAChB,IAAMO,EAASP,EAAK,UAAU,CAAC,SAAS,CAAC0G,GACnChnD,EAAM6gD,GAAUA,CAAM,CAACP,EAAK,MAAM,CAAC,IAAI,CAAC,CAC9C,GAAI,QAActgD,IAAQ25B,MAAM35B,GAC9B,MAAO,EAEX,EACA,IAAK,IAAMsgD,KAAQN,EAAU,CAC3B,IAAIgH,CAAAA,AAAc5kE,KAAAA,IAAd4kE,GAA2BC,EAAS3G,EAAI,EAO5C,IAJIC,CAAAA,AAAY,KAAZA,GAAqBS,AAA+B,KAA/BA,EAAO,OAAO,CAACV,EAAK,KAAK,GACnDC,AAAYn+D,KAAAA,IAAZm+D,GAAyBD,AAAel+D,KAAAA,IAAfk+D,EAAK,KAAK,AAAc,GAC9CU,EAAO,IAAI,CAACV,EAAK,KAAK,EAEpBA,EAAK,KAAK,GAAKhlD,EACjB,KACF,CACF,CAIA,MAHI,CAAC0lD,EAAO,MAAM,EAChBA,EAAO,IAAI,CAAC5+D,KAAAA,GAEP4+D,CACT,CACA,eAAe79D,CAAK,CAAE,CACpB,OAAO,IAAI,CAAC,UAAU,CAACf,KAAAA,EAAWe,GAAO,MAAM,AACjD,CACA,eAAeymC,CAAY,CAAElxB,CAAI,CAAEsuD,CAAS,CAAE,CAC5C,IAAMhG,EAAS,IAAI,CAAC,UAAU,CAACp3B,EAAco9B,GACvC7jE,EAAQ,AAACuV,AAAStW,KAAAA,IAATsW,EACXsoD,EAAO,OAAO,CAACtoD,GACf,GACJ,OAAO,AAACvV,AAAU,KAAVA,EACJ69D,EAAO,MAAM,CAAG,EAChB79D,CACN,CACA,WAAY,KAKN1B,EAAG8hC,EAJP,IAAMq8B,EAAO,IAAI,CAAC,OAAO,CACnBU,EAAO,IAAI,CAAC,WAAW,CACvBW,EAASX,EAAK,MAAM,CACpB4G,EAAS,EAAE,CAEjB,IAAKzlE,EAAI,EAAG8hC,EAAO+8B,EAAK,IAAI,CAAC,MAAM,CAAE7+D,EAAI8hC,EAAM,EAAE9hC,EAC/CylE,EAAO,IAAI,CAACjG,EAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAACx/D,EAAE,CAACw/D,EAAO,IAAI,CAAC,CAAEx/D,IAEtE,IAAM0lE,EAAevH,EAAK,YAAY,CAEtC,MAAO,CACLn8B,IAFU0jC,GAAgBC,AA9ThC,SAA8B9G,CAAI,MAI5B7+D,EAAG8hC,EAAM8jC,EAAM7jC,EAHnB,IAAMzwB,EAAQutD,EAAK,MAAM,CACnB1qC,EAAS0xC,AAbjB,SAA2Bv0D,CAAK,CAAElE,CAAI,EACpC,GAAI,CAACkE,EAAM,MAAM,CAAC,IAAI,CAAE,CACtB,IAAMw0D,EAAex0D,EAAM,uBAAuB,CAAClE,GAC/C+mB,EAAS,EAAE,CACf,IAAK,IAAIn0B,EAAI,EAAG8hC,EAAOgkC,EAAa,MAAM,CAAE9lE,EAAI8hC,EAAM9hC,IACpDm0B,EAASA,EAAO,MAAM,CAAC2xC,CAAY,CAAC9lE,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAACsR,GAEvEA,CAAAA,EAAM,MAAM,CAAC,IAAI,CAAG,QAAa6iB,EAAO,IAAI,CAAC,CAACjyB,EAAGC,IAAMD,EAAIC,GAC7D,CACA,OAAOmP,EAAM,MAAM,CAAC,IAAI,AAC1B,EAGmCA,EAAOutD,EAAK,IAAI,EAC7C78B,EAAM1wB,EAAM,OAAO,CAEjBy0D,EAAmB,KACvB,GAAIH,AAAS,QAATA,GAAkBA,AAAS,SAATA,EAGlB,QAAQ7jC,IACVC,CAAAA,EAAM9hC,KAAK,GAAG,CAAC8hC,EAAK9hC,KAAK,GAAG,CAAC0lE,EAAO7jC,IAASC,EAAG,EAElDD,EAAO6jC,CACT,EACA,IAAK5lE,EAAI,EAAG8hC,EAAO3N,EAAO,MAAM,CAAEn0B,EAAI8hC,EAAM,EAAE9hC,EAC5C4lE,EAAOt0D,EAAM,gBAAgB,CAAC6iB,CAAM,CAACn0B,EAAE,EACvC+lE,IAGF,IAAK/lE,EAAI,EADT+hC,EAAOphC,KAAAA,EACKmhC,EAAOxwB,EAAM,KAAK,CAAC,MAAM,CAAEtR,EAAI8hC,EAAM,EAAE9hC,EACjD4lE,EAAOt0D,EAAM,eAAe,CAACtR,GAC7B+lE,IAEF,OAAO/jC,CACT,EAsSqD68B,GAG/C4G,OAAAA,EACA,MAAOjG,EAAO,WAAW,CACzB,IAAKA,EAAO,SAAS,CACrB,WAAY,IAAI,CAAC,cAAc,GAC/B,MAAOA,EACP,QAASrB,EAAK,OAAO,CACrB,MAAOuH,EAAe,EAAIvH,EAAK,kBAAkB,CAAGA,EAAK,aAAa,AACxE,CACF,CACA,yBAAyBz8D,CAAK,CAAE,KAS1BskE,EAAMnpD,EARV,GAAM,CAAC,YAAa,CAACmiD,OAAAA,CAAM,CAAE0C,SAAAA,CAAQ,CAAC,CAAE,QAAS,CAAC,KAAMuE,CAAS,CAAEC,aAAAA,CAAY,CAAC,CAAC,CAAG,IAAI,CAClFC,EAAaF,GAAa,EAC1B7G,EAAS,IAAI,CAAC,SAAS,CAAC19D,GACxB8F,EAAS43D,EAAO,OAAO,CACvBgH,EAAW9B,EAAW98D,GACxB5F,EAAQw9D,CAAM,CAACJ,EAAO,IAAI,CAAC,CAC3Bj9D,EAAQ,EACRwM,EAASmzD,EAAW,IAAI,CAAC,UAAU,CAAC1C,EAAQI,EAAQsC,GAAY9/D,EAEhE2M,IAAW3M,IACbG,EAAQwM,EAAS3M,EACjB2M,EAAS3M,GAEPwkE,IACFxkE,EAAQ4F,EAAO,QAAQ,CACvB+G,EAAS/G,EAAO,MAAM,CAAGA,EAAO,QAAQ,CAC1B,IAAV5F,GAAe,QAAKA,KAAW,QAAK4F,EAAO,MAAM,GACnDzF,CAAAA,EAAQ,GAEVA,GAASH,GAEX,IAAMqiE,EAAa,AAAC,QAAcgC,IAAeG,EAAuBrkE,EAAZkkE,EACxDx0B,EAAOutB,EAAO,gBAAgB,CAACiF,GAOnC,GAAI/jE,KAAK,GAAG,CADZ2c,EAAOmpD,CAJLA,EADE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAACtkE,GACxBs9D,EAAO,gBAAgB,CAACj9D,EAAQwM,GAEhCkjC,GAEKA,GACOy0B,EAAc,KA5PtBrpD,EAAMmiD,EAAQmH,EA6PzBtpD,EAAOwpD,CAAAA,AA7PIxpD,EA6PIA,EA7PEmiD,EA6PIA,EA7PImH,EA6PIA,EA5PjC,CAAItpD,AAAS,IAATA,EACK,QAAKA,GAEP,AAACmiD,CAAAA,EAAO,YAAY,GAAK,EAAI,EAAC,EAAMA,CAAAA,EAAO,GAAG,EAAImH,EAAa,EAAI,EAAC,CAD3E,EA0P+CD,CAAW,EAClDtkE,IAAUukE,GACZ10B,CAAAA,GAAQ50B,EAAO,GAEjB,IAAMypD,EAAatH,EAAO,kBAAkB,CAAC,GACvCuH,EAAWvH,EAAO,kBAAkB,CAAC,GACrCh9B,EAAM9hC,KAAK,GAAG,CAAComE,EAAYC,GAGjCP,EAAOv0B,AADPA,CAAAA,EAAOvxC,KAAK,GAAG,CAACA,KAAK,GAAG,CAACuxC,EADbvxC,KAAK,GAAG,CAAComE,EAAYC,IACIvkC,EAAG,EAC1BnlB,CAChB,CACA,GAAI40B,IAASutB,EAAO,gBAAgB,CAACmH,GAAa,CAChD,IAAMK,EAAW,QAAK3pD,GAAQmiD,EAAO,oBAAoB,CAACmH,GAAc,EACxE10B,GAAQ+0B,EACR3pD,GAAQ2pD,CACV,CACA,MAAO,CACL3pD,KAAAA,EACA40B,KAAAA,EACAu0B,KAAAA,EACA,OAAQA,EAAOnpD,EAAO,CACxB,CACF,CACA,yBAAyBnb,CAAK,CAAEujE,CAAK,CAAE,KAKjCh7C,EAAQpN,EAJZ,IAAMvL,EAAQ2zD,EAAM,KAAK,CACnB3yD,EAAU,IAAI,CAAC,OAAO,CACtBkzD,EAAWlzD,EAAQ,QAAQ,CAC3Bm0D,EAAkB,QAAen0D,EAAQ,eAAe,CAAE2U,KAEhE,GAAIg+C,EAAM,OAAO,CAAE,CACjB,IAAMyB,EAAalB,EAAW,IAAI,CAAC,cAAc,CAAC9jE,GAASujE,EAAM,UAAU,CACrEviC,EAAQpwB,AAAyB,SAAzBA,EAAQ,YAAY,CAC9Bq0D,AAhWV,SAAmCjlE,CAAK,CAAEujE,CAAK,CAAE3yD,CAAO,CAAEo0D,CAAU,EAClE,IAAMjB,EAASR,EAAM,MAAM,CACrBW,EAAOH,CAAM,CAAC/jE,EAAM,CACtBqgC,EAAOrgC,EAAQ,EAAI+jE,CAAM,CAAC/jE,EAAQ,EAAE,CAAG,KACvCC,EAAOD,EAAQ+jE,EAAO,MAAM,CAAG,EAAIA,CAAM,CAAC/jE,EAAQ,EAAE,CAAG,KACrDgN,EAAU4D,EAAQ,kBAAkB,AAC7B,QAATyvB,GACFA,CAAAA,EAAO6jC,EAAQjkE,CAAAA,AAAS,OAATA,EAAgBsjE,EAAM,GAAG,CAAGA,EAAM,KAAK,CAAGtjE,EAAOikE,CAAG,CAAC,EAEzD,OAATjkE,GACFA,CAAAA,EAAOikE,EAAOA,EAAO7jC,CAAG,EAE1B,IAAMhgC,EAAQ6jE,EAAO,AAACA,CAAAA,EAAO1lE,KAAK,GAAG,CAAC6hC,EAAMpgC,EAAI,EAAK,EAAI+M,EAEzD,MAAO,CACL,MAAOmO,AAFI3c,KAAK,GAAG,CAACyB,EAAOogC,GAAQ,EAAIrzB,EAEzBg4D,EACd,MAAOp0D,EAAQ,aAAa,CAC5BvQ,MAAAA,CACF,CACF,EA6UoCL,EAAOujE,EAAO3yD,EAASo0D,GACjDE,AAjXV,SAAkCllE,CAAK,CAAEujE,CAAK,CAAE3yD,CAAO,CAAEo0D,CAAU,MAE7D7pD,EAAMpV,EADV,IAAMo/D,EAAYv0D,EAAQ,YAAY,CAStC,MAPI,QAAcu0D,IAChBhqD,EAAOooD,EAAM,GAAG,CAAG3yD,EAAQ,kBAAkB,CAC7C7K,EAAQ6K,EAAQ,aAAa,GAE7BuK,EAAOgqD,EAAYH,EACnBj/D,EAAQ,GAEH,CACL,MAAOoV,EAAO6pD,EACdj/D,MAAAA,EACA,MAAOw9D,EAAM,MAAM,CAACvjE,EAAM,CAAImb,EAAO,CACvC,CACF,EAkWmCnb,EAAOujE,EAAO3yD,EAASo0D,GAC9CI,EAAa,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAEtB,EAAW9jE,EAAQf,KAAAA,GAC9FspB,EAASyY,EAAM,KAAK,CAAIA,EAAM,KAAK,CAAGokC,EAAepkC,EAAM,KAAK,CAAG,EACnE7lB,EAAO3c,KAAK,GAAG,CAACumE,EAAiB/jC,EAAM,KAAK,CAAGA,EAAM,KAAK,CAC5D,MACEzY,EAAS3Y,EAAM,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC5P,EAAM,CAAC4P,EAAM,IAAI,CAAC,CAAE5P,GACnEmb,EAAO3c,KAAK,GAAG,CAACumE,EAAiBxB,EAAM,GAAG,CAAGA,EAAM,KAAK,EAE1D,MAAO,CACL,KAAMh7C,EAASpN,EAAO,EACtB,KAAMoN,EAASpN,EAAO,EACtBoN,OAAAA,EACApN,KAAAA,CACF,CACF,CACA,MAAO,CACL,IAAMgiD,EAAO,IAAI,CAAC,WAAW,CACvBG,EAASH,EAAK,MAAM,CACpB16B,EAAQ06B,EAAK,IAAI,CACjB/8B,EAAOqC,EAAM,MAAM,CACrBnkC,EAAI,EACR,KAAOA,EAAI8hC,EAAM,EAAE9hC,EACsB,OAAnC,IAAI,CAAC,SAAS,CAACA,EAAE,CAACg/D,EAAO,IAAI,CAAC,EAChC76B,CAAK,CAACnkC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAG7B,CACF,CACA2kE,EAAc,EAAE,CAAG,MACnBA,EAAc,QAAQ,CAAG,CACvB,mBAAoB,GACpB,gBAAiB,MACjB,mBAAoB,GACpB,cAAe,GACf,QAAS,GACT,WAAY,CACV,QAAS,CACP,KAAM,SACN,WAAY,CAAC,IAAK,IAAK,OAAQ,QAAS,SAAS,AACnD,CACF,CACF,EACAA,EAAc,SAAS,CAAG,CACxB,OAAQ,CACN,QAAS,CACP,KAAM,WACN,OAAQ,GACR,KAAM,CACJ,OAAQ,EACV,CACF,EACA,QAAS,CACP,KAAM,SACN,YAAa,EACf,CACF,CACF,CAEA,OAAMoC,UAAyBtG,EAC7B,YAAa,CACX,IAAI,CAAC,mBAAmB,CAAG,GAC3B,KAAK,CAAC,YACR,CACA,mBAAmB5B,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,CAC3C,IAAMg/D,EAAS,KAAK,CAAC,mBAAmBP,EAAMp+D,EAAMsB,EAAO3B,GAC3D,IAAK,IAAIJ,EAAI,EAAGA,EAAIo/D,EAAO,MAAM,CAAEp/D,IACjCo/D,CAAM,CAACp/D,EAAE,CAAC,OAAO,CAAG,IAAI,CAAC,yBAAyB,CAACA,EAAI+B,GAAO,MAAM,CAEtE,OAAOq9D,CACT,CACA,eAAeP,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,CACvC,IAAMg/D,EAAS,KAAK,CAAC,eAAeP,EAAMp+D,EAAMsB,EAAO3B,GACvD,IAAK,IAAIJ,EAAI,EAAGA,EAAIo/D,EAAO,MAAM,CAAEp/D,IAAK,CACtC,IAAMq8D,EAAO57D,CAAI,CAACsB,EAAQ/B,EAAE,AAC5Bo/D,CAAAA,CAAM,CAACp/D,EAAE,CAAC,OAAO,CAAG,QAAeq8D,CAAI,CAAC,EAAE,CAAE,IAAI,CAAC,yBAAyB,CAACr8D,EAAI+B,GAAO,MAAM,CAC9F,CACA,OAAOq9D,CACT,CACA,gBAAgBP,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,CACxC,IAAMg/D,EAAS,KAAK,CAAC,gBAAgBP,EAAMp+D,EAAMsB,EAAO3B,GACxD,IAAK,IAAIJ,EAAI,EAAGA,EAAIo/D,EAAO,MAAM,CAAEp/D,IAAK,CACtC,IAAMq8D,EAAO57D,CAAI,CAACsB,EAAQ/B,EAAE,AAC5Bo/D,CAAAA,CAAM,CAACp/D,EAAE,CAAC,OAAO,CAAG,QAAeq8D,GAAQA,EAAK,CAAC,EAAI,CAACA,EAAK,CAAC,CAAE,IAAI,CAAC,yBAAyB,CAACr8D,EAAI+B,GAAO,MAAM,CAChH,CACA,OAAOq9D,CACT,CACA,gBAAiB,CACf,IAAM3+D,EAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAC9BwhC,EAAM,EACV,IAAK,IAAIjiC,EAAIS,EAAK,MAAM,CAAG,EAAGT,GAAK,EAAG,EAAEA,EACtCiiC,EAAM/hC,KAAK,GAAG,CAAC+hC,EAAKxhC,CAAI,CAACT,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAACA,IAAM,GAExE,OAAOiiC,EAAM,GAAKA,CACpB,CACA,iBAAiBvgC,CAAK,CAAE,CACtB,IAAMm9D,EAAO,IAAI,CAAC,WAAW,CACvB,CAACiD,OAAAA,CAAM,CAAEC,OAAAA,CAAM,CAAC,CAAGlD,EACnBO,EAAS,IAAI,CAAC,SAAS,CAAC19D,GACxB/B,EAAImiE,EAAO,gBAAgB,CAAC1C,EAAO,CAAC,EACpCr8D,EAAIg/D,EAAO,gBAAgB,CAAC3C,EAAO,CAAC,EACpC90D,EAAI80D,EAAO,OAAO,CACxB,MAAO,CACL,MAAOP,EAAK,KAAK,CACjB,MAAO,IAAMl/D,EAAI,KAAOoD,EAAKuH,CAAAA,EAAI,KAAOA,EAAI,EAAC,EAAK,GACpD,CACF,CACA,OAAO81D,CAAI,CAAE,CACX,IAAMvxD,EAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CACpC,IAAI,CAAC,cAAc,CAACA,EAAQ,EAAGA,EAAO,MAAM,CAAEuxD,EAChD,CACA,eAAevxD,CAAM,CAAE9M,CAAK,CAAE3B,CAAK,CAAEggE,CAAI,CAAE,CACzC,IAAM2E,EAAQ3E,AAAS,UAATA,EACR,CAACZ,OAAAA,CAAM,CAAER,OAAAA,CAAM,CAAC,CAAG,IAAI,CAAC,WAAW,CACnC,CAACmE,cAAAA,CAAa,CAAEG,eAAAA,CAAc,CAAC,CAAG,IAAI,CAAC,iBAAiB,CAACvhE,EAAOq+D,GAChEX,EAAQD,EAAO,IAAI,CACnBE,EAAQV,EAAO,IAAI,CACzB,IAAK,IAAIh/D,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAOJ,IAAK,CAC1C,IAAMqO,EAAQQ,CAAM,CAAC7O,EAAE,CACjBo/D,EAAS,CAAC2F,GAAS,IAAI,CAAC,SAAS,CAAC/kE,GAClCouB,EAAa,CAAC,EACd44C,EAAS54C,CAAU,CAACqxC,EAAM,CAAGsF,EAAQvF,EAAO,kBAAkB,CAAC,IAAOA,EAAO,gBAAgB,CAACJ,CAAM,CAACK,EAAM,EAC3GwH,EAAS74C,CAAU,CAACsxC,EAAM,CAAGqF,EAAQ/F,EAAO,YAAY,GAAKA,EAAO,gBAAgB,CAACI,CAAM,CAACM,EAAM,CACxGtxC,CAAAA,EAAW,IAAI,CAAG8pB,MAAM8uB,IAAW9uB,MAAM+uB,GACrC3D,IACFl1C,EAAW,OAAO,CAAG+0C,GAAiB,IAAI,CAAC,yBAAyB,CAACnjE,EAAGqO,EAAM,MAAM,CAAG,SAAW+xD,GAC9F2E,GACF32C,CAAAA,EAAW,OAAO,CAAC,MAAM,CAAG,IAGhC,IAAI,CAAC,aAAa,CAAC/f,EAAOrO,EAAGouB,EAAYgyC,EAC3C,CACF,CACA,0BAA0B1+D,CAAK,CAAE0+D,CAAI,CAAE,CACrC,IAAMhB,EAAS,IAAI,CAAC,SAAS,CAAC19D,GAC1ByyB,EAAS,KAAK,CAAC,0BAA0BzyB,EAAO0+D,EAChDjsC,CAAAA,EAAO,OAAO,EAChBA,CAAAA,EAASvvB,OAAO,MAAM,CAAC,CAAC,EAAGuvB,EAAQ,CAAC,QAAS,EAAK,EAAC,EAErD,IAAM3pB,EAAS2pB,EAAO,MAAM,CAK5B,MAJa,WAATisC,GACFjsC,CAAAA,EAAO,MAAM,CAAG,GAElBA,EAAO,MAAM,EAAI,QAAeirC,GAAUA,EAAO,OAAO,CAAE50D,GACnD2pB,CACT,CACF,CACA4yC,EAAiB,EAAE,CAAG,SACtBA,EAAiB,QAAQ,CAAG,CAC1B,mBAAoB,GACpB,gBAAiB,QACjB,WAAY,CACV,QAAS,CACP,KAAM,SACN,WAAY,CAAC,IAAK,IAAK,cAAe,SAAS,AACjD,CACF,CACF,EACAA,EAAiB,SAAS,CAAG,CAC3B,OAAQ,CACN,EAAG,CACD,KAAM,QACR,EACA,EAAG,CACD,KAAM,QACR,CACF,EACA,QAAS,CACP,QAAS,CACP,UAAW,CACT,UACS,EAEX,CACF,CACF,CACF,CA2BA,OAAMG,UAA2BzG,EAC/B,YAAYr8B,CAAK,CAAE+D,CAAY,CAAE,CAC/B,KAAK,CAAC/D,EAAO+D,GACb,IAAI,CAAC,mBAAmB,CAAG,GAC3B,IAAI,CAAC,WAAW,CAAGxnC,KAAAA,EACnB,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,OAAO,CAAGA,KAAAA,EACf,IAAI,CAAC,OAAO,CAAGA,KAAAA,CACjB,CACA,YAAa,CAAC,CACd,MAAMoB,CAAK,CAAE3B,CAAK,CAAE,CAClB,IAAMK,EAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAC7Bo+D,EAAO,IAAI,CAAC,WAAW,CAC7B,GAAI,AAAkB,KAAlB,IAAI,CAAC,QAAQ,CACfA,EAAK,OAAO,CAAGp+D,MACV,CACL,IAKIT,EAAG8hC,EALHqlC,EAAS,AAACnnE,GAAM,CAACS,CAAI,CAACT,EAAE,CAC5B,GAAI,QAASS,CAAI,CAACsB,EAAM,EAAG,CACzB,GAAM,CAAC2V,IAAAA,EAAM,OAAO,CAAC,CAAG,IAAI,CAAC,QAAQ,CACrCyvD,EAAS,AAACnnE,GAAM,CAAC,QAAiBS,CAAI,CAACT,EAAE,CAAE0X,EAC7C,CAEA,IAAK1X,EAAI+B,EAAO+/B,EAAO//B,EAAQ3B,EAAOJ,EAAI8hC,EAAM,EAAE9hC,EAChD6+D,EAAK,OAAO,CAAC7+D,EAAE,CAAGmnE,EAAOnnE,EAE7B,CACF,CACA,cAAe,CACb,MAAO,QAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAG,GAC3C,CACA,mBAAoB,CAClB,MAAO,QAAU,IAAI,CAAC,OAAO,CAAC,aAAa,CAC7C,CACA,qBAAsB,CACpB,IAAIgiC,EAAM,GAAG,CACTC,EAAM,CAAC,GAAG,CACd,IAAK,IAAIjiC,EAAI,EAAGA,EAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE,EAAEA,EACrD,GAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAACA,GAAI,CAClC,IAAMm/D,EAAa,IAAI,CAAC,KAAK,CAAC,cAAc,CAACn/D,GAAG,UAAU,CACpDimC,EAAWk5B,EAAW,YAAY,GAClCiI,EAAgBjI,EAAW,iBAAiB,GAClDn9B,EAAM9hC,KAAK,GAAG,CAAC8hC,EAAKiE,GACpBhE,EAAM/hC,KAAK,GAAG,CAAC+hC,EAAKgE,EAAWmhC,EACjC,CAEF,MAAO,CACL,SAAUplC,EACV,cAAeC,EAAMD,CACvB,CACF,CACA,OAAOo+B,CAAI,CAAE,CAEX,GAAM,CAACiH,UAAAA,CAAS,CAAC,CADH,IAAI,CAAC,KAAK,CAElBxI,EAAO,IAAI,CAAC,WAAW,CACvByI,EAAOzI,EAAK,IAAI,CAChB0I,EAAU,IAAI,CAAC,iBAAiB,GAAK,IAAI,CAAC,YAAY,CAACD,GAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CACnFE,EAAUtnE,KAAK,GAAG,CAAC,AAACA,CAAAA,KAAK,GAAG,CAACmnE,EAAU,KAAK,CAAEA,EAAU,MAAM,EAAIE,CAAM,EAAK,EAAG,GAChFE,EAASvnE,KAAK,GAAG,CAAC,QAAa,IAAI,CAAC,OAAO,CAAC,MAAM,CAAEsnE,GAAU,GAC9DE,EAAc,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAC5C,CAACN,cAAAA,CAAa,CAAEnhC,SAAAA,CAAQ,CAAC,CAAG,IAAI,CAAC,mBAAmB,GACpD,CAAC0hC,OAAAA,CAAM,CAAEC,OAAAA,CAAM,CAAEzmB,QAAAA,CAAO,CAAEC,QAAAA,CAAO,CAAC,CAAGymB,AArF/C,SAA2B5hC,CAAQ,CAAEmhC,CAAa,CAAEK,CAAM,EACxD,IAAIE,EAAS,EACTC,EAAS,EACTzmB,EAAU,EACVC,EAAU,EACd,GAAIgmB,EAAgB,GAAG,CAAE,CAEvB,IAAMU,EAAWC,AADE9hC,EACWmhC,EACxBxS,EAAS10D,KAAK,GAAG,CAFJ+lC,GAGb4uB,EAAS30D,KAAK,GAAG,CAHJ+lC,GAIb+hC,EAAO9nE,KAAK,GAAG,CAAC4nE,GAChBG,EAAO/nE,KAAK,GAAG,CAAC4nE,GAChBI,EAAU,CAACh3D,EAAOhP,EAAGC,IAAM,QAAc+O,EAN5B+0B,EAM+C6hC,EAAU,IAAQ,EAAI5nE,KAAK,GAAG,CAACgC,EAAGA,EAAIulE,EAAQtlE,EAAGA,EAAIslE,GACjHU,EAAU,CAACj3D,EAAOhP,EAAGC,IAAM,QAAc+O,EAP5B+0B,EAO+C6hC,EAAU,IAAQ,GAAK5nE,KAAK,GAAG,CAACgC,EAAGA,EAAIulE,EAAQtlE,EAAGA,EAAIslE,GAClHjoD,EAAO0oD,EAAQ,EAAGtT,EAAQoT,GAC1BvoD,EAAOyoD,EAAQ,GAAO,CAAErT,EAAQoT,GAChC3oD,EAAO6oD,EAAQ,GAAE,CAAEvT,EAAQoT,GAC3BzoD,EAAO4oD,EAAQ,GAAE,CAAG,GAAO,CAAEtT,EAAQoT,GAC3CN,EAAS,AAACnoD,CAAAA,EAAOF,CAAG,EAAK,EACzBsoD,EAAS,AAACnoD,CAAAA,EAAOF,CAAG,EAAK,EACzB4hC,EAAU,CAAE3hC,CAAAA,EAAOF,CAAG,EAAK,EAC3B8hC,EAAU,CAAE3hC,CAAAA,EAAOF,CAAG,EAAK,CAC7B,CACA,MAAO,CAACooD,OAAAA,EAAQC,OAAAA,EAAQzmB,QAAAA,EAASC,QAAAA,CAAO,CAC1C,EA6DiEnb,EAAUmhC,EAAeK,GAChF/uD,EAAW,AAAC2uD,CAAAA,EAAU,KAAK,CAAGE,CAAM,EAAKI,EAEzCS,EAAYloE,KAAK,GAAG,CAACA,KAAK,GAAG,CAACwY,EADlB,AAAC2uD,CAAAA,EAAU,MAAM,CAAGE,CAAM,EAAKK,GACU,EAAG,GACxDS,EAAc,QAAY,IAAI,CAAC,OAAO,CAAC,MAAM,CAAED,GAC/CE,EAAcpoE,KAAK,GAAG,CAACmoE,EAAcZ,EAAQ,GAC7Cc,EAAe,AAACF,CAAAA,EAAcC,CAAU,EAAK,IAAI,CAAC,6BAA6B,EACrF,KAAI,CAAC,OAAO,CAAGnnB,EAAUknB,EACzB,IAAI,CAAC,OAAO,CAAGjnB,EAAUinB,EACzBxJ,EAAK,KAAK,CAAG,IAAI,CAAC,cAAc,GAChC,IAAI,CAAC,WAAW,CAAGwJ,EAAcE,EAAe,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EACpF,IAAI,CAAC,WAAW,CAAGroE,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAGqoE,EAAeb,EAAa,GAC3E,IAAI,CAAC,cAAc,CAACJ,EAAM,EAAGA,EAAK,MAAM,CAAElH,EAC5C,CACA,eAAepgE,CAAC,CAAE+kE,CAAK,CAAE,CACvB,IAAM5G,EAAO,IAAI,CAAC,OAAO,CACnBU,EAAO,IAAI,CAAC,WAAW,CACvBuI,EAAgB,IAAI,CAAC,iBAAiB,UAC5C,AAAI,AAACrC,GAAS5G,EAAK,SAAS,CAAC,aAAa,EAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAACn+D,IAAM6+D,AAAoB,OAApBA,EAAK,OAAO,CAAC7+D,EAAE,EAAa6+D,EAAK,IAAI,CAAC7+D,EAAE,CAAC,MAAM,CACzH,EAEF,IAAI,CAAC,sBAAsB,CAAC6+D,EAAK,OAAO,CAAC7+D,EAAE,CAAGonE,EAAgB,GAAG,CAC1E,CACA,eAAeE,CAAI,CAAEvlE,CAAK,CAAE3B,CAAK,CAAEggE,CAAI,CAAE,KAanCpgE,EAZJ,IAAM+kE,EAAQ3E,AAAS,UAATA,EACRh8B,EAAQ,IAAI,CAAC,KAAK,CAClBijC,EAAYjjC,EAAM,SAAS,CAE3BokC,EAAgBrK,AADT/5B,EAAM,OAAO,CACC,SAAS,CAC9BmF,EAAU,AAAC89B,CAAAA,EAAU,IAAI,CAAGA,EAAU,KAAK,AAAD,EAAK,EAC/C59B,EAAU,AAAC49B,CAAAA,EAAU,GAAG,CAAGA,EAAU,MAAM,AAAD,EAAK,EAC/CoB,EAAe1D,GAASyD,EAAc,YAAY,CAClDF,EAAcG,EAAe,EAAI,IAAI,CAAC,WAAW,CACjDJ,EAAcI,EAAe,EAAI,IAAI,CAAC,WAAW,CACjD,CAACtF,cAAAA,CAAa,CAAEG,eAAAA,CAAc,CAAC,CAAG,IAAI,CAAC,iBAAiB,CAACvhE,EAAOq+D,GAClE2H,EAAa,IAAI,CAAC,YAAY,GAElC,IAAK/nE,EAAI,EAAGA,EAAI+B,EAAO,EAAE/B,EACvB+nE,GAAc,IAAI,CAAC,cAAc,CAAC/nE,EAAG+kE,GAEvC,IAAK/kE,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAO,EAAEJ,EAAG,CACtC,IAAMonE,EAAgB,IAAI,CAAC,cAAc,CAACpnE,EAAG+kE,GACvC2D,EAAMpB,CAAI,CAACtnE,EAAE,CACbouB,EAAa,CACjB,EAAGmb,EAAU,IAAI,CAAC,OAAO,CACzB,EAAGE,EAAU,IAAI,CAAC,OAAO,CACzBs+B,WAAAA,EACA,SAAUA,EAAaX,EACvBA,cAAAA,EACAiB,YAAAA,EACAC,YAAAA,CACF,EACIhF,GACFl1C,CAAAA,EAAW,OAAO,CAAG+0C,GAAiB,IAAI,CAAC,yBAAyB,CAACnjE,EAAG0oE,EAAI,MAAM,CAAG,SAAWtI,EAAI,EAEtG2H,GAAcX,EACd,IAAI,CAAC,aAAa,CAACsB,EAAK1oE,EAAGouB,EAAYgyC,EACzC,CACF,CACA,gBAAiB,KAIXpgE,EAHJ,IAAM6+D,EAAO,IAAI,CAAC,WAAW,CACvB8J,EAAW9J,EAAK,IAAI,CACtB+J,EAAQ,EAEZ,IAAK5oE,EAAI,EAAGA,EAAI2oE,EAAS,MAAM,CAAE3oE,IAAK,CACpC,IAAM4B,EAAQi9D,EAAK,OAAO,CAAC7+D,EAAE,AACf,QAAV4B,GAAkB,CAACs2C,MAAMt2C,IAAU,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC5B,IAAM,CAAC2oE,CAAQ,CAAC3oE,EAAE,CAAC,MAAM,EAC3F4oE,CAAAA,GAAS1oE,KAAK,GAAG,CAAC0B,EAAK,CAE3B,CACA,OAAOgnE,CACT,CACA,uBAAuBhnE,CAAK,CAAE,CAC5B,IAAMgnE,EAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,QACpC,AAAIA,EAAQ,GAAK,CAAC1wB,MAAMt2C,GACf,GAAG,CAAI1B,CAAAA,KAAK,GAAG,CAAC0B,GAASgnE,CAAI,EAE/B,CACT,CACA,iBAAiBlnE,CAAK,CAAE,CACtB,IAAMm9D,EAAO,IAAI,CAAC,WAAW,CACvBz6B,EAAQ,IAAI,CAAC,KAAK,CAClB5Y,EAAS4Y,EAAM,IAAI,CAAC,MAAM,EAAI,EAAE,CAChCxiC,EAAQ,QAAai9D,EAAK,OAAO,CAACn9D,EAAM,CAAE0iC,EAAM,OAAO,CAAC,MAAM,EACpE,MAAO,CACL,MAAO5Y,CAAM,CAAC9pB,EAAM,EAAI,GACxBE,MAAAA,CACF,CACF,CACA,kBAAkB0lE,CAAI,CAAE,CACtB,IAEItnE,EAAG8hC,EAAM+8B,EAAMM,EAAY7sD,EAF3B2vB,EAAM,EACJmC,EAAQ,IAAI,CAAC,KAAK,CAExB,GAAI,CAACkjC,EACH,KAAKtnE,EAAI,EAAG8hC,EAAOsC,EAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAEpkC,EAAI8hC,EAAM,EAAE9hC,EACzD,GAAIokC,EAAM,gBAAgB,CAACpkC,GAAI,CAE7BsnE,EAAOzI,AADPA,CAAAA,EAAOz6B,EAAM,cAAc,CAACpkC,EAAC,EACjB,IAAI,CAChBm/D,EAAaN,EAAK,UAAU,CAC5B,KACF,CACF,CAEF,GAAI,CAACyI,EACH,OAAO,EAET,IAAKtnE,EAAI,EAAG8hC,EAAOwlC,EAAK,MAAM,CAAEtnE,EAAI8hC,EAAM,EAAE9hC,EAEd,UAAxBsS,AADJA,CAAAA,EAAU6sD,EAAW,yBAAyB,CAACn/D,EAAC,EACpC,WAAW,EACrBiiC,CAAAA,EAAM/hC,KAAK,GAAG,CAAC+hC,EAAK3vB,EAAQ,WAAW,EAAI,EAAGA,EAAQ,gBAAgB,EAAI,EAAC,EAG/E,OAAO2vB,CACT,CACA,aAAaqlC,CAAI,CAAE,CACjB,IAAIrlC,EAAM,EACV,IAAK,IAAIjiC,EAAI,EAAG8hC,EAAOwlC,EAAK,MAAM,CAAEtnE,EAAI8hC,EAAM,EAAE9hC,EAAG,CACjD,IAAMsS,EAAU,IAAI,CAAC,yBAAyB,CAACtS,GAC/CiiC,EAAM/hC,KAAK,GAAG,CAAC+hC,EAAK3vB,EAAQ,MAAM,EAAI,EAAGA,EAAQ,WAAW,EAAI,EAClE,CACA,OAAO2vB,CACT,CACA,qBAAqBkG,CAAY,CAAE,CACjC,IAAI0gC,EAAmB,EACvB,IAAK,IAAI7oE,EAAI,EAAGA,EAAImoC,EAAc,EAAEnoC,EAC9B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAACA,IAC9B6oE,CAAAA,GAAoB,IAAI,CAAC,cAAc,CAAC7oE,EAAC,EAG7C,OAAO6oE,CACT,CACA,eAAe1gC,CAAY,CAAE,CAC3B,OAAOjoC,KAAK,GAAG,CAAC,QAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAACioC,EAAa,CAAC,MAAM,CAAE,GAAI,EACpF,CACA,+BAAgC,CAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAK,CACvE,CACF,CACA++B,EAAmB,EAAE,CAAG,WACxBA,EAAmB,QAAQ,CAAG,CAC5B,mBAAoB,GACpB,gBAAiB,MACjB,UAAW,CACT,cAAe,GACf,aAAc,EAChB,EACA,WAAY,CACV,QAAS,CACP,KAAM,SACN,WAAY,CAAC,gBAAiB,WAAY,cAAe,cAAe,aAAc,IAAK,IAAK,SAAU,cAAe,UAAU,AACrI,CACF,EACA,OAAQ,MACR,SAAU,EACV,cAAe,IACf,OAAQ,OACR,QAAS,EACT,UAAW,GACb,EACAA,EAAmB,WAAW,CAAG,CAC/B,YAAa,AAACjwD,GAASA,AAAS,YAATA,EACvB,WAAY,AAACA,GAASA,AAAS,YAATA,CACxB,EACAiwD,EAAmB,SAAS,CAAG,CAC7B,YAAa,EACb,QAAS,CACP,OAAQ,CACN,OAAQ,CACN,eAAe9iC,CAAK,EAClB,IAAM3jC,EAAO2jC,EAAM,IAAI,CACvB,GAAI3jC,EAAK,MAAM,CAAC,MAAM,EAAIA,EAAK,QAAQ,CAAC,MAAM,CAAE,CAC9C,GAAM,CAAC,OAAQ,CAACqoE,WAAAA,CAAU,CAAC,CAAC,CAAG1kC,EAAM,MAAM,CAAC,OAAO,CACnD,OAAO3jC,EAAK,MAAM,CAAC,GAAG,CAAC,CAACmQ,EAAO5Q,KAE7B,IAAMoY,EAAQymD,AADDz6B,EAAM,cAAc,CAAC,GACf,UAAU,CAAC,QAAQ,CAACpkC,GACvC,MAAO,CACL,KAAM4Q,EACN,UAAWwH,EAAM,eAAe,CAChC,YAAaA,EAAM,WAAW,CAC9B,UAAWA,EAAM,WAAW,CAC5B,WAAY0wD,EACZ,OAAQ,CAAC1kC,EAAM,iBAAiB,CAACpkC,GACjC,MAAOA,CACT,CACF,EACF,CACA,MAAO,EAAE,AACX,CACF,EACA,QAAQgI,CAAC,CAAE+gE,CAAU,CAAEC,CAAM,EAC3BA,EAAO,KAAK,CAAC,oBAAoB,CAACD,EAAW,KAAK,EAClDC,EAAO,KAAK,CAAC,MAAM,EACrB,CACF,EACA,QAAS,CACP,UAAW,CACT,UACS,GAET,MAAMC,CAAW,EACf,IAAIC,EAAYD,EAAY,KAAK,CAC3BrnE,EAAQ,KAAOqnE,EAAY,cAAc,CAO/C,MANI,QAAQC,IACVA,EAAYA,EAAU,KAAK,GAC3BA,CAAS,CAAC,EAAE,EAAItnE,GAEhBsnE,GAAatnE,EAERsnE,CACT,CACF,CACF,CACF,CACF,CAEA,OAAMC,UAAuB1I,EAC3B,YAAa,CACX,IAAI,CAAC,mBAAmB,CAAG,GAC3B,IAAI,CAAC,kBAAkB,CAAG,GAC1B,KAAK,CAAC,YACR,CACA,OAAOL,CAAI,CAAE,CACX,IAAMvB,EAAO,IAAI,CAAC,WAAW,CACvB,CAAC,QAAS/vD,CAAI,CAAE,KAAMD,EAAS,EAAE,CAAEu6D,SAAAA,CAAQ,CAAC,CAAGvK,EAC/CwK,EAAqB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CACrD,CAACtnE,MAAAA,CAAK,CAAE3B,MAAAA,CAAK,CAAC,CAAG,QAAiCy+D,EAAMhwD,EAAQw6D,EACpE,KAAI,CAAC,UAAU,CAAGtnE,EAClB,IAAI,CAAC,UAAU,CAAG3B,EACd,QAAoBy+D,KACtB98D,EAAQ,EACR3B,EAAQyO,EAAO,MAAM,EAEvBC,EAAK,MAAM,CAAG,IAAI,CAAC,KAAK,CACxBA,EAAK,aAAa,CAAG,IAAI,CAAC,KAAK,CAC/BA,EAAK,UAAU,CAAG,CAAC,CAACs6D,EAAS,UAAU,CACvCt6D,EAAK,MAAM,CAAGD,EACd,IAAMyD,EAAU,IAAI,CAAC,4BAA4B,CAAC8tD,EAC9C,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxB9tD,CAAAA,EAAQ,WAAW,CAAG,GAExBA,EAAQ,OAAO,CAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACtC,IAAI,CAAC,aAAa,CAACxD,EAAMnO,KAAAA,EAAW,CAClC,SAAU,CAAC0oE,EACX/2D,QAAAA,CACF,EAAG8tD,GACH,IAAI,CAAC,cAAc,CAACvxD,EAAQ9M,EAAO3B,EAAOggE,EAC5C,CACA,eAAevxD,CAAM,CAAE9M,CAAK,CAAE3B,CAAK,CAAEggE,CAAI,CAAE,CACzC,IAAM2E,EAAQ3E,AAAS,UAATA,EACR,CAACZ,OAAAA,CAAM,CAAER,OAAAA,CAAM,CAAE0C,SAAAA,CAAQ,CAAE0H,SAAAA,CAAQ,CAAC,CAAG,IAAI,CAAC,WAAW,CACvD,CAACjG,cAAAA,CAAa,CAAEG,eAAAA,CAAc,CAAC,CAAG,IAAI,CAAC,iBAAiB,CAACvhE,EAAOq+D,GAChEX,EAAQD,EAAO,IAAI,CACnBE,EAAQV,EAAO,IAAI,CACnB,CAACsK,SAAAA,CAAQ,CAAE1mC,QAAAA,CAAO,CAAC,CAAG,IAAI,CAAC,OAAO,CAClC2mC,EAAe,QAASD,GAAYA,EAAWlkC,OAAO,iBAAiB,CACvEokC,EAAe,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAIzE,GAAS3E,AAAS,SAATA,EAC5DqJ,EAAa1nE,EAAQ,GAAK,IAAI,CAAC,SAAS,CAACA,EAAQ,GACrD,IAAK,IAAI/B,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAO,EAAEJ,EAAG,CAC1C,IAAMqO,EAAQQ,CAAM,CAAC7O,EAAE,CACjBo/D,EAAS,IAAI,CAAC,SAAS,CAACp/D,GACxBouB,EAAao7C,EAAen7D,EAAQ,CAAC,EACrCq7D,EAAW,QAActK,CAAM,CAACM,EAAM,EACtCsH,EAAS54C,CAAU,CAACqxC,EAAM,CAAGD,EAAO,gBAAgB,CAACJ,CAAM,CAACK,EAAM,CAAEz/D,GACpEinE,EAAS74C,CAAU,CAACsxC,EAAM,CAAGqF,GAAS2E,EAAW1K,EAAO,YAAY,GAAKA,EAAO,gBAAgB,CAAC0C,EAAW,IAAI,CAAC,UAAU,CAAC1C,EAAQI,EAAQsC,GAAYtC,CAAM,CAACM,EAAM,CAAE1/D,EAC7KouB,CAAAA,EAAW,IAAI,CAAG8pB,MAAM8uB,IAAW9uB,MAAM+uB,IAAWyC,EACpDt7C,EAAW,IAAI,CAAGpuB,EAAI,GAAK,AAACE,KAAK,GAAG,CAACk/D,CAAM,CAACK,EAAM,CAAGgK,CAAU,CAAChK,EAAM,EAAK8J,EACvE3mC,IACFxU,EAAW,MAAM,CAAGgxC,EACpBhxC,EAAW,GAAG,CAAGg7C,EAAS,IAAI,CAACppE,EAAE,EAE/BsjE,GACFl1C,CAAAA,EAAW,OAAO,CAAG+0C,GAAiB,IAAI,CAAC,yBAAyB,CAACnjE,EAAGqO,EAAM,MAAM,CAAG,SAAW+xD,EAAI,EAEpG,CAACoJ,GACH,IAAI,CAAC,aAAa,CAACn7D,EAAOrO,EAAGouB,EAAYgyC,GAE3CqJ,EAAarK,CACf,CACF,CACA,gBAAiB,CACf,IAAMP,EAAO,IAAI,CAAC,WAAW,CACvB72B,EAAU62B,EAAK,OAAO,CACtB8K,EAAS3hC,EAAQ,OAAO,EAAIA,EAAQ,OAAO,CAAC,WAAW,EAAI,EAC3DvnC,EAAOo+D,EAAK,IAAI,EAAI,EAAE,CAC5B,GAAI,CAACp+D,EAAK,MAAM,CACd,OAAOkpE,EAET,IAAMC,EAAanpE,CAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAE/D,OAAOP,KAAK,GAAG,CAACypE,EAAQC,EADNnpE,CAAI,CAACA,EAAK,MAAM,CAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAACA,EAAK,MAAM,CAAG,KACzC,CACnD,CACA,MAAO,CACL,IAAMo+D,EAAO,IAAI,CAAC,WAAW,CAC7BA,EAAK,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAEA,EAAK,MAAM,CAAC,IAAI,EACvE,KAAK,CAAC,MACR,CACF,CACAsK,EAAe,EAAE,CAAG,OACpBA,EAAe,QAAQ,CAAG,CACxB,mBAAoB,OACpB,gBAAiB,QACjB,SAAU,GACV,SAAU,EACZ,EACAA,EAAe,SAAS,CAAG,CACzB,OAAQ,CACN,QAAS,CACP,KAAM,UACR,EACA,QAAS,CACP,KAAM,QACR,CACF,CACF,CAEA,OAAMU,UAA4BpJ,EAChC,YAAYr8B,CAAK,CAAE+D,CAAY,CAAE,CAC/B,KAAK,CAAC/D,EAAO+D,GACb,IAAI,CAAC,WAAW,CAAGxnC,KAAAA,EACnB,IAAI,CAAC,WAAW,CAAGA,KAAAA,CACrB,CACA,iBAAiBe,CAAK,CAAE,CACtB,IAAMm9D,EAAO,IAAI,CAAC,WAAW,CACvBz6B,EAAQ,IAAI,CAAC,KAAK,CAClB5Y,EAAS4Y,EAAM,IAAI,CAAC,MAAM,EAAI,EAAE,CAChCxiC,EAAQ,QAAai9D,EAAK,OAAO,CAACn9D,EAAM,CAAC,CAAC,CAAE0iC,EAAM,OAAO,CAAC,MAAM,EACtE,MAAO,CACL,MAAO5Y,CAAM,CAAC9pB,EAAM,EAAI,GACxBE,MAAAA,CACF,CACF,CACA,gBAAgBi9D,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,CACxC,OAAO,QAAgC,CAAC,IAAI,EAAEy+D,EAAMp+D,EAAMsB,EAAO3B,EACnE,CACA,OAAOggE,CAAI,CAAE,CACX,IAAMkH,EAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAClC,IAAI,CAAC,aAAa,GAClB,IAAI,CAAC,cAAc,CAACA,EAAM,EAAGA,EAAK,MAAM,CAAElH,EAC5C,CACA,WAAY,CACV,IAAMvB,EAAO,IAAI,CAAC,WAAW,CACvBn8B,EAAQ,CAAC,IAAK0C,OAAO,iBAAiB,CAAE,IAAKA,OAAO,iBAAiB,EAY3E,OAXAy5B,EAAK,IAAI,CAAC,OAAO,CAAC,CAACxxD,EAAS3L,KAC1B,IAAM09D,EAAS,IAAI,CAAC,SAAS,CAAC19D,GAAO,CAAC,AAClC,EAACw2C,MAAMknB,IAAW,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC19D,KAC7C09D,EAAS18B,EAAM,GAAG,EACpBA,CAAAA,EAAM,GAAG,CAAG08B,CAAK,EAEfA,EAAS18B,EAAM,GAAG,EACpBA,CAAAA,EAAM,GAAG,CAAG08B,CAAK,EAGvB,GACO18B,CACT,CACA,eAAgB,CACd,IAAM0B,EAAQ,IAAI,CAAC,KAAK,CAClBijC,EAAYjjC,EAAM,SAAS,CAC3B+5B,EAAO/5B,EAAM,OAAO,CAEpBikC,EAAcnoE,KAAK,GAAG,CAAC4pE,AADb5pE,KAAK,GAAG,CAACmnE,EAAU,KAAK,CAAGA,EAAU,IAAI,CAAEA,EAAU,MAAM,CAAGA,EAAU,GAAG,EACpD,EAAG,GACpCiB,EAAcpoE,KAAK,GAAG,CAACi+D,EAAK,gBAAgB,CAAG,AAACkK,EAAc,IAAQlK,EAAK,gBAAgB,CAAI,EAAG,GAClGoK,EAAe,AAACF,CAAAA,EAAcC,CAAU,EAAKlkC,EAAM,sBAAsB,EAC/E,KAAI,CAAC,WAAW,CAAGikC,EAAeE,EAAe,IAAI,CAAC,KAAK,CAC3D,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,WAAW,CAAGA,CACxC,CACA,eAAejB,CAAI,CAAEvlE,CAAK,CAAE3B,CAAK,CAAEggE,CAAI,CAAE,KAUnCpgE,EATJ,IAAM+kE,EAAQ3E,AAAS,UAATA,EACRh8B,EAAQ,IAAI,CAAC,KAAK,CAElBokC,EAAgBrK,AADT/5B,EAAM,OAAO,CACC,SAAS,CAC9B9yB,EAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAC/Bi4B,EAAUj4B,EAAM,OAAO,CACvBm4B,EAAUn4B,EAAM,OAAO,CACvBy4D,EAAoBz4D,EAAM,aAAa,CAAC,GAAK,GAAM,GAAE,CACvDJ,EAAQ64D,EAENC,EAAe,IAAM,IAAI,CAAC,oBAAoB,GACpD,IAAKhqE,EAAI,EAAGA,EAAI+B,EAAO,EAAE/B,EACvBkR,GAAS,IAAI,CAAC,aAAa,CAAClR,EAAGogE,EAAM4J,GAEvC,IAAKhqE,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAOJ,IAAK,CACtC,IAAM0oE,EAAMpB,CAAI,CAACtnE,EAAE,CACf+nE,EAAa72D,EACb42D,EAAW52D,EAAQ,IAAI,CAAC,aAAa,CAAClR,EAAGogE,EAAM4J,GAC/C3B,EAAcjkC,EAAM,iBAAiB,CAACpkC,GAAKsR,EAAM,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAACtR,GAAG,CAAC,EAAI,EAC1GkR,EAAQ42D,EACJ/C,IACEyD,EAAc,YAAY,EAC5BH,CAAAA,EAAc,GAEZG,EAAc,aAAa,EAC7BT,CAAAA,EAAaD,EAAWiC,CAAgB,GAG5C,IAAM37C,EAAa,CACjB,EAAGmb,EACH,EAAGE,EACH,YAAa,EACb4+B,YAAAA,EACAN,WAAAA,EACAD,SAAAA,EACA,QAAS,IAAI,CAAC,yBAAyB,CAAC9nE,EAAG0oE,EAAI,MAAM,CAAG,SAAWtI,EACrE,EACA,IAAI,CAAC,aAAa,CAACsI,EAAK1oE,EAAGouB,EAAYgyC,EACzC,CACF,CACA,sBAAuB,CACrB,IAAMvB,EAAO,IAAI,CAAC,WAAW,CACzBz+D,EAAQ,EAMZ,OALAy+D,EAAK,IAAI,CAAC,OAAO,CAAC,CAACxxD,EAAS3L,KACtB,CAACw2C,MAAM,IAAI,CAAC,SAAS,CAACx2C,GAAO,CAAC,GAAK,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAACA,IAClEtB,GAEJ,GACOA,CACT,CACA,cAAcsB,CAAK,CAAE0+D,CAAI,CAAE4J,CAAY,CAAE,CACvC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAACtoE,GAChC,QAAU,IAAI,CAAC,yBAAyB,CAACA,EAAO0+D,GAAM,KAAK,EAAI4J,GAC/D,CACN,CACF,CACAH,EAAoB,EAAE,CAAG,YACzBA,EAAoB,QAAQ,CAAG,CAC7B,gBAAiB,MACjB,UAAW,CACT,cAAe,GACf,aAAc,EAChB,EACA,WAAY,CACV,QAAS,CACP,KAAM,SACN,WAAY,CAAC,IAAK,IAAK,aAAc,WAAY,cAAe,cAAc,AAChF,CACF,EACA,UAAW,IACX,WAAY,CACd,EACAA,EAAoB,SAAS,CAAG,CAC9B,YAAa,EACb,QAAS,CACP,OAAQ,CACN,OAAQ,CACN,eAAezlC,CAAK,EAClB,IAAM3jC,EAAO2jC,EAAM,IAAI,CACvB,GAAI3jC,EAAK,MAAM,CAAC,MAAM,EAAIA,EAAK,QAAQ,CAAC,MAAM,CAAE,CAC9C,GAAM,CAAC,OAAQ,CAACqoE,WAAAA,CAAU,CAAC,CAAC,CAAG1kC,EAAM,MAAM,CAAC,OAAO,CACnD,OAAO3jC,EAAK,MAAM,CAAC,GAAG,CAAC,CAACmQ,EAAO5Q,KAE7B,IAAMoY,EAAQymD,AADDz6B,EAAM,cAAc,CAAC,GACf,UAAU,CAAC,QAAQ,CAACpkC,GACvC,MAAO,CACL,KAAM4Q,EACN,UAAWwH,EAAM,eAAe,CAChC,YAAaA,EAAM,WAAW,CAC9B,UAAWA,EAAM,WAAW,CAC5B,WAAY0wD,EACZ,OAAQ,CAAC1kC,EAAM,iBAAiB,CAACpkC,GACjC,MAAOA,CACT,CACF,EACF,CACA,MAAO,EAAE,AACX,CACF,EACA,QAAQgI,CAAC,CAAE+gE,CAAU,CAAEC,CAAM,EAC3BA,EAAO,KAAK,CAAC,oBAAoB,CAACD,EAAW,KAAK,EAClDC,EAAO,KAAK,CAAC,MAAM,EACrB,CACF,EACA,QAAS,CACP,UAAW,CACT,UACS,GAET,MAAM77D,GACGA,EAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAACA,EAAQ,SAAS,CAAC,CAAG,KAAOA,EAAQ,cAAc,AAEvF,CACF,CACF,EACA,OAAQ,CACN,EAAG,CACD,KAAM,eACN,WAAY,CACV,QAAS,EACX,EACA,YAAa,GACb,KAAM,CACJ,SAAU,EACZ,EACA,YAAa,CACX,QAAS,EACX,EACA,WAAY,CACd,CACF,CACF,CAEA,OAAM88D,UAAsB/C,EAC5B,CACA+C,EAAc,EAAE,CAAG,MACnBA,EAAc,QAAQ,CAAG,CACvB,OAAQ,EACR,SAAU,EACV,cAAe,IACf,OAAQ,MACV,CAEA,OAAMC,UAAwBzJ,EAC5B,iBAAiB/+D,CAAK,CAAE,CACtB,IAAMs9D,EAAS,IAAI,CAAC,WAAW,CAAC,MAAM,CAChCI,EAAS,IAAI,CAAC,SAAS,CAAC19D,GAC9B,MAAO,CACL,MAAOs9D,EAAO,SAAS,EAAE,CAACt9D,EAAM,CAChC,MAAO,GAAKs9D,EAAO,gBAAgB,CAACI,CAAM,CAACJ,EAAO,IAAI,CAAC,CACzD,CACF,CACA,gBAAgBH,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE,CACxC,OAAO,QAAgC,CAAC,IAAI,EAAEy+D,EAAMp+D,EAAMsB,EAAO3B,EACnE,CACA,OAAOggE,CAAI,CAAE,CACX,IAAMvB,EAAO,IAAI,CAAC,WAAW,CACvB/vD,EAAO+vD,EAAK,OAAO,CACnBhwD,EAASgwD,EAAK,IAAI,EAAI,EAAE,CACxBrzC,EAASqzC,EAAK,MAAM,CAAC,SAAS,GAEpC,GADA/vD,EAAK,MAAM,CAAGD,EACVuxD,AAAS,WAATA,EAAmB,CACrB,IAAM9tD,EAAU,IAAI,CAAC,4BAA4B,CAAC8tD,EAC9C,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxB9tD,CAAAA,EAAQ,WAAW,CAAG,GAExB,IAAM8b,EAAa,CACjB,MAAO,GACP,UAAW5C,EAAO,MAAM,GAAK3c,EAAO,MAAM,CAC1CyD,QAAAA,CACF,EACA,IAAI,CAAC,aAAa,CAACxD,EAAMnO,KAAAA,EAAWytB,EAAYgyC,EAClD,CACA,IAAI,CAAC,cAAc,CAACvxD,EAAQ,EAAGA,EAAO,MAAM,CAAEuxD,EAChD,CACA,eAAevxD,CAAM,CAAE9M,CAAK,CAAE3B,CAAK,CAAEggE,CAAI,CAAE,CACzC,IAAM9uD,EAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAC/ByzD,EAAQ3E,AAAS,UAATA,EACd,IAAK,IAAIpgE,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAOJ,IAAK,CAC1C,IAAMqO,EAAQQ,CAAM,CAAC7O,EAAE,CACjBsS,EAAU,IAAI,CAAC,yBAAyB,CAACtS,EAAGqO,EAAM,MAAM,CAAG,SAAW+xD,GACtE+J,EAAgB74D,EAAM,wBAAwB,CAACtR,EAAG,IAAI,CAAC,SAAS,CAACA,GAAG,CAAC,EACrEL,EAAIolE,EAAQzzD,EAAM,OAAO,CAAG64D,EAAc,CAAC,CAC3CpnE,EAAIgiE,EAAQzzD,EAAM,OAAO,CAAG64D,EAAc,CAAC,CAC3C/7C,EAAa,CACjBzuB,EAAAA,EACAoD,EAAAA,EACA,MAAOonE,EAAc,KAAK,CAC1B,KAAMjyB,MAAMv4C,IAAMu4C,MAAMn1C,GACxBuP,QAAAA,CACF,EACA,IAAI,CAAC,aAAa,CAACjE,EAAOrO,EAAGouB,EAAYgyC,EAC3C,CACF,CACF,CACA8J,EAAgB,EAAE,CAAG,QACrBA,EAAgB,QAAQ,CAAG,CACzB,mBAAoB,OACpB,gBAAiB,QACjB,UAAW,IACX,SAAU,GACV,SAAU,CACR,KAAM,CACJ,KAAM,OACR,CACF,CACF,EACAA,EAAgB,SAAS,CAAG,CAC1B,YAAa,EACb,OAAQ,CACN,EAAG,CACD,KAAM,cACR,CACF,CACF,CAEA,OAAM7lB,EACJ,aAAc,CACZ,IAAI,CAAC,CAAC,CAAG1jD,KAAAA,EACT,IAAI,CAAC,CAAC,CAAGA,KAAAA,EACT,IAAI,CAAC,MAAM,CAAG,GACd,IAAI,CAAC,OAAO,CAAGA,KAAAA,EACf,IAAI,CAAC,WAAW,CAAGA,KAAAA,CACrB,CACA,gBAAgBypE,CAAgB,CAAE,CAChC,GAAM,CAACzqE,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAC,CAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAK,IAAI,CAAEqnE,GACzC,MAAO,CAACzqE,EAAAA,EAAGoD,EAAAA,CAAC,CACd,CACA,UAAW,CACT,MAAO,QAAS,IAAI,CAAC,CAAC,GAAK,QAAS,IAAI,CAAC,CAAC,CAC5C,CACA,SAASurB,CAAK,CAAE+7C,CAAK,CAAE,CACrB,IAAMrO,EAAQ,IAAI,CAAC,WAAW,CAC9B,GAAI,CAACqO,GAAS,CAACrO,EACb,OAAO,IAAI,CAEb,IAAMsO,EAAM,CAAC,EAIb,OAHAh8C,EAAM,OAAO,CAAC8F,IACZk2C,CAAG,CAACl2C,EAAK,CAAG4nC,CAAK,CAAC5nC,EAAK,EAAI4nC,CAAK,CAAC5nC,EAAK,CAAC,MAAM,GAAK4nC,CAAK,CAAC5nC,EAAK,CAAC,GAAG,CAAG,IAAI,CAACA,EAAK,AAChF,GACOk2C,CACT,CACF,CACAjmB,EAAQ,QAAQ,CAAG,CAAC,EACpBA,EAAQ,aAAa,CAAG1jD,KAAAA,EAExB,IAAM4pE,EAAa,CACjB,OAAO3oE,GACE,QAAQA,GAASA,EAAQ,GAAKA,EAEvC,QAAQ4oE,CAAS,CAAE9oE,CAAK,CAAE+oE,CAAK,MAKzBC,EAJJ,GAAIF,AAAc,IAAdA,EACF,MAAO,IAET,IAAMG,EAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAEpCthD,EAAQmhD,EACZ,GAAIC,EAAM,MAAM,CAAG,EAAG,CACpB,IAAMG,EAAU1qE,KAAK,GAAG,CAACA,KAAK,GAAG,CAACuqE,CAAK,CAAC,EAAE,CAAC,KAAK,EAAGvqE,KAAK,GAAG,CAACuqE,CAAK,CAACA,EAAM,MAAM,CAAG,EAAE,CAAC,KAAK,GACrFG,CAAAA,EAAU,MAAQA,EAAU,IAAI,GAClCF,CAAAA,EAAW,YAAW,EAExBrhD,EAAQwhD,AAmBd,SAAwBL,CAAS,CAAEC,CAAK,EACtC,IAAIphD,EAAQohD,EAAM,MAAM,CAAG,EAAIA,CAAK,CAAC,EAAE,CAAC,KAAK,CAAGA,CAAK,CAAC,EAAE,CAAC,KAAK,CAAGA,CAAK,CAAC,EAAE,CAAC,KAAK,CAAGA,CAAK,CAAC,EAAE,CAAC,KAAK,CAIhG,OAHIvqE,KAAK,GAAG,CAACmpB,IAAU,GAAKmhD,IAActqE,KAAK,KAAK,CAACsqE,IACnDnhD,CAAAA,EAAQmhD,EAAYtqE,KAAK,KAAK,CAACsqE,EAAS,EAEnCnhD,CACT,EAzB6BmhD,EAAWC,EACpC,CAEA,IAAMK,EAAa5qE,KAAK,GAAG,CAACA,KAAK,GAAG,CAAC,GAAKA,KAAK,KAAK,CADnC,QAAMA,KAAK,GAAG,CAACmpB,KACgC,IAAK,GAC/D/W,EAAU,CAACo4D,SAAAA,EAAU,sBAAuBI,EAAY,sBAAuBA,CAAU,EAE/F,OADAlmE,OAAO,MAAM,CAAC0N,EAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EACzC,QAAak4D,EAAWG,EAAQr4D,EACzC,EACA,YAAYk4D,CAAS,CAAE9oE,CAAK,CAAE+oE,CAAK,EACjC,GAAID,AAAc,IAAdA,EACF,MAAO,IAET,IAAMxN,EAASwN,EAAatqE,KAAK,GAAG,CAAC,GAAIA,KAAK,KAAK,CAAC,QAAMsqE,YAC1D,AAAIxN,AAAW,IAAXA,GAAgBA,AAAW,IAAXA,GAAgBA,AAAW,IAAXA,EAC3BuN,EAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAEC,EAAW9oE,EAAO+oE,GAElD,EACT,CACF,EAQA,MAAaF,EAEb,OAAY,CAAC,QAAS,CACpB,QAAS,GACT,OAAQ,GACR,QAAS,GACT,YAAa,GACb,OAAQ,QACR,MAAO,EACP,KAAM,CACJ,QAAS,GACT,UAAW,EACX,WAAY,GACZ,gBAAiB,GACjB,UAAW,GACX,WAAY,EACZ,UAAW,CAACQ,EAAMz4D,IAAYA,EAAQ,SAAS,CAC/C,UAAW,CAACy4D,EAAMz4D,IAAYA,EAAQ,KAAK,CAC3C,OAAQ,GACR,WAAY,EAAE,CACd,iBAAkB,EAClB,YAAa,CACf,EACA,MAAO,CACL,QAAS,GACT,KAAM,GACN,QAAS,CACP,IAAK,EACL,OAAQ,CACV,CACF,EACA,MAAO,CACL,YAAa,EACb,YAAa,GACb,OAAQ,GACR,gBAAiB,EACjB,gBAAiB,GACjB,QAAS,EACT,QAAS,GACT,SAAU,GACV,gBAAiB,EACjB,YAAa,EACb,SAAU04D,EAAiB,MAAM,CACjC,MAAO,CAAC,EACR,MAAO,CAAC,EACR,MAAO,SACP,WAAY,OACZ,kBAAmB,GACnB,cAAe,4BACf,gBAAiB,CACnB,CACF,GACA,SAAc,CAAC,cAAe,QAAS,GAAI,SAC3C,SAAc,CAAC,aAAc,QAAS,GAAI,eAC1C,SAAc,CAAC,aAAc,cAAe,GAAI,eAChD,SAAc,CAAC,cAAe,QAAS,GAAI,SAC3C,YAAiB,CAAC,QAAS,CACzB,UAAW,GACX,YAAa,AAAC/zD,GAAS,CAACA,EAAK,UAAU,CAAC,WAAa,CAACA,EAAK,UAAU,CAAC,UAAYA,AAAS,aAATA,GAAuBA,AAAS,WAATA,EACzG,WAAY,AAACA,GAASA,AAAS,eAATA,GAAyBA,AAAS,mBAATA,CACjD,GACA,YAAiB,CAAC,SAAU,CAC1B,UAAW,OACb,GACA,YAAiB,CAAC,cAAe,CAC/B,YAAa,AAACA,GAASA,AAAS,oBAATA,GAA8BA,AAAS,aAATA,EACrD,WAAY,AAACA,GAASA,AAAS,oBAATA,CACxB,GAyEA,SAASg0D,EAAKR,CAAK,CAAES,CAAQ,CAAE3D,CAAO,CAAE4D,CAAU,CAAEC,CAAQ,MAItD78D,EAAQvO,EAAG2B,EAHf,IAAMI,EAAQ,QAAeopE,EAAY,GACnCrpE,EAAM5B,KAAK,GAAG,CAAC,QAAekrE,EAAUX,EAAM,MAAM,EAAGA,EAAM,MAAM,EACrErqE,EAAQ,EAQZ,IANAmnE,EAAUrnE,KAAK,IAAI,CAACqnE,GAChB6D,GAEF7D,CAAAA,EAAUh5D,AADVA,CAAAA,EAAS68D,EAAWD,CAAS,EACVjrE,KAAK,KAAK,CAACqO,EAASg5D,EAAO,EAEhD5lE,EAAOI,EACAJ,EAAO,GAEZA,EAAOzB,KAAK,KAAK,CAAC6B,GAAQ3B,EAAAA,EAAQmnE,GAEpC,IAAKvnE,EAAIE,KAAK,GAAG,CAAC6B,EAAO,GAAI/B,EAAI8B,EAAK9B,IAChCA,IAAM2B,IACRupE,EAAS,IAAI,CAACT,CAAK,CAACzqE,EAAE,EAEtB2B,EAAOzB,KAAK,KAAK,CAAC6B,GAAQ3B,EAAAA,EAAQmnE,GAGxC,CAeA,IAAM8D,EAAe,AAAC32D,GAAUA,AAAU,SAAVA,EAAmB,QAAUA,AAAU,UAAVA,EAAoB,OAASA,EACpF42D,EAAiB,CAACh6D,EAAOu/B,EAAM39B,IAAW29B,AAAS,QAATA,GAAkBA,AAAS,SAATA,EAAkBv/B,CAAK,CAACu/B,EAAK,CAAG39B,EAAS5B,CAAK,CAACu/B,EAAK,CAAG39B,EACzH,SAASq4D,EAAO9+B,CAAG,CAAE++B,CAAQ,EAC3B,IAAMn/C,EAAS,EAAE,CACXo/C,EAAYh/B,EAAI,MAAM,CAAG++B,EACzB/tB,EAAMhR,EAAI,MAAM,CAClBzsC,EAAI,EACR,KAAOA,EAAIy9C,EAAKz9C,GAAKyrE,EACnBp/C,EAAO,IAAI,CAACogB,CAAG,CAACvsC,KAAK,KAAK,CAACF,GAAG,EAEhC,OAAOqsB,CACT,CAqCA,SAASq/C,EAAkBp5D,CAAO,EAChC,OAAOA,EAAQ,SAAS,CAAGA,EAAQ,UAAU,CAAG,CAClD,CACA,SAASq5D,EAAer5D,CAAO,CAAEs5D,CAAQ,EACvC,GAAI,CAACt5D,EAAQ,OAAO,CAClB,OAAO,EAET,IAAMsvB,EAAO,QAAOtvB,EAAQ,IAAI,CAAEs5D,GAC5BnhE,EAAU,QAAU6H,EAAQ,OAAO,EAEzC,MAAO,AADO,SAAQA,EAAQ,IAAI,EAAIA,EAAQ,IAAI,CAAC,MAAM,CAAG,GAC5CsvB,EAAK,UAAU,CAAIn3B,EAAQ,MAAM,AACnD,CAuDA,MAAM84C,UAAcc,EAClB,YAAYpf,CAAG,CAAE,CACf,KAAK,GACL,IAAI,CAAC,EAAE,CAAGA,EAAI,EAAE,CAChB,IAAI,CAAC,IAAI,CAAGA,EAAI,IAAI,CACpB,IAAI,CAAC,OAAO,CAAGtkC,KAAAA,EACf,IAAI,CAAC,GAAG,CAAGskC,EAAI,GAAG,CAClB,IAAI,CAAC,KAAK,CAAGA,EAAI,KAAK,CACtB,IAAI,CAAC,GAAG,CAAGtkC,KAAAA,EACX,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,IAAI,CAAGA,KAAAA,EACZ,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,QAAQ,CAAG,CACd,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,SAAS,CAAGA,KAAAA,EACjB,IAAI,CAAC,UAAU,CAAGA,KAAAA,EAClB,IAAI,CAAC,aAAa,CAAGA,KAAAA,EACrB,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,YAAY,CAAGA,KAAAA,EACpB,IAAI,CAAC,IAAI,CAAGA,KAAAA,EACZ,IAAI,CAAC,aAAa,CAAGA,KAAAA,EACrB,IAAI,CAAC,GAAG,CAAGA,KAAAA,EACX,IAAI,CAAC,GAAG,CAAGA,KAAAA,EACX,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,KAAK,CAAG,EAAE,CACf,IAAI,CAAC,cAAc,CAAG,KACtB,IAAI,CAAC,WAAW,CAAG,KACnB,IAAI,CAAC,WAAW,CAAG,KACnB,IAAI,CAAC,OAAO,CAAG,EACf,IAAI,CAAC,UAAU,CAAG,EAClB,IAAI,CAAC,iBAAiB,CAAG,CAAC,EAC1B,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,SAAS,CAAGA,KAAAA,EACjB,IAAI,CAAC,cAAc,CAAG,GACtB,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,aAAa,CAAGA,KAAAA,EACrB,IAAI,CAAC,aAAa,CAAGA,KAAAA,EACrB,IAAI,CAAC,YAAY,CAAG,EACpB,IAAI,CAAC,YAAY,CAAG,EACpB,IAAI,CAAC,MAAM,CAAG,CAAC,EACf,IAAI,CAAC,iBAAiB,CAAG,GACzB,IAAI,CAAC,QAAQ,CAAGA,KAAAA,CAClB,CACA,KAAK2R,CAAO,CAAE,CACZ,IAAI,CAAC,OAAO,CAAGA,EAAQ,UAAU,CAAC,IAAI,CAAC,UAAU,IACjD,IAAI,CAAC,IAAI,CAAGA,EAAQ,IAAI,CACxB,IAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,KAAK,CAACA,EAAQ,GAAG,EACtC,IAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,KAAK,CAACA,EAAQ,GAAG,EACtC,IAAI,CAAC,aAAa,CAAG,IAAI,CAAC,KAAK,CAACA,EAAQ,YAAY,EACpD,IAAI,CAAC,aAAa,CAAG,IAAI,CAAC,KAAK,CAACA,EAAQ,YAAY,CACtD,CACA,MAAM2Q,CAAG,CAAEvhB,CAAK,CAAE,CAChB,OAAOuhB,CACT,CACA,eAAgB,CACd,GAAI,CAAC4oD,SAAAA,CAAQ,CAAEC,SAAAA,CAAQ,CAAEC,cAAAA,CAAa,CAAEC,cAAAA,CAAa,CAAC,CAAG,IAAI,CAK7D,OAJAH,EAAW,QAAgBA,EAAUzmC,OAAO,iBAAiB,EAC7D0mC,EAAW,QAAgBA,EAAU1mC,OAAO,iBAAiB,EAC7D2mC,EAAgB,QAAgBA,EAAe3mC,OAAO,iBAAiB,EACvE4mC,EAAgB,QAAgBA,EAAe5mC,OAAO,iBAAiB,EAChE,CACL,IAAK,QAAgBymC,EAAUE,GAC/B,IAAK,QAAgBD,EAAUE,GAC/B,WAAY,QAAeH,GAC3B,WAAY,QAAeC,EAC7B,CACF,CACA,UAAUtL,CAAQ,CAAE,CAClB,IACI99B,EADA,CAACV,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAEugC,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAC,CAAG,IAAI,CAAC,aAAa,GAE3D,GAAID,GAAcC,EAChB,MAAO,CAACzgC,IAAAA,EAAKC,IAAAA,CAAG,EAElB,IAAMgqC,EAAQ,IAAI,CAAC,uBAAuB,GAC1C,IAAK,IAAIjsE,EAAI,EAAG8hC,EAAOmqC,EAAM,MAAM,CAAEjsE,EAAI8hC,EAAM,EAAE9hC,EAC/C0iC,EAAQupC,CAAK,CAACjsE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAEwgE,GACxC,CAACgC,GACHxgC,CAAAA,EAAM9hC,KAAK,GAAG,CAAC8hC,EAAKU,EAAM,GAAG,GAE3B,CAAC+/B,GACHxgC,CAAAA,EAAM/hC,KAAK,GAAG,CAAC+hC,EAAKS,EAAM,GAAG,GAKjC,OAFAV,EAAMygC,GAAczgC,EAAMC,EAAMA,EAAMD,EACtCC,EAAMugC,GAAcxgC,EAAMC,EAAMD,EAAMC,EAC/B,CACL,IAAK,QAAgBD,EAAK,QAAgBC,EAAKD,IAC/C,IAAK,QAAgBC,EAAK,QAAgBD,EAAKC,GACjD,CACF,CACA,YAAa,CACX,MAAO,CACL,KAAM,IAAI,CAAC,WAAW,EAAI,EAC1B,IAAK,IAAI,CAAC,UAAU,EAAI,EACxB,MAAO,IAAI,CAAC,YAAY,EAAI,EAC5B,OAAQ,IAAI,CAAC,aAAa,EAAI,CAChC,CACF,CACA,UAAW,CACT,OAAO,IAAI,CAAC,KAAK,AACnB,CACA,WAAY,CACV,IAAMxhC,EAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAK,KAAI,CAAC,YAAY,GAAKA,EAAK,OAAO,CAAGA,EAAK,OAAO,AAAD,GAAMA,EAAK,MAAM,EAAI,EAAE,AACxG,CACA,cAAe,CACb,IAAI,CAAC,MAAM,CAAG,CAAC,EACf,IAAI,CAAC,iBAAiB,CAAG,EAC3B,CACA,cAAe,CACb,QAAS,IAAI,CAAC,OAAO,CAAC,YAAY,CAAE,CAAC,IAAI,CAAC,CAC5C,CACA,OAAOiY,CAAQ,CAAEwzD,CAAS,CAAEC,CAAO,CAAE,CACnC,GAAM,CAACC,YAAAA,CAAW,CAAEC,MAAAA,CAAK,CAAE,MAAOC,CAAQ,CAAC,CAAG,IAAI,CAAC,OAAO,CACpDC,EAAaD,EAAS,UAAU,CACtC,IAAI,CAAC,YAAY,GACjB,IAAI,CAAC,QAAQ,CAAG5zD,EAChB,IAAI,CAAC,SAAS,CAAGwzD,EACjB,IAAI,CAAC,QAAQ,CAAGC,EAAUvnE,OAAO,MAAM,CAAC,CACtC,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EAAGunE,GACH,IAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,WAAW,CAAG,KACnB,IAAI,CAAC,cAAc,CAAG,KACtB,IAAI,CAAC,WAAW,CAAG,KACnB,IAAI,CAAC,mBAAmB,GACxB,IAAI,CAAC,aAAa,GAClB,IAAI,CAAC,kBAAkB,GACvB,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,YAAY,GAC/B,IAAI,CAAC,KAAK,CAAGA,EAAQ,IAAI,CAAGA,EAAQ,KAAK,CACzC,IAAI,CAAC,MAAM,CAAGA,EAAQ,GAAG,CAAGA,EAAQ,MAAM,CAC1C,CAAC,IAAI,CAAC,iBAAiB,GACzB,IAAI,CAAC,gBAAgB,GACrB,IAAI,CAAC,mBAAmB,GACxB,IAAI,CAAC,eAAe,GACpB,IAAI,CAAC,MAAM,CAAG,QAAU,IAAI,CAAEE,EAAOD,GACrC,IAAI,CAAC,iBAAiB,CAAG,IAE3B,IAAI,CAAC,gBAAgB,GACrB,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,UAAU,IAAM,EAAE,CACpC,IAAI,CAAC,eAAe,GACpB,IAAMI,EAAkBD,EAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CACtD,IAAI,CAAC,qBAAqB,CAACC,EAAkBjB,EAAO,IAAI,CAAC,KAAK,CAAEgB,GAAc,IAAI,CAAC,KAAK,EACxF,IAAI,CAAC,SAAS,GACd,IAAI,CAAC,4BAA4B,GACjC,IAAI,CAAC,sBAAsB,GAC3B,IAAI,CAAC,2BAA2B,GAC5BD,EAAS,OAAO,EAAKA,CAAAA,EAAS,QAAQ,EAAIA,AAAoB,SAApBA,EAAS,MAAM,AAAU,IACrE,IAAI,CAAC,KAAK,CAAGG,AA7XnB,SAAkBn7D,CAAK,CAAEm5D,CAAK,EAC5B,IAAM6B,EAAWh7D,EAAM,OAAO,CAAC,KAAK,CAC9Bo7D,EAAaJ,EAAS,aAAa,EAAIK,AAwB/C,SAA2Br7D,CAAK,EAC9B,IAAM4B,EAAS5B,EAAM,OAAO,CAAC,MAAM,CAC7Bs7D,EAAat7D,EAAM,SAAS,GAC5BoS,EAAWpS,EAAM,OAAO,CAAGs7D,EAAc15D,CAAAA,EAAS,EAAI,GAE5D,OAAOhT,KAAK,KAAK,CAACA,KAAK,GAAG,CAACwjB,EADVpS,EAAM,UAAU,CAAGs7D,GAEtC,EA9BiEt7D,GACzDu7D,EAAeP,EAAS,KAAK,CAAC,OAAO,CAAGQ,AA6ChD,SAAyBrC,CAAK,MAExBzqE,EAAG8hC,EADP,IAAMzV,EAAS,EAAE,CAEjB,IAAKrsB,EAAI,EAAG8hC,EAAO2oC,EAAM,MAAM,CAAEzqE,EAAI8hC,EAAM9hC,IACrCyqE,CAAK,CAACzqE,EAAE,CAAC,KAAK,EAChBqsB,EAAO,IAAI,CAACrsB,GAGhB,OAAOqsB,CACT,EAtDgEo+C,GAAS,EAAE,CACnEsC,EAAkBF,EAAa,MAAM,CACrC9vD,EAAQ8vD,CAAY,CAAC,EAAE,CACvBhzD,EAAOgzD,CAAY,CAACE,EAAkB,EAAE,CACxC7B,EAAW,EAAE,CACnB,GAAI6B,EAAkBL,EAEpB,OADAM,AAiDJ,SAAoBvC,CAAK,CAAES,CAAQ,CAAE2B,CAAY,CAAEtF,CAAO,EACxD,IAEIvnE,EAFAI,EAAQ,EACRuB,EAAOkrE,CAAY,CAAC,EAAE,CAG1B,IAAK7sE,EAAI,EADTunE,EAAUrnE,KAAK,IAAI,CAACqnE,GACRvnE,EAAIyqE,EAAM,MAAM,CAAEzqE,IACxBA,IAAM2B,IACRupE,EAAS,IAAI,CAACT,CAAK,CAACzqE,EAAE,EAEtB2B,EAAOkrE,CAAY,CAACzsE,EAAAA,EAAQmnE,EAAQ,CAG1C,EA7DekD,EAAOS,EAAU2B,EAAcE,EAAkBL,GACrDxB,EAET,IAAM3D,EAAU0F,AAqBlB,SAA0BJ,CAAY,CAAEpC,CAAK,CAAEiC,CAAU,EACvD,IAAMQ,EAAmBC,AA4D3B,SAAwB1gC,CAAG,MAErBzsC,EAAGotE,EADP,IAAM3vB,EAAMhR,EAAI,MAAM,CAEtB,GAAIgR,EAAM,EACR,MAAO,GAET,IAAK2vB,EAAO3gC,CAAG,CAAC,EAAE,CAAEzsC,EAAI,EAAGA,EAAIy9C,EAAK,EAAEz9C,EACpC,GAAIysC,CAAG,CAACzsC,EAAE,CAAGysC,CAAG,CAACzsC,EAAI,EAAE,GAAKotE,EAC1B,MAAO,GAGX,OAAOA,CACT,EAxE0CP,GAClCtF,EAAUkD,EAAM,MAAM,CAAGiC,EAC/B,GAAI,CAACQ,EACH,OAAOhtE,KAAK,GAAG,CAACqnE,EAAS,GAE3B,IAAM8F,EAAU,QAAWH,GAC3B,IAAK,IAAIltE,EAAI,EAAG8hC,EAAOurC,EAAQ,MAAM,CAAG,EAAGrtE,EAAI8hC,EAAM9hC,IAAK,CACxD,IAAM08D,EAAS2Q,CAAO,CAACrtE,EAAE,CACzB,GAAI08D,EAAS6K,EACX,OAAO7K,CAEX,CACA,OAAOx8D,KAAK,GAAG,CAACqnE,EAAS,EAC3B,EAnCmCsF,EAAcpC,EAAOiC,GACtD,GAAIK,EAAkB,EAAG,KACnB/sE,EAAG8hC,EACP,IAAMwrC,EAAkBP,EAAkB,EAAI7sE,KAAK,KAAK,CAAC,AAAC2Z,CAAAA,EAAOkD,CAAI,EAAMgwD,CAAAA,EAAkB,IAAM,KAEnG,IAAK/sE,AADLirE,EAAKR,EAAOS,EAAU3D,EAAS,QAAc+F,GAAmB,EAAIvwD,EAAQuwD,EAAiBvwD,GACxF/c,EAAI,EAAG8hC,EAAOirC,EAAkB,EAAG/sE,EAAI8hC,EAAM9hC,IAChDirE,EAAKR,EAAOS,EAAU3D,EAASsF,CAAY,CAAC7sE,EAAE,CAAE6sE,CAAY,CAAC7sE,EAAI,EAAE,EAGrE,OADAirE,EAAKR,EAAOS,EAAU3D,EAAS1tD,EAAM,QAAcyzD,GAAmB7C,EAAM,MAAM,CAAG5wD,EAAOyzD,GACrFpC,CACT,CAEA,OADAD,EAAKR,EAAOS,EAAU3D,GACf2D,CACT,EAoW4B,IAAI,CAAE,IAAI,CAAC,KAAK,EACtC,IAAI,CAAC,WAAW,CAAG,KACnB,IAAI,CAAC,aAAa,IAEhBsB,GACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAEvC,IAAI,CAAC,SAAS,GACd,IAAI,CAAC,GAAG,GACR,IAAI,CAAC,QAAQ,GACb,IAAI,CAAC,WAAW,EAClB,CACA,WAAY,CACV,IACIlG,EAAYC,EADZgH,EAAgB,IAAI,CAAC,OAAO,CAAC,OAAO,CAEpC,IAAI,CAAC,YAAY,IACnBjH,EAAa,IAAI,CAAC,IAAI,CACtBC,EAAW,IAAI,CAAC,KAAK,GAErBD,EAAa,IAAI,CAAC,GAAG,CACrBC,EAAW,IAAI,CAAC,MAAM,CACtBgH,EAAgB,CAACA,GAEnB,IAAI,CAAC,WAAW,CAAGjH,EACnB,IAAI,CAAC,SAAS,CAAGC,EACjB,IAAI,CAAC,cAAc,CAAGgH,EACtB,IAAI,CAAC,OAAO,CAAGhH,EAAWD,EAC1B,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,OAAO,CAAC,aAAa,AAClD,CACA,aAAc,CACZ,QAAS,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC,IAAI,CAAC,CAC3C,CACA,qBAAsB,CACpB,QAAS,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAE,CAAC,IAAI,CAAC,CACnD,CACA,eAAgB,CACV,IAAI,CAAC,YAAY,IACnB,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,QAAQ,CAC1B,IAAI,CAAC,IAAI,CAAG,EACZ,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,KAAK,GAEvB,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,SAAS,CAC5B,IAAI,CAAC,GAAG,CAAG,EACX,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,MAAM,EAE3B,IAAI,CAAC,WAAW,CAAG,EACnB,IAAI,CAAC,UAAU,CAAG,EAClB,IAAI,CAAC,YAAY,CAAG,EACpB,IAAI,CAAC,aAAa,CAAG,CACvB,CACA,oBAAqB,CACnB,QAAS,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAE,CAAC,IAAI,CAAC,CAClD,CACA,WAAWrvD,CAAI,CAAE,CACf,IAAI,CAAC,KAAK,CAAC,aAAa,CAACA,EAAM,IAAI,CAAC,UAAU,IAC9C,QAAS,IAAI,CAAC,OAAO,CAACA,EAAK,CAAE,CAAC,IAAI,CAAC,CACrC,CACA,kBAAmB,CACjB,IAAI,CAAC,UAAU,CAAC,mBAClB,CACA,qBAAsB,CAAC,CACvB,iBAAkB,CAChB,IAAI,CAAC,UAAU,CAAC,kBAClB,CACA,kBAAmB,CACjB,IAAI,CAAC,UAAU,CAAC,mBAClB,CACA,YAAa,CACX,MAAO,EAAE,AACX,CACA,iBAAkB,CAChB,IAAI,CAAC,UAAU,CAAC,kBAClB,CACA,6BAA8B,CAC5B,QAAS,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAE,CAAC,IAAI,CAAC,CAC3D,CACA,mBAAmBwzD,CAAK,CAAE,KAEpBzqE,EAAG8hC,EAAM2f,EADb,IAAM6qB,EAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAEnC,IAAKtsE,EAAI,EAAG8hC,EAAO2oC,EAAM,MAAM,CAAEzqE,EAAI8hC,EAAM9hC,IAEzCyhD,AADAA,CAAAA,EAAOgpB,CAAK,CAACzqE,EAAE,AAAD,EACT,KAAK,CAAG,QAASssE,EAAS,QAAQ,CAAE,CAAC7qB,EAAK,KAAK,CAAEzhD,EAAGyqE,EAAM,CAAE,IAAI,CAEzE,CACA,4BAA6B,CAC3B,QAAS,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAE,CAAC,IAAI,CAAC,CAC1D,CACA,8BAA+B,CAC7B,QAAS,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAE,CAAC,IAAI,CAAC,CAC5D,CACA,wBAAyB,KAOnB+C,EAAWtB,EAAWuB,EAN1B,IAAMn7D,EAAU,IAAI,CAAC,OAAO,CACtBg6D,EAAWh6D,EAAQ,KAAK,CACxBo7D,EAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAC5BC,EAAcrB,EAAS,WAAW,EAAI,EACtCsB,EAActB,EAAS,WAAW,CACpCuB,EAAgBF,EAEpB,GAAI,CAAC,IAAI,CAAC,UAAU,IAAM,CAACrB,EAAS,OAAO,EAAIqB,GAAeC,GAAeF,GAAY,GAAK,CAAC,IAAI,CAAC,YAAY,GAAI,CAClH,IAAI,CAAC,aAAa,CAAGC,EACrB,MACF,CACA,IAAMG,EAAa,IAAI,CAAC,cAAc,GAChCC,EAAgBD,EAAW,MAAM,CAAC,KAAK,CACvCE,EAAiBF,EAAW,OAAO,CAAC,MAAM,CAC1Cp1D,EAAW,QAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAGq1D,EAAe,EAAG,IAAI,CAAC,QAAQ,EAE3EA,EAAgB,EADpBP,CAAAA,EAAYl7D,EAAQ,MAAM,CAAG,IAAI,CAAC,QAAQ,CAAGo7D,EAAWh1D,EAAYg1D,CAAAA,EAAW,EAAC,IAE9EF,EAAY90D,EAAYg1D,CAAAA,EAAYp7D,CAAAA,EAAQ,MAAM,CAAG,GAAM,EAAC,EAC5D45D,EAAY,IAAI,CAAC,SAAS,CAAGR,EAAkBp5D,EAAQ,IAAI,EAC3Dg6D,EAAS,OAAO,CAAGX,EAAer5D,EAAQ,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EACxEm7D,EAAmBvtE,KAAK,IAAI,CAAC6tE,EAAgBA,EAAgBC,EAAiBA,GAK9EH,EAAgB3tE,KAAK,GAAG,CAACytE,EAAaztE,KAAK,GAAG,CAAC0tE,EAJ/CC,EAAgB,QAAU3tE,KAAK,GAAG,CAChCA,KAAK,IAAI,CAAC,QAAY,AAAC4tE,CAAAA,EAAW,OAAO,CAAC,MAAM,CAAG,GAAKN,EAAW,GAAI,IACvEttE,KAAK,IAAI,CAAC,QAAYgsE,EAAYuB,EAAkB,GAAI,IAAMvtE,KAAK,IAAI,CAAC,QAAY8tE,EAAiBP,EAAkB,GAAI,SAI/H,IAAI,CAAC,aAAa,CAAGI,CACvB,CACA,6BAA8B,CAC5B,QAAS,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAE,CAAC,IAAI,CAAC,CAC3D,CACA,eAAgB,CAAC,CACjB,WAAY,CACV,QAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,CACzC,CACA,KAAM,CACJ,IAAM/D,EAAU,CACd,MAAO,EACP,OAAQ,CACV,EACM,CAAC1lC,MAAAA,CAAK,CAAE,QAAS,CAAC,MAAOkoC,CAAQ,CAAE,MAAO2B,CAAS,CAAE,KAAMC,CAAQ,CAAC,CAAC,CAAG,IAAI,CAC5EvqC,EAAU,IAAI,CAAC,UAAU,GACzBwqC,EAAe,IAAI,CAAC,YAAY,GACtC,GAAIxqC,EAAS,CACX,IAAMyqC,EAAczC,EAAesC,EAAW7pC,EAAM,OAAO,CAAC,IAAI,EAQhE,GAPI+pC,GACFrE,EAAQ,KAAK,CAAG,IAAI,CAAC,QAAQ,CAC7BA,EAAQ,MAAM,CAAG4B,EAAkBwC,GAAYE,IAE/CtE,EAAQ,MAAM,CAAG,IAAI,CAAC,SAAS,CAC/BA,EAAQ,KAAK,CAAG4B,EAAkBwC,GAAYE,GAE5C9B,EAAS,OAAO,EAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,CACzC,GAAM,CAACvvD,MAAAA,CAAK,CAAElD,KAAAA,CAAI,CAAEw0D,OAAAA,CAAM,CAAEC,QAAAA,CAAO,CAAC,CAAG,IAAI,CAAC,cAAc,GACpDC,EAAcjC,AAAmB,EAAnBA,EAAS,OAAO,CAC9BkC,EAAe,QAAU,IAAI,CAAC,aAAa,EAC3CjpC,EAAMrlC,KAAK,GAAG,CAACsuE,GACfhpC,EAAMtlC,KAAK,GAAG,CAACsuE,GACrB,GAAIL,EAAc,CAChB,IAAMM,EAAcnC,EAAS,MAAM,CAAG,EAAI9mC,EAAM6oC,EAAO,KAAK,CAAG9oC,EAAM+oC,EAAQ,MAAM,AACnFxE,CAAAA,EAAQ,MAAM,CAAG5pE,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAE4pE,EAAQ,MAAM,CAAG2E,EAAcF,EAC3E,KAAO,CACL,IAAMG,EAAapC,EAAS,MAAM,CAAG,EAAI/mC,EAAM8oC,EAAO,KAAK,CAAG7oC,EAAM8oC,EAAQ,MAAM,AAClFxE,CAAAA,EAAQ,KAAK,CAAG5pE,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAE4pE,EAAQ,KAAK,CAAG4E,EAAaH,EACvE,CACA,IAAI,CAAC,iBAAiB,CAACxxD,EAAOlD,EAAM2rB,EAAKD,EAC3C,CACF,CACA,IAAI,CAAC,cAAc,GACf4oC,GACF,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,OAAO,CAAG/pC,EAAM,KAAK,CAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAClF,IAAI,CAAC,MAAM,CAAG0lC,EAAQ,MAAM,GAE5B,IAAI,CAAC,KAAK,CAAGA,EAAQ,KAAK,CAC1B,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,OAAO,CAAG1lC,EAAM,MAAM,CAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAExF,CACA,kBAAkBrnB,CAAK,CAAElD,CAAI,CAAE2rB,CAAG,CAAED,CAAG,CAAE,CACvC,GAAM,CAAC,MAAO,CAAC7wB,MAAAA,CAAK,CAAEjK,QAAAA,CAAO,CAAC,CAAEwS,SAAAA,CAAQ,CAAC,CAAG,IAAI,CAAC,OAAO,CAClD0xD,EAAY,AAAuB,IAAvB,IAAI,CAAC,aAAa,CAC9BC,EAAmB3xD,AAAa,QAAbA,GAAsB,AAAc,MAAd,IAAI,CAAC,IAAI,CACxD,GAAI,IAAI,CAAC,YAAY,GAAI,CACvB,IAAM4xD,EAAa,IAAI,CAAC,eAAe,CAAC,GAAK,IAAI,CAAC,IAAI,CAChDC,EAAc,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAG,GACtE/iE,EAAc,EACdF,EAAe,EACf8iE,EACEC,GACF7iE,EAAcw5B,EAAMxoB,EAAM,KAAK,CAC/BlR,EAAe25B,EAAM3rB,EAAK,MAAM,GAEhC9N,EAAcy5B,EAAMzoB,EAAM,MAAM,CAChClR,EAAe05B,EAAM1rB,EAAK,KAAK,EAExBnF,AAAU,UAAVA,EACT7I,EAAegO,EAAK,KAAK,CAChBnF,AAAU,QAAVA,EACT3I,EAAcgR,EAAM,KAAK,CACN,UAAVrI,IACT3I,EAAcgR,EAAM,KAAK,CAAG,EAC5BlR,EAAegO,EAAK,KAAK,CAAG,GAE9B,IAAI,CAAC,WAAW,CAAG3Z,KAAK,GAAG,CAAC,AAAC6L,CAAAA,EAAc8iE,EAAapkE,CAAM,EAAK,IAAI,CAAC,KAAK,CAAI,KAAI,CAAC,KAAK,CAAGokE,CAAS,EAAI,GAC3G,IAAI,CAAC,YAAY,CAAG3uE,KAAK,GAAG,CAAC,AAAC2L,CAAAA,EAAeijE,EAAcrkE,CAAM,EAAK,IAAI,CAAC,KAAK,CAAI,KAAI,CAAC,KAAK,CAAGqkE,CAAU,EAAI,EACjH,KAAO,CACL,IAAIljE,EAAaiO,EAAK,MAAM,CAAG,EAC3B/N,EAAgBiR,EAAM,MAAM,CAAG,CAC/BrI,AAAU,WAAVA,GACF9I,EAAa,EACbE,EAAgBiR,EAAM,MAAM,EACT,QAAVrI,IACT9I,EAAaiO,EAAK,MAAM,CACxB/N,EAAgB,GAElB,IAAI,CAAC,UAAU,CAAGF,EAAanB,EAC/B,IAAI,CAAC,aAAa,CAAGqB,EAAgBrB,CACvC,CACF,CACA,gBAAiB,CACX,IAAI,CAAC,QAAQ,GACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAGvK,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAGA,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAC/D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAGA,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAGA,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,CAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAE5E,CACA,UAAW,CACT,QAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,CACxC,CACA,cAAe,CACb,GAAM,CAACwlC,KAAAA,CAAI,CAAEzoB,SAAAA,CAAQ,CAAC,CAAG,IAAI,CAAC,OAAO,CACrC,MAAOA,AAAa,QAAbA,GAAsBA,AAAa,WAAbA,GAAyByoB,AAAS,MAATA,CACxD,CACA,YAAa,CACX,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,AAC9B,CACA,sBAAsB+kC,CAAK,CAAE,KAGvBzqE,EAAG8hC,EACP,IAAK9hC,AAHL,IAAI,CAAC,2BAA2B,GAChC,IAAI,CAAC,kBAAkB,CAACyqE,GAEnBzqE,EAAI,EAAG8hC,EAAO2oC,EAAM,MAAM,CAAEzqE,EAAI8hC,EAAM9hC,IACrC,QAAcyqE,CAAK,CAACzqE,EAAE,CAAC,KAAK,IAC9ByqE,EAAM,MAAM,CAACzqE,EAAG,GAChB8hC,IACA9hC,KAGJ,IAAI,CAAC,0BAA0B,EACjC,CACA,gBAAiB,CACf,IAAI8tE,EAAa,IAAI,CAAC,WAAW,CACjC,GAAI,CAACA,EAAY,CACf,IAAMvB,EAAa,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAC5C9B,EAAQ,IAAI,CAAC,KAAK,CAClB8B,EAAa9B,EAAM,MAAM,EAC3BA,CAAAA,EAAQc,EAAOd,EAAO8B,EAAU,EAElC,IAAI,CAAC,WAAW,CAAGuB,EAAa,IAAI,CAAC,kBAAkB,CAACrD,EAAOA,EAAM,MAAM,CAC7E,CACA,OAAOqD,CACT,CACA,mBAAmBrD,CAAK,CAAEl8D,CAAM,CAAE,KA3eZwgE,EAAQxgE,MAifxBvO,EAAG6G,EAAG6/B,EAAM91B,EAAOo+D,EAAUC,EAAY78C,EAAO9Z,EAAYrF,EAAO1R,EAAQ2tE,EAL/E,GAAM,CAAC95C,IAAAA,CAAG,CAAE,kBAAmB25C,CAAM,CAAC,CAAG,IAAI,CACvCI,EAAS,EAAE,CACXC,EAAU,EAAE,CACdC,EAAkB,EAClBC,EAAmB,EAEvB,IAAKtvE,EAAI,EAAGA,EAAIuO,EAAQ,EAAEvO,EAAG,CAO3B,GANA4Q,EAAQ65D,CAAK,CAACzqE,EAAE,CAAC,KAAK,CACtBgvE,EAAW,IAAI,CAAC,uBAAuB,CAAChvE,GACxCo1B,EAAI,IAAI,CAAG65C,EAAaD,EAAS,MAAM,CACvC58C,EAAQ28C,CAAM,CAACE,EAAW,CAAGF,CAAM,CAACE,EAAW,EAAI,CAAC,KAAM,CAAC,EAAG,GAAI,EAAE,EACpE32D,EAAa02D,EAAS,UAAU,CAChC/7D,EAAQ1R,EAAS,EACb,AAAC,QAAcqP,IAAW,QAAQA,GAG/B,IAAI,QAAQA,GACjB,IAAK/J,EAAI,EAAG6/B,EAAO91B,EAAM,MAAM,CAAE/J,EAAI6/B,EAAM,EAAE7/B,EAC3CqoE,EAAct+D,CAAK,CAAC/J,EAAE,CAClB,CAAC,QAAcqoE,IAAgB,CAAC,QAAQA,KAC1Cj8D,EAAQ,QAAamiB,EAAKhD,EAAM,IAAI,CAAEA,EAAM,EAAE,CAAEnf,EAAOi8D,GACvD3tE,GAAU+W,EAGhB,MAVErF,EAAQ,QAAamiB,EAAKhD,EAAM,IAAI,CAAEA,EAAM,EAAE,CAAEnf,EAAOrC,GACvDrP,EAAS+W,EAUX62D,EAAO,IAAI,CAACl8D,GACZm8D,EAAQ,IAAI,CAAC7tE,GACb8tE,EAAkBnvE,KAAK,GAAG,CAAC+S,EAAOo8D,GAClCC,EAAmBpvE,KAAK,GAAG,CAACqB,EAAQ+tE,EACtC,CAzgBoBP,EA0gBLA,EA1gBaxgE,EA0gBLA,EAzgBzB,QAAKwgE,EAAQ,AAAC38C,QAGRpyB,EAFJ,IAAMuvE,EAAKn9C,EAAM,EAAE,CACbo9C,EAAQD,EAAG,MAAM,CAAG,EAE1B,GAAIC,EAAQjhE,EAAQ,CAClB,IAAKvO,EAAI,EAAGA,EAAIwvE,EAAO,EAAExvE,EACvB,OAAOoyB,EAAM,IAAI,CAACm9C,CAAE,CAACvvE,EAAE,CAAC,CAE1BuvE,EAAG,MAAM,CAAC,EAAGC,EACf,CACF,GAggBE,IAAMnB,EAASc,EAAO,OAAO,CAACE,GACxBf,EAAUc,EAAQ,OAAO,CAACE,GAC1BG,EAAU,AAAC11D,GAAS,EAAC,MAAOo1D,CAAM,CAACp1D,EAAI,EAAI,EAAG,OAAQq1D,CAAO,CAACr1D,EAAI,EAAI,CAAC,GAC7E,MAAO,CACL,MAAO01D,EAAQ,GACf,KAAMA,EAAQlhE,EAAS,GACvB,OAAQkhE,EAAQpB,GAChB,QAASoB,EAAQnB,GACjBa,OAAAA,EACAC,QAAAA,CACF,CACF,CACA,iBAAiBxtE,CAAK,CAAE,CACtB,OAAOA,CACT,CACA,iBAAiBA,CAAK,CAAEF,CAAK,CAAE,CAC7B,OAAOi2C,GACT,CACA,iBAAiB7T,CAAK,CAAE,CAAC,CACzB,gBAAgBpiC,CAAK,CAAE,CACrB,IAAM+oE,EAAQ,IAAI,CAAC,KAAK,QACxB,AAAI/oE,EAAQ,GAAKA,EAAQ+oE,EAAM,MAAM,CAAG,EAC/B,KAEF,IAAI,CAAC,gBAAgB,CAACA,CAAK,CAAC/oE,EAAM,CAAC,KAAK,CACjD,CACA,mBAAmBguE,CAAO,CAAE,CACtB,IAAI,CAAC,cAAc,EACrBA,CAAAA,EAAU,EAAIA,CAAM,EAEtB,IAAM5rC,EAAQ,IAAI,CAAC,WAAW,CAAG4rC,EAAU,IAAI,CAAC,OAAO,CACvD,MAAO,QAAY,IAAI,CAAC,cAAc,CAAG,QAAY,IAAI,CAAC,KAAK,CAAE5rC,EAAO,GAAKA,EAC/E,CACA,mBAAmBA,CAAK,CAAE,CACxB,IAAM4rC,EAAU,AAAC5rC,CAAAA,EAAQ,IAAI,CAAC,WAAW,AAAD,EAAK,IAAI,CAAC,OAAO,CACzD,OAAO,IAAI,CAAC,cAAc,CAAG,EAAI4rC,EAAUA,CAC7C,CACA,cAAe,CACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,GAChD,CACA,cAAe,CACb,GAAM,CAAC1tC,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAC,CAAG,IAAI,CACvB,OAAOD,EAAM,GAAKC,EAAM,EAAIA,EAC1BD,EAAM,GAAKC,EAAM,EAAID,EACrB,CACJ,CACA,WAAWtgC,CAAK,CAAE,KA1hBO0C,EAAQ1C,EAAO+/C,EANdr9C,EAAQkN,EAiiBhC,IAAMm5D,EAAQ,IAAI,CAAC,KAAK,EAAI,EAAE,CAC9B,GAAI/oE,GAAS,GAAKA,EAAQ+oE,EAAM,MAAM,CAAE,EACtC,IAAMhpB,EAAOgpB,CAAK,CAAC/oE,EAAM,CACzB,OAAO+/C,EAAK,QAAQ,EACrBA,CAAAA,EAAK,QAAQ,EA/hBSr9C,EA+hBY,IAAI,CAAC,UAAU,GA/hBnB1C,EA+hBuBA,EA/hBhB+/C,EA+hBuBA,EA9hBxD,QAAcr9C,EAAQ,CAC3Bq9C,KAAAA,EACA//C,MAAAA,EACA,KAAM,MACR,GA0hBmE,CACjE,CACA,OAAO,IAAI,CAAC,QAAQ,EACpB,KAAI,CAAC,QAAQ,EAxiBW0C,EAwiBW,IAAI,CAAC,KAAK,CAAC,UAAU,GAxiBxBkN,EAwiB4B,IAAI,CAviB3D,QAAclN,EAAQ,CAC3BkN,MAAAA,EACA,KAAM,OACR,GAoiBkE,CAClE,CACA,WAAY,CACV,IAAMq+D,EAAc,IAAI,CAAC,OAAO,CAAC,KAAK,CAChCC,EAAM,QAAU,IAAI,CAAC,aAAa,EAClCrqC,EAAMrlC,KAAK,GAAG,CAACA,KAAK,GAAG,CAAC0vE,IACxBpqC,EAAMtlC,KAAK,GAAG,CAACA,KAAK,GAAG,CAAC0vE,IACxB9B,EAAa,IAAI,CAAC,cAAc,GAChCrjE,EAAUklE,EAAY,eAAe,EAAI,EACzCnqE,EAAIsoE,EAAaA,EAAW,MAAM,CAAC,KAAK,CAAGrjE,EAAU,EACrDg6B,EAAIqpC,EAAaA,EAAW,OAAO,CAAC,MAAM,CAAGrjE,EAAU,EAC7D,OAAO,IAAI,CAAC,YAAY,GACpBg6B,EAAIc,EAAM//B,EAAIggC,EAAMhgC,EAAI+/B,EAAMd,EAAIe,EAClCf,EAAIe,EAAMhgC,EAAI+/B,EAAMd,EAAIc,EAAM//B,EAAIggC,CACxC,CACA,YAAa,CACX,IAAM7B,EAAU,IAAI,CAAC,OAAO,CAAC,OAAO,OACpC,AAAIA,AAAY,SAAZA,EACK,CAAC,CAACA,EAEJ,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAG,CACjD,CACA,sBAAsB0jC,CAAS,CAAE,KAiB3BwI,EAAa7vE,EAAG8vE,EAAWC,EAC3BC,EAAKC,EAAKC,EAAKC,EAAKxsE,EAAI+C,EAAIkC,EAAIC,EAjBpC,IAAM68B,EAAO,IAAI,CAAC,IAAI,CAChBtB,EAAQ,IAAI,CAAC,KAAK,CAClB9xB,EAAU,IAAI,CAAC,OAAO,CACtB,CAAC89D,KAAAA,CAAI,CAAEnzD,SAAAA,CAAQ,CAAC,CAAG3K,EACnBY,EAASk9D,EAAK,MAAM,CACpBjC,EAAe,IAAI,CAAC,YAAY,GAEhCkC,EAAc5F,AADN,IAAI,CAAC,KAAK,CACE,MAAM,CAAIv3D,CAAAA,EAAS,EAAI,GAC3Co9D,EAAK5E,EAAkB0E,GACvBvuC,EAAQ,EAAE,CACV0uC,EAAaH,EAAK,UAAU,CAAC,IAAI,CAAC,UAAU,IAC5CI,EAAYD,EAAW,UAAU,CAAGA,EAAW,WAAW,CAAG,EAC7DE,EAAgBD,EAAY,EAC5BE,EAAmB,SAAS5sC,CAAK,EACrC,MAAO,QAAYM,EAAON,EAAO0sC,EACnC,EAGA,GAAIvzD,AAAa,QAAbA,EACF4yD,EAAca,EAAiB,IAAI,CAAC,MAAM,EAC1CT,EAAM,IAAI,CAAC,MAAM,CAAGK,EACpBH,EAAMN,EAAcY,EACpB/pE,EAAKgqE,EAAiBrJ,EAAU,GAAG,EAAIoJ,EACvC5nE,EAAKw+D,EAAU,MAAM,MAChB,GAAIpqD,AAAa,WAAbA,EACT4yD,EAAca,EAAiB,IAAI,CAAC,GAAG,EACvChqE,EAAK2gE,EAAU,GAAG,CAClBx+D,EAAK6nE,EAAiBrJ,EAAU,MAAM,EAAIoJ,EAC1CR,EAAMJ,EAAcY,EACpBN,EAAM,IAAI,CAAC,GAAG,CAAGG,OACZ,GAAIrzD,AAAa,SAAbA,EACT4yD,EAAca,EAAiB,IAAI,CAAC,KAAK,EACzCV,EAAM,IAAI,CAAC,KAAK,CAAGM,EACnBJ,EAAML,EAAcY,EACpB9sE,EAAK+sE,EAAiBrJ,EAAU,IAAI,EAAIoJ,EACxC7nE,EAAKy+D,EAAU,KAAK,MACf,GAAIpqD,AAAa,UAAbA,EACT4yD,EAAca,EAAiB,IAAI,CAAC,IAAI,EACxC/sE,EAAK0jE,EAAU,IAAI,CACnBz+D,EAAK8nE,EAAiBrJ,EAAU,KAAK,EAAIoJ,EACzCT,EAAMH,EAAcY,EACpBP,EAAM,IAAI,CAAC,IAAI,CAAGI,OACb,GAAI5qC,AAAS,MAATA,EAAc,CACvB,GAAIzoB,AAAa,WAAbA,EACF4yD,EAAca,EAAiB,AAACrJ,CAAAA,EAAU,GAAG,CAAGA,EAAU,MAAM,AAAD,EAAK,EAAI,SACnE,GAAI,QAASpqD,GAAW,CAC7B,IAAM0zD,EAAiB/rE,OAAO,IAAI,CAACqY,EAAS,CAAC,EAAE,CACzCrb,EAAQqb,CAAQ,CAAC0zD,EAAe,CACtCd,EAAca,EAAiB,IAAI,CAAC,KAAK,CAAC,MAAM,CAACC,EAAe,CAAC,gBAAgB,CAAC/uE,GACpF,CACA8E,EAAK2gE,EAAU,GAAG,CAClBx+D,EAAKw+D,EAAU,MAAM,CAErB8I,EAAMF,AADNA,CAAAA,EAAMJ,EAAcY,CAAY,EACpBH,CACd,MAAO,GAAI5qC,AAAS,MAATA,EAAc,CACvB,GAAIzoB,AAAa,WAAbA,EACF4yD,EAAca,EAAiB,AAACrJ,CAAAA,EAAU,IAAI,CAAGA,EAAU,KAAK,AAAD,EAAK,QAC/D,GAAI,QAASpqD,GAAW,CAC7B,IAAM0zD,EAAiB/rE,OAAO,IAAI,CAACqY,EAAS,CAAC,EAAE,CACzCrb,EAAQqb,CAAQ,CAAC0zD,EAAe,CACtCd,EAAca,EAAiB,IAAI,CAAC,KAAK,CAAC,MAAM,CAACC,EAAe,CAAC,gBAAgB,CAAC/uE,GACpF,CAEAsuE,EAAMF,AADNA,CAAAA,EAAMH,EAAcY,CAAY,EACpBH,EACZ3sE,EAAK0jE,EAAU,IAAI,CACnBz+D,EAAKy+D,EAAU,KAAK,AACtB,CACA,IAAMuJ,EAAQ,QAAet+D,EAAQ,KAAK,CAAC,aAAa,CAAE+9D,GACpDja,EAAOl2D,KAAK,GAAG,CAAC,EAAGA,KAAK,IAAI,CAACmwE,EAAcO,IACjD,IAAK5wE,EAAI,EAAGA,EAAIqwE,EAAarwE,GAAKo2D,EAAM,CACtC,IAAMya,EAAcT,EAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAACpwE,IAC9C8wE,EAAYD,EAAY,SAAS,CACjCE,EAAYF,EAAY,KAAK,CAC7BG,EAAaH,EAAY,UAAU,EAAI,EAAE,CACzCI,EAAmBJ,EAAY,gBAAgB,CAC/CrD,EAAYqD,EAAY,SAAS,CACjCK,EAAYL,EAAY,SAAS,CACjCM,EAAiBN,EAAY,cAAc,EAAI,EAAE,CACjDO,EAAuBP,EAAY,oBAAoB,CAE7D,GAAIf,AAAcnvE,KAAAA,IADlBmvE,CAAAA,EAAYuB,AA9rBlB,SAA6B//D,CAAK,CAAE5P,CAAK,CAAE4vE,CAAe,MAOpDp+D,EANJ,IAAM3E,EAAS+C,EAAM,KAAK,CAAC,MAAM,CAC3BigE,EAAarxE,KAAK,GAAG,CAACwB,EAAO6M,EAAS,GACtCxM,EAAQuP,EAAM,WAAW,CACzBxP,EAAMwP,EAAM,SAAS,CAEvBw+D,EAAYx+D,EAAM,eAAe,CAACigE,GAEtC,GAAID,CAAAA,IAEAp+D,EADE3E,AAAW,IAAXA,EACOrO,KAAK,GAAG,CAAC4vE,EAAY/tE,EAAOD,EAAMguE,GAClCpuE,AAAU,IAAVA,EACA,AAAC4P,CAAAA,EAAM,eAAe,CAAC,GAAKw+D,CAAQ,EAAK,EAEzC,AAACA,CAAAA,EAAYx+D,EAAM,eAAe,CAACigE,EAAa,EAAC,EAAK,EAG7DzB,CAAAA,CAAAA,AADJA,CAAAA,GAAayB,EAAa7vE,EAAQwR,EAAS,CAACA,CAAK,EACjCnR,EAZF,IAYgB,IAAK+tE,CAAAA,EAAYhuE,EAZjC,IAY6C,GAI7D,OAAOguE,CACT,EAwqBsC,IAAI,CAAE9vE,EAAGkT,EAAM,EAI/C68D,EAAmB,QAAY3rC,EAAO0rC,EAAWgB,GAC7C3C,EACF6B,EAAME,EAAMvsE,EAAKiF,EAAKmnE,EAEtBE,EAAME,EAAMzpE,EAAKmC,EAAKknE,EAExBluC,EAAM,IAAI,CAAC,CACTmuC,IAAAA,EACAC,IAAAA,EACAC,IAAAA,EACAC,IAAAA,EACAxsE,GAAAA,EACA+C,GAAAA,EACAkC,GAAAA,EACAC,GAAAA,EACA,MAAOioE,EACP,MAAOC,EACPC,WAAAA,EACAC,iBAAAA,EACAzD,UAAAA,EACA0D,UAAAA,EACAC,eAAAA,EACAC,qBAAAA,CACF,EACF,CAGA,OAFA,IAAI,CAAC,YAAY,CAAGf,EACpB,IAAI,CAAC,YAAY,CAAGR,EACbhuC,CACT,CACA,mBAAmBwlC,CAAS,CAAE,KAYxBrnE,EAAG8hC,EAAYlxB,EAAOjR,EAAGoD,EAAGyuE,EAAW1tC,EAAOlC,EAAMtpB,EAAYm5D,EAAWC,EAX/E,IAAMhsC,EAAO,IAAI,CAAC,IAAI,CAChBpzB,EAAU,IAAI,CAAC,OAAO,CACtB,CAAC2K,SAAAA,CAAQ,CAAE,MAAO0yD,CAAW,CAAC,CAAGr9D,EACjC67D,EAAe,IAAI,CAAC,YAAY,GAChC1D,EAAQ,IAAI,CAAC,KAAK,CAClB,CAAC/1D,MAAAA,CAAK,CAAEi9D,WAAAA,CAAU,CAAElnE,QAAAA,CAAO,CAAEmnE,OAAAA,CAAM,CAAC,CAAGjC,EACvCW,EAAK5E,EAAkBp5D,EAAQ,IAAI,EACnCu/D,EAAiBvB,EAAK7lE,EACtBqnE,EAAkBF,EAAS,CAACnnE,EAAUonE,EACtC5rC,EAAW,CAAC,QAAU,IAAI,CAAC,aAAa,EACxCpE,EAAQ,EAAE,CAEZ+pB,EAAe,SACnB,GAAI3uC,AAAa,QAAbA,EACFla,EAAI,IAAI,CAAC,MAAM,CAAG+uE,EAClBN,EAAY,IAAI,CAAC,uBAAuB,QACnC,GAAIv0D,AAAa,WAAbA,EACTla,EAAI,IAAI,CAAC,GAAG,CAAG+uE,EACfN,EAAY,IAAI,CAAC,uBAAuB,QACnC,GAAIv0D,AAAa,SAAbA,EAAqB,CAC9B,IAAMqtD,EAAM,IAAI,CAAC,uBAAuB,CAACgG,GACzCkB,EAAYlH,EAAI,SAAS,CACzB3qE,EAAI2qE,EAAI,CAAC,AACX,MAAO,GAAIrtD,AAAa,UAAbA,EAAsB,CAC/B,IAAMqtD,EAAM,IAAI,CAAC,uBAAuB,CAACgG,GACzCkB,EAAYlH,EAAI,SAAS,CACzB3qE,EAAI2qE,EAAI,CAAC,AACX,MAAO,GAAI5kC,AAAS,MAATA,EAAc,CACvB,GAAIzoB,AAAa,WAAbA,EACFla,EAAI,AAAEskE,CAAAA,EAAU,GAAG,CAAGA,EAAU,MAAM,AAAD,EAAK,EAAKwK,OAC1C,GAAI,QAAS50D,GAAW,CAC7B,IAAM0zD,EAAiB/rE,OAAO,IAAI,CAACqY,EAAS,CAAC,EAAE,CACzCrb,EAAQqb,CAAQ,CAAC0zD,EAAe,CACtC5tE,EAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC4tE,EAAe,CAAC,gBAAgB,CAAC/uE,GAASiwE,CAClE,CACAL,EAAY,IAAI,CAAC,uBAAuB,EAC1C,MAAO,GAAI9rC,AAAS,MAATA,EAAc,CACvB,GAAIzoB,AAAa,WAAbA,EACFtd,EAAI,AAAE0nE,CAAAA,EAAU,IAAI,CAAGA,EAAU,KAAK,AAAD,EAAK,EAAKwK,OAC1C,GAAI,QAAS50D,GAAW,CAC7B,IAAM0zD,EAAiB/rE,OAAO,IAAI,CAACqY,EAAS,CAAC,EAAE,CACzCrb,EAAQqb,CAAQ,CAAC0zD,EAAe,CACtChxE,EAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAACgxE,EAAe,CAAC,gBAAgB,CAAC/uE,EACzD,CACA4vE,EAAY,IAAI,CAAC,uBAAuB,CAAClB,GAAI,SAAS,AACxD,CACa,MAAT5qC,IACEhxB,AAAU,UAAVA,EACFk3C,EAAe,MACI,QAAVl3C,GACTk3C,CAAAA,EAAe,QAAO,GAG1B,IAAMkiB,EAAa,IAAI,CAAC,cAAc,GACtC,IAAK9tE,EAAI,EAAG8hC,EAAO2oC,EAAM,MAAM,CAAEzqE,EAAI8hC,EAAM,EAAE9hC,EAAG,KAgD1C+xE,EA9CJnhE,EAAQ6wC,AADDgpB,CAAK,CAACzqE,EAAE,CACF,KAAK,CAClB,IAAM6wE,EAAclB,EAAY,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC3vE,IAC3D8jC,EAAQ,IAAI,CAAC,eAAe,CAAC9jC,GAAK2vE,EAAY,WAAW,CAEzDr3D,EAAaspB,AADbA,CAAAA,EAAO,IAAI,CAAC,uBAAuB,CAAC5hC,EAAC,EACnB,UAAU,CAE5B,IAAMgyE,EAAYP,AADlBA,CAAAA,EAAY,QAAQ7gE,GAASA,EAAM,MAAM,CAAG,GACd,EACxBgzB,EAAQitC,EAAY,KAAK,CACzBhsC,EAAcgsC,EAAY,eAAe,CACzC/rC,EAAc+rC,EAAY,eAAe,CAC3CoB,EAAgBT,EAqCpB,GApCIrD,GACFxuE,EAAImkC,EACc,UAAd0tC,IAEAS,EADEjyE,IAAM8hC,EAAO,EACC,AAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAa,OAAV,QAC/B9hC,AAAM,IAANA,EACO,AAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAY,QAAT,OAExB,UAKhB0xE,EAFAz0D,AAAa,QAAbA,EACE00D,AAAe,SAAfA,GAAyB1rC,AAAa,IAAbA,EACd,CAACwrC,EAAYn5D,EAAaA,EAAa,EAC3Cq5D,AAAe,WAAfA,EACI,CAAC7D,EAAW,OAAO,CAAC,MAAM,CAAG,EAAIkE,EAAY15D,EAAaA,EAE1D,CAACw1D,EAAW,OAAO,CAAC,MAAM,CAAGx1D,EAAa,EAGrDq5D,AAAe,SAAfA,GAAyB1rC,AAAa,IAAbA,EACd3tB,EAAa,EACjBq5D,AAAe,WAAfA,EACI7D,EAAW,OAAO,CAAC,MAAM,CAAG,EAAIkE,EAAY15D,EAE5Cw1D,EAAW,OAAO,CAAC,MAAM,CAAG2D,EAAYn5D,EAGrDs5D,GACFF,CAAAA,GAAc,EAAC,IAGjB3uE,EAAI+gC,EACJ4tC,EAAa,AAAC,GAAID,CAAQ,EAAKn5D,EAAa,GAG1Cu4D,EAAY,iBAAiB,CAAE,CACjC,IAAMqB,EAAe,QAAUrB,EAAY,eAAe,EACpDtvE,EAASusE,EAAW,OAAO,CAAC9tE,EAAE,CAC9BiT,EAAQ66D,EAAW,MAAM,CAAC9tE,EAAE,CAC9B6iB,EAAM9f,EAAI2uE,EAAaQ,EAAa,GAAG,CACvC5uE,EAAO3D,EAAIuyE,EAAa,IAAI,CAChC,OAAQtmB,GACR,IAAK,SACH/oC,GAAOthB,EAAS,EAChB,KACF,KAAK,SACHshB,GAAOthB,CAET,CACA,OAAQiwE,GACR,IAAK,SACHluE,GAAQ2P,EAAQ,EAChB,KACF,KAAK,QACH3P,GAAQ2P,CAEV,CACA8+D,EAAW,CACTzuE,KAAAA,EACAuf,IAAAA,EACA,MAAO5P,EAAQi/D,EAAa,KAAK,CACjC,OAAQ3wE,EAAS2wE,EAAa,MAAM,CACpC,MAAOrB,EAAY,aAAa,AAClC,CACF,CACAhvC,EAAM,IAAI,CAAC,CACToE,SAAAA,EACAr1B,MAAAA,EACAgxB,KAAAA,EACAgC,MAAAA,EACAiB,YAAAA,EACAC,YAAAA,EACA4sC,WAAAA,EACA,UAAWO,EACXrmB,aAAAA,EACA,YAAa,CAACjsD,EAAGoD,EAAE,CACnBgvE,SAAAA,CACF,EACF,CACA,OAAOlwC,CACT,CACA,yBAA0B,CACxB,GAAM,CAAC5kB,SAAAA,CAAQ,CAAEwtD,MAAAA,CAAK,CAAC,CAAG,IAAI,CAAC,OAAO,CAEtC,GADiB,CAAC,QAAU,IAAI,CAAC,aAAa,EAE5C,MAAOxtD,AAAa,QAAbA,EAAqB,OAAS,QAEvC,IAAIvI,EAAQ,SAQZ,MAPI+1D,AAAgB,UAAhBA,EAAM,KAAK,CACb/1D,EAAQ,OACC+1D,AAAgB,QAAhBA,EAAM,KAAK,CACpB/1D,EAAQ,QACiB,UAAhB+1D,EAAM,KAAK,EACpB/1D,CAAAA,EAAQ,OAAM,EAETA,CACT,CACA,wBAAwB47D,CAAE,CAAE,KAKtBkB,EACA7xE,EALJ,GAAM,CAACsd,SAAAA,CAAQ,CAAE,MAAO,CAAC00D,WAAAA,CAAU,CAAEC,OAAAA,CAAM,CAAEnnE,QAAAA,CAAO,CAAC,CAAC,CAAG,IAAI,CAAC,OAAO,CAC/DqjE,EAAa,IAAI,CAAC,cAAc,GAChC+D,EAAiBvB,EAAK7lE,EACtB4jE,EAASP,EAAW,MAAM,CAAC,KAAK,CAsDtC,MAnDI7wD,AAAa,SAAbA,EACE20D,GACFjyE,EAAI,IAAI,CAAC,KAAK,CAAG8K,EACbknE,AAAe,SAAfA,EACFH,EAAY,OACHG,AAAe,WAAfA,GACTH,EAAY,SACZ7xE,GAAM0uE,EAAS,IAEfmD,EAAY,QACZ7xE,GAAK0uE,KAGP1uE,EAAI,IAAI,CAAC,KAAK,CAAGkyE,EACbF,AAAe,SAAfA,EACFH,EAAY,QACHG,AAAe,WAAfA,GACTH,EAAY,SACZ7xE,GAAM0uE,EAAS,IAEfmD,EAAY,OACZ7xE,EAAI,IAAI,CAAC,IAAI,GAGRsd,AAAa,UAAbA,EACL20D,GACFjyE,EAAI,IAAI,CAAC,IAAI,CAAG8K,EACZknE,AAAe,SAAfA,EACFH,EAAY,QACHG,AAAe,WAAfA,GACTH,EAAY,SACZ7xE,GAAM0uE,EAAS,IAEfmD,EAAY,OACZ7xE,GAAK0uE,KAGP1uE,EAAI,IAAI,CAAC,IAAI,CAAGkyE,EACZF,AAAe,SAAfA,EACFH,EAAY,OACHG,AAAe,WAAfA,GACTH,EAAY,SACZ7xE,GAAK0uE,EAAS,IAEdmD,EAAY,QACZ7xE,EAAI,IAAI,CAAC,KAAK,GAIlB6xE,EAAY,QAEP,CAACA,UAAAA,EAAW7xE,EAAAA,CAAC,CACtB,CACA,mBAAoB,CAClB,GAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAC3B,OAEF,IAAMykC,EAAQ,IAAI,CAAC,KAAK,CAClBnnB,EAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,OACtC,AAAIA,AAAa,SAAbA,GAAuBA,AAAa,UAAbA,EAClB,CAAC,IAAK,EAAG,KAAM,IAAI,CAAC,IAAI,CAAE,OAAQmnB,EAAM,MAAM,CAAE,MAAO,IAAI,CAAC,KAAK,EACpEnnB,AAAa,QAAbA,GAAsBA,AAAa,WAAbA,EACnB,CAAC,IAAK,IAAI,CAAC,GAAG,CAAE,KAAM,EAAG,OAAQ,IAAI,CAAC,MAAM,CAAE,MAAOmnB,EAAM,KAAK,QAE3E,CACA,gBAAiB,CACf,GAAM,CAAChP,IAAAA,CAAG,CAAE,QAAS,CAAC+8C,gBAAAA,CAAe,CAAC,CAAE7uE,KAAAA,CAAI,CAAEuf,IAAAA,CAAG,CAAE5P,MAAAA,CAAK,CAAE1R,OAAAA,CAAM,CAAC,CAAG,IAAI,CACpE4wE,IACF/8C,EAAI,IAAI,GACRA,EAAI,SAAS,CAAG+8C,EAChB/8C,EAAI,QAAQ,CAAC9xB,EAAMuf,EAAK5P,EAAO1R,GAC/B6zB,EAAI,OAAO,GAEf,CACA,qBAAqBxzB,CAAK,CAAE,CAC1B,IAAMwuE,EAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAC9B,GAAI,CAAC,IAAI,CAAC,UAAU,IAAM,CAACA,EAAK,OAAO,CACrC,OAAO,EAGT,IAAM1uE,EAAQ+oE,AADA,IAAI,CAAC,KAAK,CACJ,SAAS,CAAC1qE,GAAKA,EAAE,KAAK,GAAK6B,UAC/C,AAAIF,GAAS,EAEJy8D,AADMiS,EAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC1uE,IACjC,SAAS,CAEhB,CACT,CACA,SAAS2lE,CAAS,CAAE,KAIdrnE,EAAG8hC,EAHP,IAAMsuC,EAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACxBh7C,EAAM,IAAI,CAAC,GAAG,CACdyM,EAAQ,IAAI,CAAC,cAAc,EAAK,KAAI,CAAC,cAAc,CAAG,IAAI,CAAC,qBAAqB,CAACwlC,EAAS,EAE1Fh0D,EAAW,CAAChE,EAAIC,EAAI8I,KACxB,GAAI,EAACA,EAAM,KAAK,GAAI,CAACA,EAAM,KAAK,CAGhCgd,EAAI,IAAI,GACRA,EAAI,SAAS,CAAGhd,EAAM,KAAK,CAC3Bgd,EAAI,WAAW,CAAGhd,EAAM,KAAK,CAC7Bgd,EAAI,WAAW,CAAChd,EAAM,UAAU,EAAI,EAAE,EACtCgd,EAAI,cAAc,CAAGhd,EAAM,gBAAgB,CAC3Cgd,EAAI,SAAS,GACbA,EAAI,MAAM,CAAC/lB,EAAG,CAAC,CAAEA,EAAG,CAAC,EACrB+lB,EAAI,MAAM,CAAC9lB,EAAG,CAAC,CAAEA,EAAG,CAAC,EACrB8lB,EAAI,MAAM,GACVA,EAAI,OAAO,EACb,EACA,GAAIg7C,EAAK,OAAO,CACd,IAAKpwE,EAAI,EAAG8hC,EAAOD,EAAM,MAAM,CAAE7hC,EAAI8hC,EAAM,EAAE9hC,EAAG,CAC9C,IAAMq8D,EAAOx6B,CAAK,CAAC7hC,EAAE,AACjBowE,CAAAA,EAAK,eAAe,EACtB/8D,EACE,CAAC,EAAGgpD,EAAK,EAAE,CAAE,EAAGA,EAAK,EAAE,EACvB,CAAC,EAAGA,EAAK,EAAE,CAAE,EAAGA,EAAK,EAAE,EACvBA,GAGA+T,EAAK,SAAS,EAChB/8D,EACE,CAAC,EAAGgpD,EAAK,GAAG,CAAE,EAAGA,EAAK,GAAG,EACzB,CAAC,EAAGA,EAAK,GAAG,CAAE,EAAGA,EAAK,GAAG,EACzB,CACE,MAAOA,EAAK,SAAS,CACrB,MAAOA,EAAK,SAAS,CACrB,WAAYA,EAAK,cAAc,CAC/B,iBAAkBA,EAAK,oBAAoB,AAC7C,EAGN,CAEJ,CACA,YAAa,KASP14D,EAAIiF,EAAIlC,EAAImC,EARhB,GAAM,CAACu7B,MAAAA,CAAK,CAAEhP,IAAAA,CAAG,CAAE,QAAS,CAACg7C,KAAAA,CAAI,CAAC,CAAC,CAAG,IAAI,CACpCG,EAAaH,EAAK,UAAU,CAAC,IAAI,CAAC,UAAU,IAC5CI,EAAYJ,EAAK,UAAU,CAAGG,EAAW,WAAW,CAAG,EAC7D,GAAI,CAACC,EACH,OAEF,IAAM4B,EAAgBhC,EAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAC7DP,EAAc,IAAI,CAAC,YAAY,CAEjC,IAAI,CAAC,YAAY,IACnBlsE,EAAK,QAAYygC,EAAO,IAAI,CAAC,IAAI,CAAEosC,GAAaA,EAAY,EAC5D5nE,EAAK,QAAYw7B,EAAO,IAAI,CAAC,KAAK,CAAEguC,GAAiBA,EAAgB,EACrE1rE,EAAKmC,EAAKgnE,IAEVnpE,EAAK,QAAY09B,EAAO,IAAI,CAAC,GAAG,CAAEosC,GAAaA,EAAY,EAC3D3nE,EAAK,QAAYu7B,EAAO,IAAI,CAAC,MAAM,CAAEguC,GAAiBA,EAAgB,EACtEzuE,EAAKiF,EAAKinE,GAEZz6C,EAAI,IAAI,GACRA,EAAI,SAAS,CAAGm7C,EAAW,WAAW,CACtCn7C,EAAI,WAAW,CAAGm7C,EAAW,WAAW,CACxCn7C,EAAI,SAAS,GACbA,EAAI,MAAM,CAACzxB,EAAI+C,GACf0uB,EAAI,MAAM,CAACxsB,EAAIC,GACfusB,EAAI,MAAM,GACVA,EAAI,OAAO,EACb,CACA,WAAWiyC,CAAS,CAAE,KAWhBrnE,EAAG8hC,EATP,GAAI,CAAC6tC,AADe,IAAI,CAAC,OAAO,CAAC,KAAK,CACrB,OAAO,CACtB,OAEF,IAAMv6C,EAAM,IAAI,CAAC,GAAG,CACd0N,EAAO,IAAI,CAAC,iBAAiB,GAC/BA,GACF,QAAS1N,EAAK0N,GAEhB,IAAMjB,EAAQ,IAAI,CAAC,WAAW,EAAK,KAAI,CAAC,WAAW,CAAG,IAAI,CAAC,kBAAkB,CAACwlC,EAAS,EAEvF,IAAKrnE,EAAI,EAAG8hC,EAAOD,EAAM,MAAM,CAAE7hC,EAAI8hC,EAAM,EAAE9hC,EAAG,CAC9C,IAAMq8D,EAAOx6B,CAAK,CAAC7hC,EAAE,CACfgvE,EAAW3S,EAAK,IAAI,CACpBzrD,EAAQyrD,EAAK,KAAK,AACpBA,CAAAA,EAAK,QAAQ,GACfjnC,EAAI,SAAS,CAAGinC,EAAK,QAAQ,CAAC,KAAK,CACnCjnC,EAAI,QAAQ,CAACinC,EAAK,QAAQ,CAAC,IAAI,CAAEA,EAAK,QAAQ,CAAC,GAAG,CAAEA,EAAK,QAAQ,CAAC,KAAK,CAAEA,EAAK,QAAQ,CAAC,MAAM,GAE/F,IAAIt5D,EAAIs5D,EAAK,UAAU,CACvB,QAAWjnC,EAAKxkB,EAAO,EAAG7N,EAAGisE,EAAU3S,EACzC,CACIv5B,GACF,QAAW1N,EAEf,CACA,WAAY,KA1gCM1gB,EAAOuI,EAAUmhD,EA2gCjC,IA1gCEkM,EA0gCI,CAACl1C,IAAAA,CAAG,CAAE,QAAS,CAACnY,SAAAA,CAAQ,CAAEqI,MAAAA,CAAK,CAAE84C,QAAAA,CAAO,CAAC,CAAC,CAAG,IAAI,CACvD,GAAI,CAAC94C,EAAM,OAAO,CAChB,OAEF,IAAMsc,EAAO,QAAOtc,EAAM,IAAI,EACxB7a,EAAU,QAAU6a,EAAM,OAAO,EACjC5Q,EAAQ4Q,EAAM,KAAK,CACrBpS,EAAS0uB,EAAK,UAAU,CAAG,CAC3B3kB,AAAa,YAAbA,GAAyBA,AAAa,WAAbA,GAAyB,QAASA,IAC7D/J,GAAUzI,EAAQ,MAAM,CACpB,QAAQ6a,EAAM,IAAI,GACpBpS,CAAAA,GAAU0uB,EAAK,UAAU,CAAItc,CAAAA,EAAM,IAAI,CAAC,MAAM,CAAG,EAAC,GAGpDpS,GAAUzI,EAAQ,GAAG,CAEvB,GAAM,CAAC4nE,OAAAA,CAAM,CAAEC,OAAAA,CAAM,CAAE55D,SAAAA,CAAQ,CAAEutB,SAAAA,CAAQ,CAAC,CAAGssC,AAphCjD,SAAmBjhE,CAAK,CAAE4B,CAAM,CAAE+J,CAAQ,CAAEvI,CAAK,MAI3CgE,EAAU25D,EAAQC,EAHtB,GAAM,CAACzvD,IAAAA,CAAG,CAAEvf,KAAAA,CAAI,CAAE4B,OAAAA,CAAM,CAAE1B,MAAAA,CAAK,CAAE4gC,MAAAA,CAAK,CAAC,CAAG9yB,EACpC,CAAC+1D,UAAAA,CAAS,CAAEpH,OAAAA,CAAM,CAAC,CAAG77B,EACxB6B,EAAW,EAET1kC,EAAS2D,EAAS2d,EAClB5P,EAAQzP,EAAQF,EACtB,GAAIgO,EAAM,YAAY,GAAI,CAExB,GADA+gE,EAAS,QAAe39D,EAAOpR,EAAME,GACjC,QAASyZ,GAAW,CACtB,IAAM0zD,EAAiB/rE,OAAO,IAAI,CAACqY,EAAS,CAAC,EAAE,CACzCrb,EAAQqb,CAAQ,CAAC0zD,EAAe,CACtC2B,EAASrS,CAAM,CAAC0Q,EAAe,CAAC,gBAAgB,CAAC/uE,GAASL,EAAS2R,CACrE,MACEo/D,EADSr1D,AAAa,WAAbA,EACA,AAACoqD,CAAAA,EAAU,MAAM,CAAGA,EAAU,GAAG,AAAD,EAAK,EAAI9lE,EAAS2R,EAElDo4D,EAAeh6D,EAAO2L,EAAU/J,GAE3CwF,EAAWlV,EAAQF,CACrB,KAAO,CACL,GAAI,QAAS2Z,GAAW,CACtB,IAAM0zD,EAAiB/rE,OAAO,IAAI,CAACqY,EAAS,CAAC,EAAE,CACzCrb,EAAQqb,CAAQ,CAAC0zD,EAAe,CACtC0B,EAASpS,CAAM,CAAC0Q,EAAe,CAAC,gBAAgB,CAAC/uE,GAASqR,EAAQC,CACpE,MACEm/D,EADSp1D,AAAa,WAAbA,EACA,AAACoqD,CAAAA,EAAU,IAAI,CAAGA,EAAU,KAAK,AAAD,EAAK,EAAIp0D,EAAQC,EAEjDo4D,EAAeh6D,EAAO2L,EAAU/J,GAE3Co/D,EAAS,QAAe59D,EAAOxP,EAAQ2d,GACvCojB,EAAWhpB,AAAa,SAAbA,EAAsB,CAAC,GAAO,CAAG,GAAO,AACrD,CACA,MAAO,CAACo1D,OAAAA,EAAQC,OAAAA,EAAQ55D,SAAAA,EAAUutB,SAAAA,CAAQ,CAC5C,EAm/B2D,IAAI,CAAE/yB,EAAQ+J,EAAUvI,GAC/E,QAAW0gB,EAAK9P,EAAM,IAAI,CAAE,EAAG,EAAGsc,EAAM,CACtC,MAAOtc,EAAM,KAAK,CAClB5M,SAAAA,EACAutB,SAAAA,EACA,SAAS,EAhiCKvxB,EAgiCQA,EAhiCDuI,EAgiCQA,EAhiCEmhD,EAgiCQA,EA/hCvCkM,EAAM,QAAmB51D,GACzB,CAAC0pD,GAAWnhD,AAAa,UAAbA,GAA0B,CAACmhD,GAAWnhD,AAAa,UAAbA,CAAoB,GACxEqtD,CAAAA,EAAMe,EAAaf,EAAG,EAEjBA,GA4hCH,aAAc,SACd,YAAa,CAAC+H,EAAQC,EAAO,AAC/B,EACF,CACA,KAAKjL,CAAS,CAAE,CACd,IAAI,CAAC,IAAI,CAAC,UAAU,GAGpB,IAAI,CAAC,cAAc,GACnB,IAAI,CAAC,QAAQ,CAACA,GACd,IAAI,CAAC,UAAU,GACf,IAAI,CAAC,SAAS,GACd,IAAI,CAAC,UAAU,CAACA,EAClB,CACA,SAAU,CACR,IAAMlJ,EAAO,IAAI,CAAC,OAAO,CACnBqU,EAAKrU,EAAK,KAAK,EAAIA,EAAK,KAAK,CAAC,CAAC,EAAI,EACnCsU,EAAK,QAAetU,EAAK,IAAI,EAAIA,EAAK,IAAI,CAAC,CAAC,CAAE,WACpD,AAAI,AAAC,IAAI,CAAC,UAAU,IAAM,IAAI,CAAC,IAAI,GAAK5a,EAAM,SAAS,CAAC,IAAI,CAQrD,CAAC,CACN,EAAGkvB,EACH,KAAM,AAACpL,IACL,IAAI,CAAC,cAAc,GACnB,IAAI,CAAC,QAAQ,CAACA,GACd,IAAI,CAAC,SAAS,EAChB,CACF,EAAG,CACD,EAAGoL,EAAK,EACR,KAAM,KACJ,IAAI,CAAC,UAAU,EACjB,CACF,EAAG,CACD,EAAGD,EACH,KAAM,AAACnL,IACL,IAAI,CAAC,UAAU,CAACA,EAClB,CACF,EAAE,CAxBO,CAAC,CACN,EAAGmL,EACH,KAAM,AAACnL,IACL,IAAI,CAAC,IAAI,CAACA,EACZ,CACF,EAAE,AAoBN,CACA,wBAAwBj6D,CAAI,CAAE,KAIxBpN,EAAG8hC,EAHP,IAAMmqC,EAAQ,IAAI,CAAC,KAAK,CAAC,4BAA4B,GAC/CyG,EAAS,IAAI,CAAC,IAAI,CAAG,SACrBrmD,EAAS,EAAE,CAEjB,IAAKrsB,EAAI,EAAG8hC,EAAOmqC,EAAM,MAAM,CAAEjsE,EAAI8hC,EAAM,EAAE9hC,EAAG,CAC9C,IAAM6+D,EAAOoN,CAAK,CAACjsE,EAAE,AACjB6+D,CAAAA,CAAI,CAAC6T,EAAO,GAAK,IAAI,CAAC,EAAE,EAAK,EAACtlE,GAAQyxD,EAAK,IAAI,GAAKzxD,CAAG,GACzDif,EAAO,IAAI,CAACwyC,EAEhB,CACA,OAAOxyC,CACT,CACA,wBAAwB3qB,CAAK,CAAE,CAC7B,IAAMy8D,EAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAACz8D,IAC3D,MAAO,QAAOy8D,EAAK,IAAI,CACzB,CACA,YAAa,CACX,IAAM/jD,EAAW,IAAI,CAAC,uBAAuB,CAAC,GAAG,UAAU,CAC3D,MAAO,AAAC,KAAI,CAAC,YAAY,GAAK,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,MAAM,AAAD,EAAKA,CAC5D,CACF,CAEA,MAAMu4D,EACJ,YAAYvlE,CAAI,CAAEwlE,CAAK,CAAE3qC,CAAQ,CAAE,CACjC,IAAI,CAAC,IAAI,CAAG76B,EACZ,IAAI,CAAC,KAAK,CAAGwlE,EACb,IAAI,CAAC,QAAQ,CAAG3qC,EAChB,IAAI,CAAC,KAAK,CAAGrjC,OAAO,MAAM,CAAC,KAC7B,CACA,UAAUwI,CAAI,CAAE,CACd,OAAOxI,OAAO,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAEwI,EAAK,SAAS,CAChF,CACA,SAASivD,CAAI,CAAE,KAETwW,EADJ,IAAMC,EAAQluE,OAAO,cAAc,CAACy3D,GAEhC0W,AA8DR,UAA2BD,CAAK,EAC9B,MAAO,OAAQA,GAAS,aAAcA,CACxC,GAhE0BA,IACpBD,CAAAA,EAAc,IAAI,CAAC,QAAQ,CAACC,EAAK,EAEnC,IAAMjxC,EAAQ,IAAI,CAAC,KAAK,CAClB59B,EAAKo4D,EAAK,EAAE,CACZuW,EAAQ,IAAI,CAAC,KAAK,CAAG,IAAM3uE,EACjC,GAAI,CAACA,EACH,MAAM,AAAIvE,MAAM,2BAA6B28D,UAE/C,AAAIp4D,KAAM49B,EACD+wC,GAET/wC,CAAK,CAAC59B,EAAG,CAAGo4D,EACZ2W,AAwBJ,SAA0B3W,CAAI,CAAEuW,CAAK,CAAEC,CAAW,EAChD,IAAMI,EAAe,QAAMruE,OAAO,MAAM,CAAC,MAAO,CAC9CiuE,EAAc,OAAY,CAACA,GAAe,CAAC,EAC3C,OAAY,CAACD,GACbvW,EAAK,QAAQ,CACd,EACD,OAAY,CAACuW,EAAOK,GAChB5W,EAAK,aAAa,EACpB6W,AAMJ,SAAuBN,CAAK,CAAEO,CAAM,EAClCvuE,OAAO,IAAI,CAACuuE,GAAQ,OAAO,CAACx3D,IAC1B,IAAMy3D,EAAgBz3D,EAAS,KAAK,CAAC,KAC/B03D,EAAaD,EAAc,GAAG,GAC9BE,EAAc,CAACV,EAAM,CAAC,MAAM,CAACQ,GAAe,IAAI,CAAC,KACjDl7D,EAAQi7D,CAAM,CAACx3D,EAAS,CAAC,KAAK,CAAC,KAC/B43D,EAAar7D,EAAM,GAAG,GACtBs7D,EAAct7D,EAAM,IAAI,CAAC,KAC/B,SAAc,CAACo7D,EAAaD,EAAYG,EAAaD,EACvD,EACF,EAhBkBX,EAAOvW,EAAK,aAAa,EAErCA,EAAK,WAAW,EAClB,YAAiB,CAACuW,EAAOvW,EAAK,WAAW,CAE7C,EArCqBA,EAAMuW,EAAOC,GAC1B,IAAI,CAAC,QAAQ,EACf,YAAiB,CAACxW,EAAK,EAAE,CAAEA,EAAK,SAAS,EAEpCuW,EACT,CACA,IAAI3uE,CAAE,CAAE,CACN,OAAO,IAAI,CAAC,KAAK,CAACA,EAAG,AACvB,CACA,WAAWo4D,CAAI,CAAE,CACf,IAAMx6B,EAAQ,IAAI,CAAC,KAAK,CAClB59B,EAAKo4D,EAAK,EAAE,CACZuW,EAAQ,IAAI,CAAC,KAAK,CACpB3uE,KAAM49B,GACR,OAAOA,CAAK,CAAC59B,EAAG,CAEd2uE,GAAS3uE,KAAM,GAAQ,CAAC2uE,EAAM,GAChC,OAAO,GAAQ,CAACA,EAAM,CAAC3uE,EAAG,CACtB,IAAI,CAAC,QAAQ,EACf,OAAO,GAAS,CAACA,EAAG,CAG1B,CACF,CAoHA,IAAIwvE,EAAW,IAtFf,MAAMpkD,EACJ,aAAc,CACZ,IAAI,CAAC,WAAW,CAAG,IAAIsjD,EAAclS,EAAmB,WAAY,IACpE,IAAI,CAAC,QAAQ,CAAG,IAAIkS,EAActuB,EAAS,YAC3C,IAAI,CAAC,OAAO,CAAG,IAAIsuB,EAAc/tE,OAAQ,WACzC,IAAI,CAAC,MAAM,CAAG,IAAI+tE,EAAcpvB,EAAO,UACvC,IAAI,CAAC,gBAAgB,CAAG,CAAC,IAAI,CAAC,WAAW,CAAE,IAAI,CAAC,MAAM,CAAE,IAAI,CAAC,QAAQ,CAAC,AACxE,CACA,IAAI,GAAGj3B,CAAI,CAAE,CACX,IAAI,CAAC,KAAK,CAAC,WAAYA,EACzB,CACA,OAAO,GAAGA,CAAI,CAAE,CACd,IAAI,CAAC,KAAK,CAAC,aAAcA,EAC3B,CACA,eAAe,GAAGA,CAAI,CAAE,CACtB,IAAI,CAAC,KAAK,CAAC,WAAYA,EAAM,IAAI,CAAC,WAAW,CAC/C,CACA,YAAY,GAAGA,CAAI,CAAE,CACnB,IAAI,CAAC,KAAK,CAAC,WAAYA,EAAM,IAAI,CAAC,QAAQ,CAC5C,CACA,WAAW,GAAGA,CAAI,CAAE,CAClB,IAAI,CAAC,KAAK,CAAC,WAAYA,EAAM,IAAI,CAAC,OAAO,CAC3C,CACA,UAAU,GAAGA,CAAI,CAAE,CACjB,IAAI,CAAC,KAAK,CAAC,WAAYA,EAAM,IAAI,CAAC,MAAM,CAC1C,CACA,cAAcroB,CAAE,CAAE,CAChB,OAAO,IAAI,CAAC,IAAI,CAACA,EAAI,IAAI,CAAC,WAAW,CAAE,aACzC,CACA,WAAWA,CAAE,CAAE,CACb,OAAO,IAAI,CAAC,IAAI,CAACA,EAAI,IAAI,CAAC,QAAQ,CAAE,UACtC,CACA,UAAUA,CAAE,CAAE,CACZ,OAAO,IAAI,CAAC,IAAI,CAACA,EAAI,IAAI,CAAC,OAAO,CAAE,SACrC,CACA,SAASA,CAAE,CAAE,CACX,OAAO,IAAI,CAAC,IAAI,CAACA,EAAI,IAAI,CAAC,MAAM,CAAE,QACpC,CACA,kBAAkB,GAAGqoB,CAAI,CAAE,CACzB,IAAI,CAAC,KAAK,CAAC,aAAcA,EAAM,IAAI,CAAC,WAAW,CACjD,CACA,eAAe,GAAGA,CAAI,CAAE,CACtB,IAAI,CAAC,KAAK,CAAC,aAAcA,EAAM,IAAI,CAAC,QAAQ,CAC9C,CACA,cAAc,GAAGA,CAAI,CAAE,CACrB,IAAI,CAAC,KAAK,CAAC,aAAcA,EAAM,IAAI,CAAC,OAAO,CAC7C,CACA,aAAa,GAAGA,CAAI,CAAE,CACpB,IAAI,CAAC,KAAK,CAAC,aAAcA,EAAM,IAAI,CAAC,MAAM,CAC5C,CACA,MAAMgxC,CAAM,CAAEhxC,CAAI,CAAEonD,CAAa,CAAE,CACjC,IAAIpnD,EAAK,CAAC,OAAO,CAAC+kB,IAChB,IAAMsiC,EAAMD,GAAiB,IAAI,CAAC,mBAAmB,CAACriC,EAClDqiC,CAAAA,GAAiBC,EAAI,SAAS,CAACtiC,IAASsiC,IAAQ,IAAI,CAAC,OAAO,EAAItiC,EAAI,EAAE,CACxE,IAAI,CAAC,KAAK,CAACisB,EAAQqW,EAAKtiC,GAExB,QAAKA,EAAKgrB,IACR,IAAMuX,EAAUF,GAAiB,IAAI,CAAC,mBAAmB,CAACrX,GAC1D,IAAI,CAAC,KAAK,CAACiB,EAAQsW,EAASvX,EAC9B,EAEJ,EACF,CACA,MAAMiB,CAAM,CAAEmW,CAAQ,CAAEI,CAAS,CAAE,CACjC,IAAMC,EAAc,QAAYxW,GAChC,QAASuW,CAAS,CAAC,SAAWC,EAAY,CAAE,EAAE,CAAED,GAChDJ,CAAQ,CAACnW,EAAO,CAACuW,GACjB,QAASA,CAAS,CAAC,QAAUC,EAAY,CAAE,EAAE,CAAED,EACjD,CACA,oBAAoBzmE,CAAI,CAAE,CACxB,IAAK,IAAIpN,EAAI,EAAGA,EAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAEA,IAAK,CACrD,IAAM2zE,EAAM,IAAI,CAAC,gBAAgB,CAAC3zE,EAAE,CACpC,GAAI2zE,EAAI,SAAS,CAACvmE,GAChB,OAAOumE,CAEX,CACA,OAAO,IAAI,CAAC,OAAO,AACrB,CACA,KAAK1vE,CAAE,CAAEyvE,CAAa,CAAEtmE,CAAI,CAAE,CAC5B,IAAMivD,EAAOqX,EAAc,GAAG,CAACzvE,GAC/B,GAAIo4D,AAAS17D,KAAAA,IAAT07D,EACF,MAAM,AAAI38D,MAAM,IAAMuE,EAAK,yBAA2BmJ,EAAO,KAE/D,OAAOivD,CACT,CACF,CAGA,OAAM0X,UAA0BtT,EAC9B,OAAOL,CAAI,CAAE,CACX,IAAMvB,EAAO,IAAI,CAAC,WAAW,CACvB,CAAC,KAAMhwD,EAAS,EAAE,CAAC,CAAGgwD,EACtBwK,EAAqB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CACrD,CAACtnE,MAAAA,CAAK,CAAE3B,MAAAA,CAAK,CAAC,CAAG,QAAiCy+D,EAAMhwD,EAAQw6D,GAOpE,GANA,IAAI,CAAC,UAAU,CAAGtnE,EAClB,IAAI,CAAC,UAAU,CAAG3B,EACd,QAAoBy+D,KACtB98D,EAAQ,EACR3B,EAAQyO,EAAO,MAAM,EAEnB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAE,CACzB,GAAM,CAAC,QAASC,CAAI,CAAEs6D,SAAAA,CAAQ,CAAC,CAAGvK,CAClC/vD,CAAAA,EAAK,MAAM,CAAG,IAAI,CAAC,KAAK,CACxBA,EAAK,aAAa,CAAG,IAAI,CAAC,KAAK,CAC/BA,EAAK,UAAU,CAAG,CAAC,CAACs6D,EAAS,UAAU,CACvCt6D,EAAK,MAAM,CAAGD,EACd,IAAMyD,EAAU,IAAI,CAAC,4BAA4B,CAAC8tD,EAClD9tD,CAAAA,EAAQ,OAAO,CAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACtC,IAAI,CAAC,aAAa,CAACxD,EAAMnO,KAAAA,EAAW,CAClC,SAAU,CAAC0oE,EACX/2D,QAAAA,CACF,EAAG8tD,EACL,CACA,IAAI,CAAC,cAAc,CAACvxD,EAAQ9M,EAAO3B,EAAOggE,EAC5C,CACA,aAAc,CACZ,GAAM,CAAC4T,SAAAA,CAAQ,CAAC,CAAG,IAAI,CAAC,OAAO,AAC3B,EAAC,IAAI,CAAC,kBAAkB,EAAIA,GAC9B,KAAI,CAAC,kBAAkB,CAAGP,EAAS,UAAU,CAAC,OAAM,EAEtD,KAAK,CAAC,aACR,CACA,eAAe5kE,CAAM,CAAE9M,CAAK,CAAE3B,CAAK,CAAEggE,CAAI,CAAE,CACzC,IAAM2E,EAAQ3E,AAAS,UAATA,EACR,CAACZ,OAAAA,CAAM,CAAER,OAAAA,CAAM,CAAE0C,SAAAA,CAAQ,CAAE0H,SAAAA,CAAQ,CAAC,CAAG,IAAI,CAAC,WAAW,CACvDhG,EAAY,IAAI,CAAC,yBAAyB,CAACrhE,EAAOq+D,GAClD+C,EAAgB,IAAI,CAAC,gBAAgB,CAACC,GACtCE,EAAiB,IAAI,CAAC,cAAc,CAAClD,EAAM+C,GAC3C1D,EAAQD,EAAO,IAAI,CACnBE,EAAQV,EAAO,IAAI,CACnB,CAACsK,SAAAA,CAAQ,CAAE1mC,QAAAA,CAAO,CAAC,CAAG,IAAI,CAAC,OAAO,CAClC2mC,EAAe,QAASD,GAAYA,EAAWlkC,OAAO,iBAAiB,CACvEokC,EAAe,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAIzE,GAAS3E,AAAS,SAATA,EAC5DqJ,EAAa1nE,EAAQ,GAAK,IAAI,CAAC,SAAS,CAACA,EAAQ,GACrD,IAAK,IAAI/B,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAO,EAAEJ,EAAG,CAC1C,IAAMqO,EAAQQ,CAAM,CAAC7O,EAAE,CACjBo/D,EAAS,IAAI,CAAC,SAAS,CAACp/D,GACxBouB,EAAao7C,EAAen7D,EAAQ,CAAC,EACrCq7D,EAAW,QAActK,CAAM,CAACM,EAAM,EACtCsH,EAAS54C,CAAU,CAACqxC,EAAM,CAAGD,EAAO,gBAAgB,CAACJ,CAAM,CAACK,EAAM,CAAEz/D,GACpEinE,EAAS74C,CAAU,CAACsxC,EAAM,CAAGqF,GAAS2E,EAAW1K,EAAO,YAAY,GAAKA,EAAO,gBAAgB,CAAC0C,EAAW,IAAI,CAAC,UAAU,CAAC1C,EAAQI,EAAQsC,GAAYtC,CAAM,CAACM,EAAM,CAAE1/D,EAC7KouB,CAAAA,EAAW,IAAI,CAAG8pB,MAAM8uB,IAAW9uB,MAAM+uB,IAAWyC,EACpDt7C,EAAW,IAAI,CAAGpuB,EAAI,GAAK,AAACE,KAAK,GAAG,CAACk/D,CAAM,CAACK,EAAM,CAAGgK,CAAU,CAAChK,EAAM,EAAK8J,EACvE3mC,IACFxU,EAAW,MAAM,CAAGgxC,EACpBhxC,EAAW,GAAG,CAAGg7C,EAAS,IAAI,CAACppE,EAAE,EAE/BsjE,GACFl1C,CAAAA,EAAW,OAAO,CAAG+0C,GAAiB,IAAI,CAAC,yBAAyB,CAACnjE,EAAGqO,EAAM,MAAM,CAAG,SAAW+xD,EAAI,EAEpG,CAACoJ,GACH,IAAI,CAAC,aAAa,CAACn7D,EAAOrO,EAAGouB,EAAYgyC,GAE3CqJ,EAAarK,CACf,CACA,IAAI,CAAC,mBAAmB,CAAC+D,EAAe/C,EAAMgD,EAChD,CACA,gBAAiB,CACf,IAAMvE,EAAO,IAAI,CAAC,WAAW,CACvBp+D,EAAOo+D,EAAK,IAAI,EAAI,EAAE,CAC5B,GAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAE,CAC1B,IAAI58B,EAAM,EACV,IAAK,IAAIjiC,EAAIS,EAAK,MAAM,CAAG,EAAGT,GAAK,EAAG,EAAEA,EACtCiiC,EAAM/hC,KAAK,GAAG,CAAC+hC,EAAKxhC,CAAI,CAACT,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAACA,IAAM,GAExE,OAAOiiC,EAAM,GAAKA,CACpB,CACA,IAAM+F,EAAU62B,EAAK,OAAO,CACtB8K,EAAS3hC,EAAQ,OAAO,EAAIA,EAAQ,OAAO,CAAC,WAAW,EAAI,EACjE,GAAI,CAACvnC,EAAK,MAAM,CACd,OAAOkpE,EAET,IAAMC,EAAanpE,CAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAE/D,OAAOP,KAAK,GAAG,CAACypE,EAAQC,EADNnpE,CAAI,CAACA,EAAK,MAAM,CAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAACA,EAAK,MAAM,CAAG,KACzC,CACnD,CACF,CACAszE,EAAkB,EAAE,CAAG,UACvBA,EAAkB,QAAQ,CAAG,CAC3B,mBAAoB,GACpB,gBAAiB,QACjB,SAAU,GACV,KAAM,EACR,EACAA,EAAkB,SAAS,CAAG,CAC5B,YAAa,CACX,KAAM,OACR,EACA,QAAS,CACP,QAAS,CACP,UAAW,CACT,UACS,GAET,MAAM1X,GACG,IAAMA,EAAK,KAAK,CAAG,KAAOA,EAAK,cAAc,CAAG,GAE3D,CACF,CACF,EACA,OAAQ,CACN,EAAG,CACD,KAAM,QACR,EACA,EAAG,CACD,KAAM,QACR,CACF,CACF,EAEA,IAAI4X,EAA2BrvE,OAAO,MAAM,CAAC,CAC7C,UAAW,KACX,cAAe+/D,EACf,iBAAkBoC,EAClB,mBAAoBG,EACpB,eAAgBiC,EAChB,oBAAqBU,EACrB,cAAeI,EACf,gBAAiBC,EACjB,kBAAmB6J,CACnB,GAEA,SAASG,IACP,MAAM,AAAIx0E,MAAM,kFAClB,CACA,MAAMy0E,EACJ,YAAY7hE,CAAO,CAAE,CACnB,IAAI,CAAC,OAAO,CAAGA,GAAW,CAAC,CAC7B,CACA,KAAK8hE,CAAY,CAAE,CAAC,CACpB,SAAU,CACR,OAAOF,GACT,CACA,MAAMtyE,CAAK,CAAEw2B,CAAM,CAAE,CACnB,OAAO87C,GACT,CACA,OAAOG,CAAS,CAAEj8C,CAAM,CAAE,CACxB,OAAO87C,GACT,CACA,IAAIG,CAAS,CAAEljE,CAAM,CAAEmjE,CAAI,CAAE,CAC3B,OAAOJ,GACT,CACA,KAAKhyE,CAAC,CAAEC,CAAC,CAAEmyE,CAAI,CAAE,CACf,OAAOJ,GACT,CACA,QAAQG,CAAS,CAAEC,CAAI,CAAEC,CAAO,CAAE,CAChC,OAAOL,GACT,CACA,MAAMG,CAAS,CAAEC,CAAI,CAAE,CACrB,OAAOJ,GACT,CACF,CACAC,EAAY,QAAQ,CAAG,SAASK,CAAO,EACrC5vE,OAAO,MAAM,CAACuvE,EAAY,SAAS,CAAEK,EACvC,EACA,MACSL,EAsBT,SAASM,EAAyBrwC,CAAK,CAAEsB,CAAI,CAAEzoB,CAAQ,CAAEtF,CAAO,CAAE+8D,CAAS,EACzE,IAAMnW,EAAWn6B,EAAM,4BAA4B,GAC7CxiC,EAAQqb,CAAQ,CAACyoB,EAAK,CAC5B,IAAK,IAAI1lC,EAAI,EAAG8hC,EAAOy8B,EAAS,MAAM,CAAEv+D,EAAI8hC,EAAM,EAAE9hC,EAAG,CACrD,GAAM,CAAC0B,MAAAA,CAAK,CAAEjB,KAAAA,CAAI,CAAC,CAAG89D,CAAQ,CAACv+D,EAAE,CAC3B,CAAC20E,GAAAA,CAAE,CAAE3tE,GAAAA,CAAE,CAAC,CAAG4tE,AAxBrB,SAAsBC,CAAO,CAAEnvC,CAAI,CAAE9jC,CAAK,CAAE8yE,CAAS,EACnD,GAAM,CAACvV,WAAAA,CAAU,CAAE1+D,KAAAA,CAAI,CAAEq0E,QAAAA,CAAO,CAAC,CAAGD,EAC9BrV,EAASL,EAAW,WAAW,CAAC,MAAM,CAC5C,GAAIK,GAAU95B,IAAS85B,EAAO,IAAI,EAAI95B,AAAS,MAATA,GAAgBovC,GAAWr0E,EAAK,MAAM,CAAE,CAC5E,IAAMs0E,EAAevV,EAAO,cAAc,CAAG,GAAa,CAAG,GAAY,CACzE,GAAI,CAACkV,EACH,OAAOK,EAAat0E,EAAMilC,EAAM9jC,GAC3B,GAAIu9D,EAAW,cAAc,CAAE,CACpC,IAAMr7C,EAAKrjB,CAAI,CAAC,EAAE,CACZiiC,EAAQ,AAAuB,YAAvB,OAAO5e,EAAG,QAAQ,EAAmBA,EAAG,QAAQ,CAAC4hB,GAC/D,GAAIhD,EAAO,CACT,IAAM3gC,EAAQgzE,EAAat0E,EAAMilC,EAAM9jC,EAAQ8gC,GACzC5gC,EAAMizE,EAAat0E,EAAMilC,EAAM9jC,EAAQ8gC,GAC7C,MAAO,CAAC,GAAI3gC,EAAM,EAAE,CAAE,GAAID,EAAI,EAAE,CAClC,CACF,CACF,CACA,MAAO,CAAC,GAAI,EAAG,GAAIrB,EAAK,MAAM,CAAG,CAAC,CACpC,EAMkC89D,CAAQ,CAACv+D,EAAE,CAAE0lC,EAAM9jC,EAAO8yE,GACxD,IAAK,IAAI7tE,EAAI8tE,EAAI9tE,GAAKG,EAAI,EAAEH,EAAG,CAC7B,IAAMwG,EAAU5M,CAAI,CAACoG,EAAE,AACnB,EAACwG,EAAQ,IAAI,EACfsK,EAAQtK,EAAS3L,EAAOmF,EAE5B,CACF,CACF,CAUA,SAASmuE,EAAkB5wC,CAAK,CAAEnnB,CAAQ,CAAEyoB,CAAI,CAAE0kC,CAAgB,CAAE6K,CAAgB,EAClF,IAAMpzC,EAAQ,EAAE,QAChB,AAAI,AAACozC,GAAqB7wC,EAAM,aAAa,CAACnnB,IAW9Cw3D,EAAyBrwC,EAAOsB,EAAMzoB,EARf,SAAS5P,CAAO,CAAE86B,CAAY,CAAEzmC,CAAK,EAC1D,GAAI,EAACuzE,IAAoB,CAAC,QAAe5nE,EAAS+2B,EAAM,SAAS,CAAE,GAG/D/2B,EAAQ,OAAO,CAAC4P,EAAS,CAAC,CAAEA,EAAS,CAAC,CAAEmtD,IAC1CvoC,EAAM,IAAI,CAAC,CAACx0B,QAAAA,EAAS86B,aAAAA,EAAczmC,MAAAA,CAAK,EAE5C,EACgE,IACzDmgC,GAXEA,CAYX,CAsCA,SAASqzC,EAAgB9wC,CAAK,CAAEnnB,CAAQ,CAAEyoB,CAAI,CAAEgvC,CAAS,CAAEtK,CAAgB,CAAE6K,CAAgB,MArC9D7wC,EAAOnnB,EAAUyoB,EAAM0kC,MAChDvoC,EAqCJ,GAAI,CAACozC,GAAoB,CAAC7wC,EAAM,aAAa,CAACnnB,GAC5C,MAAO,EAAE,CAEX,MAAOyoB,AAAS,MAATA,GAAiBgvC,EAEpBS,AA/BN,SAAkC/wC,CAAK,CAAEnnB,CAAQ,CAAEyoB,CAAI,CAAEgvC,CAAS,CAAEtK,CAAgB,CAAE6K,CAAgB,EACpG,IAAIpzC,EAAQ,EAAE,CACRuzC,EAAiBC,AAvCzB,SAAkC3vC,CAAI,EACpC,IAAM4vC,EAAO5vC,AAAsB,KAAtBA,EAAK,OAAO,CAAC,KACpB6vC,EAAO7vC,AAAsB,KAAtBA,EAAK,OAAO,CAAC,KAC1B,OAAO,SAAS8vC,CAAG,CAAEC,CAAG,EACtB,IAAMjnE,EAAS8mE,EAAOp1E,KAAK,GAAG,CAACs1E,EAAI,CAAC,CAAGC,EAAI,CAAC,EAAI,EAEhD,OAAOv1E,KAAK,IAAI,CAACA,KAAK,GAAG,CAACsO,EAAQ,GAAKtO,KAAK,GAAG,CADhCq1E,EAAOr1E,KAAK,GAAG,CAACs1E,EAAI,CAAC,CAAGC,EAAI,CAAC,EAAI,EACQ,GAC1D,CACF,EA+BkD/vC,GAC5CgwC,EAActwC,OAAO,iBAAiB,CAoB1C,OADAqvC,EAAyBrwC,EAAOsB,EAAMzoB,EAlBtC,SAAwB5P,CAAO,CAAE86B,CAAY,CAAEzmC,CAAK,EAClD,IAAMi0E,EAAUtoE,EAAQ,OAAO,CAAC4P,EAAS,CAAC,CAAEA,EAAS,CAAC,CAAEmtD,GACxD,GAAIsK,GAAa,CAACiB,EAChB,OAEF,IAAM1rD,EAAS5c,EAAQ,cAAc,CAAC+8D,GAEtC,GAAI,CADgB,CAAE6K,GAAoB7wC,EAAM,aAAa,CAACna,EAAM,GAChD,CAAC0rD,EACnB,OAEF,IAAMlgB,EAAW2f,EAAen4D,EAAUgN,EACtCwrC,CAAAA,EAAWigB,GACb7zC,EAAQ,CAAC,CAACx0B,QAAAA,EAAS86B,aAAAA,EAAczmC,MAAAA,CAAK,EAAE,CACxCg0E,EAAcjgB,GACLA,IAAaigB,GACtB7zC,EAAM,IAAI,CAAC,CAACx0B,QAAAA,EAAS86B,aAAAA,EAAczmC,MAAAA,CAAK,EAE5C,GAEOmgC,CACT,EAO+BuC,EAAOnnB,EAAUyoB,EAAMgvC,EAAWtK,EAAkB6K,IA3CpD7wC,EA0CHA,EA1CUnnB,EA0CHA,EA1CayoB,EA0CHA,EA1CS0kC,EA0CHA,EAzC7CvoC,EAAQ,EAAE,CAQd4yC,EAAyBrwC,EAAOsB,EAAMzoB,EAPtC,SAAwB5P,CAAO,CAAE86B,CAAY,CAAEzmC,CAAK,EAClD,GAAM,CAACqmE,WAAAA,CAAU,CAAED,SAAAA,CAAQ,CAAC,CAAGz6D,EAAQ,QAAQ,CAAC,CAAC,aAAc,WAAW,CAAE+8D,GACtE,CAACl5D,MAAAA,CAAK,CAAC,CAAG,SAAkB7D,EAAS,CAAC,EAAG4P,EAAS,CAAC,CAAE,EAAGA,EAAS,CAAC,GACpE,QAAc/L,EAAO62D,EAAYD,IACnCjmC,EAAM,IAAI,CAAC,CAACx0B,QAAAA,EAAS86B,aAAAA,EAAczmC,MAAAA,CAAK,EAE5C,GAEOmgC,EAkCT,CACA,SAAS+zC,GAAaxxC,CAAK,CAAEnnB,CAAQ,CAAEyoB,CAAI,CAAEgvC,CAAS,CAAEtK,CAAgB,EACtE,IAAMvoC,EAAQ,EAAE,CACVg0C,EAAcnwC,AAAS,MAATA,EAAe,WAAa,WAC5CowC,EAAiB,SAOrB,CANArB,EAAyBrwC,EAAOsB,EAAMzoB,EAAU,CAAC5P,EAAS86B,EAAczmC,KAClE2L,CAAO,CAACwoE,EAAY,CAAC54D,CAAQ,CAACyoB,EAAK,CAAE0kC,KACvCvoC,EAAM,IAAI,CAAC,CAACx0B,QAAAA,EAAS86B,aAAAA,EAAczmC,MAAAA,CAAK,GACxCo0E,EAAiBA,GAAkBzoE,EAAQ,OAAO,CAAC4P,EAAS,CAAC,CAAEA,EAAS,CAAC,CAAEmtD,GAE/E,GACIsK,GAAa,CAACoB,GACT,EAAE,CAEJj0C,CACT,CACA,IAAIk0C,GAAc,CAEhB,MAAO,CACL,MAAM3xC,CAAK,CAAEp8B,CAAC,CAAEsK,CAAO,CAAE83D,CAAgB,EACvC,IAAMntD,EAAW,QAAoBjV,EAAGo8B,GAClCsB,EAAOpzB,EAAQ,IAAI,EAAI,IACvB2iE,EAAmB3iE,EAAQ,gBAAgB,EAAI,GAC/CuvB,EAAQvvB,EAAQ,SAAS,CAC3B0iE,EAAkB5wC,EAAOnnB,EAAUyoB,EAAM0kC,EAAkB6K,GAC3DC,EAAgB9wC,EAAOnnB,EAAUyoB,EAAM,GAAO0kC,EAAkB6K,GAC9D9mE,EAAW,EAAE,QACnB,AAAK0zB,EAAM,MAAM,EAGjBuC,EAAM,4BAA4B,GAAG,OAAO,CAAC,AAACy6B,IAC5C,IAAMn9D,EAAQmgC,CAAK,CAAC,EAAE,CAAC,KAAK,CACtBx0B,EAAUwxD,EAAK,IAAI,CAACn9D,EAAM,CAC5B2L,GAAW,CAACA,EAAQ,IAAI,EAC1Bc,EAAS,IAAI,CAAC,CAACd,QAAAA,EAAS,aAAcwxD,EAAK,KAAK,CAAEn9D,MAAAA,CAAK,EAE3D,GACOyM,GATE,EAAE,AAUb,EACA,QAAQi2B,CAAK,CAAEp8B,CAAC,CAAEsK,CAAO,CAAE83D,CAAgB,EACzC,IAAMntD,EAAW,QAAoBjV,EAAGo8B,GAClCsB,EAAOpzB,EAAQ,IAAI,EAAI,KACvB2iE,EAAmB3iE,EAAQ,gBAAgB,EAAI,GACjDuvB,EAAQvvB,EAAQ,SAAS,CACzB0iE,EAAkB5wC,EAAOnnB,EAAUyoB,EAAM0kC,EAAkB6K,GAC7DC,EAAgB9wC,EAAOnnB,EAAUyoB,EAAM,GAAO0kC,EAAkB6K,GAClE,GAAIpzC,EAAM,MAAM,CAAG,EAAG,CACpB,IAAMsG,EAAetG,CAAK,CAAC,EAAE,CAAC,YAAY,CACpCphC,EAAO2jC,EAAM,cAAc,CAAC+D,GAAc,IAAI,CACpDtG,EAAQ,EAAE,CACV,IAAK,IAAI7hC,EAAI,EAAGA,EAAIS,EAAK,MAAM,CAAE,EAAET,EACjC6hC,EAAM,IAAI,CAAC,CAAC,QAASphC,CAAI,CAACT,EAAE,CAAEmoC,aAAAA,EAAc,MAAOnoC,CAAC,EAExD,CACA,OAAO6hC,CACT,EACA,MAAMuC,CAAK,CAAEp8B,CAAC,CAAEsK,CAAO,CAAE83D,CAAgB,EACvC,IAAMntD,EAAW,QAAoBjV,EAAGo8B,GAClCsB,EAAOpzB,EAAQ,IAAI,EAAI,KAE7B,OAAO0iE,EAAkB5wC,EAAOnnB,EAAUyoB,EAAM0kC,EADvB93D,EAAQ,gBAAgB,EAAI,GAEvD,EACA,QAAQ8xB,CAAK,CAAEp8B,CAAC,CAAEsK,CAAO,CAAE83D,CAAgB,EACzC,IAAMntD,EAAW,QAAoBjV,EAAGo8B,GAClCsB,EAAOpzB,EAAQ,IAAI,EAAI,KACvB2iE,EAAmB3iE,EAAQ,gBAAgB,EAAI,GACrD,OAAO4iE,EAAgB9wC,EAAOnnB,EAAUyoB,EAAMpzB,EAAQ,SAAS,CAAE83D,EAAkB6K,EACrF,EACA,EAAE7wC,CAAK,CAAEp8B,CAAC,CAAEsK,CAAO,CAAE83D,CAAgB,EACnC,IAAMntD,EAAW,QAAoBjV,EAAGo8B,GACxC,OAAOwxC,GAAaxxC,EAAOnnB,EAAU,IAAK3K,EAAQ,SAAS,CAAE83D,EAC/D,EACA,EAAEhmC,CAAK,CAAEp8B,CAAC,CAAEsK,CAAO,CAAE83D,CAAgB,EACnC,IAAMntD,EAAW,QAAoBjV,EAAGo8B,GACxC,OAAOwxC,GAAaxxC,EAAOnnB,EAAU,IAAK3K,EAAQ,SAAS,CAAE83D,EAC/D,CACF,CACF,EAEA,IAAM4L,GAAmB,CAAC,OAAQ,MAAO,QAAS,SAAS,CAC3D,SAASC,GAAiBn2E,CAAK,CAAEmd,CAAQ,EACvC,OAAOnd,EAAM,MAAM,CAAC2E,GAAKA,EAAE,GAAG,GAAKwY,EACrC,CACA,SAASi5D,GAA4Bp2E,CAAK,CAAE4lC,CAAI,EAC9C,OAAO5lC,EAAM,MAAM,CAAC2E,GAAKuxE,AAAoC,KAApCA,GAAiB,OAAO,CAACvxE,EAAE,GAAG,GAAYA,EAAE,GAAG,CAAC,IAAI,GAAKihC,EACpF,CACA,SAASywC,GAAar2E,CAAK,CAAEs+D,CAAO,EAClC,OAAOt+D,EAAM,IAAI,CAAC,CAACoC,EAAGC,KACpB,IAAMw2C,EAAKylB,EAAUj8D,EAAID,EACnB02C,EAAKwlB,EAAUl8D,EAAIC,EACzB,OAAOw2C,EAAG,MAAM,GAAKC,EAAG,MAAM,CAC5BD,EAAG,KAAK,CAAGC,EAAG,KAAK,CACnBD,EAAG,MAAM,CAAGC,EAAG,MAAM,AACzB,EACF,CAqEA,SAASw9B,GAAeC,CAAU,CAAEhP,CAAS,CAAEnlE,CAAC,CAAEC,CAAC,EACjD,OAAOjC,KAAK,GAAG,CAACm2E,CAAU,CAACn0E,EAAE,CAAEmlE,CAAS,CAACnlE,EAAE,EAAIhC,KAAK,GAAG,CAACm2E,CAAU,CAACl0E,EAAE,CAAEklE,CAAS,CAACllE,EAAE,CACrF,CACA,SAASm0E,GAAiBD,CAAU,CAAEE,CAAU,EAC9CF,EAAW,GAAG,CAAGn2E,KAAK,GAAG,CAACm2E,EAAW,GAAG,CAAEE,EAAW,GAAG,EACxDF,EAAW,IAAI,CAAGn2E,KAAK,GAAG,CAACm2E,EAAW,IAAI,CAAEE,EAAW,IAAI,EAC3DF,EAAW,MAAM,CAAGn2E,KAAK,GAAG,CAACm2E,EAAW,MAAM,CAAEE,EAAW,MAAM,EACjEF,EAAW,KAAK,CAAGn2E,KAAK,GAAG,CAACm2E,EAAW,KAAK,CAAEE,EAAW,KAAK,CAChE,CAmDA,SAASC,GAASC,CAAK,CAAEpP,CAAS,CAAEqP,CAAM,CAAEnX,CAAM,MAE5Cv/D,EAAG8hC,EAAM0E,EAAQ7xB,EAAKgiE,EAAOC,EADjC,IAAMC,EAAa,EAAE,CAErB,IAAK72E,EAAI,EAAG8hC,EAAO20C,EAAM,MAAM,CAAEE,EAAQ,EAAG32E,EAAI8hC,EAAM,EAAE9hC,EAAG,CAGzD2U,AADAA,CAAAA,EAAM6xB,AADNA,CAAAA,EAASiwC,CAAK,CAACz2E,EAAE,AAAD,EACH,GAAG,AAAD,EACX,MAAM,CACRwmC,EAAO,KAAK,EAAI6gC,EAAU,CAAC,CAC3B7gC,EAAO,MAAM,EAAI6gC,EAAU,CAAC,CAC5ByP,AAtBN,SAAoB9R,CAAU,CAAEqC,CAAS,EACvC,IAAMgP,EAAahP,EAAU,UAAU,CACvC,SAAS0P,EAAmBC,CAAS,EACnC,IAAM7wC,EAAS,CAAC,KAAM,EAAG,IAAK,EAAG,MAAO,EAAG,OAAQ,CAAC,EAIpD,OAHA6wC,EAAU,OAAO,CAAC,AAACC,IACjB9wC,CAAM,CAAC8wC,EAAI,CAAG/2E,KAAK,GAAG,CAACmnE,CAAS,CAAC4P,EAAI,CAAEZ,CAAU,CAACY,EAAI,CACxD,GACO9wC,CACT,CACA,OACI4wC,EAAmB,AADhB/R,EACgB,CAAC,OAAQ,QAAQ,CACjB,CAAC,MAAO,SAAS,CAC1C,EAUiBx+B,EAAO,UAAU,CAAE6gC,IAEhC,GAAM,CAAC6P,KAAAA,CAAI,CAAE9wC,MAAAA,CAAK,CAAC,CAAG+wC,AA7D1B,SAAoB9P,CAAS,CAAEqP,CAAM,CAAElwC,CAAM,CAAE+4B,CAAM,EACnD,GAAM,CAAC0X,IAAAA,CAAG,CAAEtiE,IAAAA,CAAG,CAAC,CAAG6xB,EACb6vC,EAAahP,EAAU,UAAU,CACvC,GAAI,CAAC,QAAS4P,GAAM,CACdzwC,EAAO,IAAI,EACb6gC,CAAAA,CAAS,CAAC4P,EAAI,EAAIzwC,EAAO,IAAI,AAAD,EAE9B,IAAMzR,EAAQwqC,CAAM,CAAC/4B,EAAO,KAAK,CAAC,EAAI,CAAC,KAAM,EAAG,MAAO,CAAC,CACxDzR,CAAAA,EAAM,IAAI,CAAG70B,KAAK,GAAG,CAAC60B,EAAM,IAAI,CAAEyR,EAAO,UAAU,CAAG7xB,EAAI,MAAM,CAAGA,EAAI,KAAK,EAC5E6xB,EAAO,IAAI,CAAGzR,EAAM,IAAI,CAAGA,EAAM,KAAK,CACtCsyC,CAAS,CAAC4P,EAAI,EAAIzwC,EAAO,IAAI,AAC/B,CACI7xB,EAAI,UAAU,EAChB2hE,GAAiBD,EAAY1hE,EAAI,UAAU,IAE7C,IAAMyiE,EAAWl3E,KAAK,GAAG,CAAC,EAAGw2E,EAAO,UAAU,CAAGN,GAAeC,EAAYhP,EAAW,OAAQ,UACzFgQ,EAAYn3E,KAAK,GAAG,CAAC,EAAGw2E,EAAO,WAAW,CAAGN,GAAeC,EAAYhP,EAAW,MAAO,WAC1FiQ,EAAeF,IAAa/P,EAAU,CAAC,CACvCkQ,EAAgBF,IAAchQ,EAAU,CAAC,CAG/C,OAFAA,EAAU,CAAC,CAAG+P,EACd/P,EAAU,CAAC,CAAGgQ,EACP7wC,EAAO,UAAU,CACpB,CAAC,KAAM8wC,EAAc,MAAOC,CAAa,EACzC,CAAC,KAAMA,EAAe,MAAOD,CAAY,CAC/C,EAqCqCjQ,EAAWqP,EAAQlwC,EAAQ+4B,GAC5DoX,GAASO,GAAQL,EAAW,MAAM,CAClCD,EAAUA,GAAWxwC,EACjB,CAACzxB,EAAI,QAAQ,EACfkiE,EAAW,IAAI,CAACrwC,EAEpB,CACA,OAAOmwC,GAASH,GAASK,EAAYxP,EAAWqP,EAAQnX,IAAWqX,CACrE,CACA,SAASY,GAAW7iE,CAAG,CAAErR,CAAI,CAAEuf,CAAG,CAAE5P,CAAK,CAAE1R,CAAM,EAC/CoT,EAAI,GAAG,CAAGkO,EACVlO,EAAI,IAAI,CAAGrR,EACXqR,EAAI,KAAK,CAAGrR,EAAO2P,EACnB0B,EAAI,MAAM,CAAGkO,EAAMthB,EACnBoT,EAAI,KAAK,CAAG1B,EACZ0B,EAAI,MAAM,CAAGpT,CACf,CACA,SAASk2E,GAAWhB,CAAK,CAAEpP,CAAS,CAAEqP,CAAM,CAAEnX,CAAM,EAClD,IAAMmY,EAAchB,EAAO,OAAO,CAC9B,CAAC/2E,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAC,CAAGskE,EACb,IAAK,IAAM7gC,KAAUiwC,EAAO,CAC1B,IAAM9hE,EAAM6xB,EAAO,GAAG,CAChBzR,EAAQwqC,CAAM,CAAC/4B,EAAO,KAAK,CAAC,EAAI,CAAC,MAAO,EAAG,OAAQ,EAAG,OAAQ,CAAC,EAC/DmxC,EAAS,AAACnxC,EAAO,WAAW,CAAGzR,EAAM,MAAM,EAAK,EACtD,GAAIyR,EAAO,UAAU,CAAE,CACrB,IAAMvzB,EAAQo0D,EAAU,CAAC,CAAGsQ,EACtBp2E,EAASwzB,EAAM,IAAI,EAAIpgB,EAAI,MAAM,CACnC,QAAQogB,EAAM,KAAK,GACrBhyB,CAAAA,EAAIgyB,EAAM,KAAK,AAAD,EAEZpgB,EAAI,QAAQ,CACd6iE,GAAW7iE,EAAK+iE,EAAY,IAAI,CAAE30E,EAAG2zE,EAAO,UAAU,CAAGgB,EAAY,KAAK,CAAGA,EAAY,IAAI,CAAEn2E,GAE/Fi2E,GAAW7iE,EAAK0yD,EAAU,IAAI,CAAGtyC,EAAM,MAAM,CAAEhyB,EAAGkQ,EAAO1R,GAE3DwzB,EAAM,KAAK,CAAGhyB,EACdgyB,EAAM,MAAM,EAAI9hB,EAChBlQ,EAAI4R,EAAI,MAAM,AAChB,KAAO,CACL,IAAMpT,EAAS8lE,EAAU,CAAC,CAAGsQ,EACvB1kE,EAAQ8hB,EAAM,IAAI,EAAIpgB,EAAI,KAAK,CACjC,QAAQogB,EAAM,KAAK,GACrBp1B,CAAAA,EAAIo1B,EAAM,KAAK,AAAD,EAEZpgB,EAAI,QAAQ,CACd6iE,GAAW7iE,EAAKhV,EAAG+3E,EAAY,GAAG,CAAEzkE,EAAOyjE,EAAO,WAAW,CAAGgB,EAAY,MAAM,CAAGA,EAAY,GAAG,EAEpGF,GAAW7iE,EAAKhV,EAAG0nE,EAAU,GAAG,CAAGtyC,EAAM,MAAM,CAAE9hB,EAAO1R,GAE1DwzB,EAAM,KAAK,CAAGp1B,EACdo1B,EAAM,MAAM,EAAIxzB,EAChB5B,EAAIgV,EAAI,KAAK,AACf,CACF,CACA0yD,EAAU,CAAC,CAAG1nE,EACd0nE,EAAU,CAAC,CAAGtkE,CAChB,CACA,OAAY,CAAC,SAAU,CACrB,YAAa,GACb,QAAS,CACP,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,CACR,CACF,GACA,IAAI60E,GAAU,CACZ,OAAOxzC,CAAK,CAAEi4B,CAAI,EACZ,CAACj4B,EAAM,KAAK,EACdA,CAAAA,EAAM,KAAK,CAAG,EAAE,AAAD,EAEjBi4B,EAAK,QAAQ,CAAGA,EAAK,QAAQ,EAAI,GACjCA,EAAK,QAAQ,CAAGA,EAAK,QAAQ,EAAI,MACjCA,EAAK,MAAM,CAAGA,EAAK,MAAM,EAAI,EAC7BA,EAAK,OAAO,CAAGA,EAAK,OAAO,EAAI,WAC7B,MAAO,CAAC,CACN,EAAG,EACH,KAAKgL,CAAS,EACZhL,EAAK,IAAI,CAACgL,EACZ,CACF,EAAE,AACJ,EACAjjC,EAAM,KAAK,CAAC,IAAI,CAACi4B,EACnB,EACA,UAAUj4B,CAAK,CAAEyzC,CAAU,EACzB,IAAMn2E,EAAQ0iC,EAAM,KAAK,CAAGA,EAAM,KAAK,CAAC,OAAO,CAACyzC,GAAc,EAChD,MAAVn2E,GACF0iC,EAAM,KAAK,CAAC,MAAM,CAAC1iC,EAAO,EAE9B,EACA,UAAU0iC,CAAK,CAAEi4B,CAAI,CAAE/pD,CAAO,EAC5B+pD,EAAK,QAAQ,CAAG/pD,EAAQ,QAAQ,CAChC+pD,EAAK,QAAQ,CAAG/pD,EAAQ,QAAQ,CAChC+pD,EAAK,MAAM,CAAG/pD,EAAQ,MAAM,AAC9B,EACA,OAAO8xB,CAAK,CAAEnxB,CAAK,CAAE1R,CAAM,CAAEu2E,CAAU,EACrC,GAAI,CAAC1zC,EACH,OAEF,IAAM35B,EAAU,QAAU25B,EAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAChD2zC,EAAiB73E,KAAK,GAAG,CAAC+S,EAAQxI,EAAQ,KAAK,CAAE,GACjDutE,EAAkB93E,KAAK,GAAG,CAACqB,EAASkJ,EAAQ,MAAM,CAAE,GACpDgsE,EAAQwB,AA9LlB,SAA0BxB,CAAK,EAC7B,IAAMyB,EAAcC,AAnDtB,SAAmB1B,CAAK,MAElBz2E,EAAG8hC,EAAMntB,EAAKsiE,EAAKliD,EAAOqjD,EAD9B,IAAMF,EAAc,EAAE,CAEtB,IAAKl4E,EAAI,EAAG8hC,EAAO,AAAC20C,CAAAA,GAAS,EAAE,AAAD,EAAG,MAAM,CAAEz2E,EAAI8hC,EAAM,EAAE9hC,EACnD2U,EAAM8hE,CAAK,CAACz2E,EAAE,CACb,EAAC,SAAUi3E,CAAG,CAAE,QAAS,CAACliD,MAAAA,CAAK,CAAEqjD,YAAAA,EAAc,CAAC,CAAC,CAAC,CAAGzjE,CAAE,EACxDujE,EAAY,IAAI,CAAC,CACf,MAAOl4E,EACP2U,IAAAA,EACAsiE,IAAAA,EACA,WAAYtiE,EAAI,YAAY,GAC5B,OAAQA,EAAI,MAAM,CAClB,MAAOogB,GAAUkiD,EAAMliD,EACvBqjD,YAAAA,CACF,GAEF,OAAOF,CACT,EAkCgCzB,GACxB4B,EAAWlC,GAAa+B,EAAY,MAAM,CAACI,GAAQA,EAAK,GAAG,CAAC,QAAQ,EAAG,IACvEh1E,EAAO6yE,GAAaF,GAAiBiC,EAAa,QAAS,IAC3D10E,EAAQ2yE,GAAaF,GAAiBiC,EAAa,UACnDr1D,EAAMszD,GAAaF,GAAiBiC,EAAa,OAAQ,IACzDhzE,EAASixE,GAAaF,GAAiBiC,EAAa,WACpDK,EAAmBrC,GAA4BgC,EAAa,KAC5DM,EAAiBtC,GAA4BgC,EAAa,KAChE,MAAO,CACLG,SAAAA,EACA,WAAY/0E,EAAK,MAAM,CAACuf,GACxB,eAAgBrf,EAAM,MAAM,CAACg1E,GAAgB,MAAM,CAACtzE,GAAQ,MAAM,CAACqzE,GACnE,UAAWtC,GAAiBiC,EAAa,aACzC,SAAU50E,EAAK,MAAM,CAACE,GAAO,MAAM,CAACg1E,GACpC,WAAY31D,EAAI,MAAM,CAAC3d,GAAQ,MAAM,CAACqzE,EACxC,CACF,EA6KmCn0C,EAAM,KAAK,EACpCq0C,EAAgBhC,EAAM,QAAQ,CAC9BiC,EAAkBjC,EAAM,UAAU,CACxC,QAAKryC,EAAM,KAAK,CAAEzvB,IACgB,YAA5B,OAAOA,EAAI,YAAY,EACzBA,EAAI,YAAY,EAEpB,GAGA,IAAM+hE,EAAS9xE,OAAO,MAAM,CAAC,CAC3B,WAAYqO,EACZ,YAAa1R,EACbkJ,QAAAA,EACAstE,eAAAA,EACAC,gBAAAA,EACA,aAAcD,EAAiB,EARDU,CAAAA,EAAc,MAAM,CAAC,CAAC7P,EAAO0P,IAC3DA,EAAK,GAAG,CAAC,OAAO,EAAIA,AAA6B,KAA7BA,EAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAa1P,EAAQA,EAAQ,EAAG,IAAM,GAQlF,cAAeoP,EAAkB,CACnC,GACM3B,EAAazxE,OAAO,MAAM,CAAC,CAAC,EAAG6F,GACrC6rE,GAAiBD,EAAY,QAAUyB,IACvC,IAAMzQ,EAAYziE,OAAO,MAAM,CAAC,CAC9ByxE,WAAAA,EACA,EAAG0B,EACH,EAAGC,EACH,EAAGvtE,EAAQ,IAAI,CACf,EAAGA,EAAQ,GAAG,AAChB,EAAGA,GACG80D,EAASoZ,AA7OnB,SAAuBf,CAAO,CAAElB,CAAM,MAGhC12E,EAAG8hC,EAAM0E,EAFb,IAAM+4B,EAASqZ,AAdjB,SAAqBhB,CAAO,EAC1B,IAAMrY,EAAS,CAAC,EAChB,IAAK,IAAM+Y,KAAQV,EAAS,CAC1B,GAAM,CAAC7iD,MAAAA,CAAK,CAAEkiD,IAAAA,CAAG,CAAEmB,YAAAA,CAAW,CAAC,CAAGE,EAClC,GAAI,CAACvjD,GAAS,CAACihD,GAAiB,QAAQ,CAACiB,GACvC,SAEF,IAAM4B,EAAStZ,CAAM,CAACxqC,EAAM,EAAKwqC,CAAAA,CAAM,CAACxqC,EAAM,CAAG,CAAC,MAAO,EAAG,OAAQ,EAAG,OAAQ,EAAG,KAAM,CAAC,EACzF8jD,CAAAA,EAAO,KAAK,GACZA,EAAO,MAAM,EAAIT,CACnB,CACA,OAAO7Y,CACT,EAE6BqY,GACrB,CAACkB,aAAAA,CAAY,CAAEC,cAAAA,CAAa,CAAC,CAAGrC,EAEtC,IAAK12E,EAAI,EAAG8hC,EAAO81C,EAAQ,MAAM,CAAE53E,EAAI8hC,EAAM,EAAE9hC,EAAG,CAEhD,GAAM,CAACq4E,SAAAA,CAAQ,CAAC,CAAG7xC,AADnBA,CAAAA,EAASoxC,CAAO,CAAC53E,EAAE,AAAD,EACQ,GAAG,CACvB+0B,EAAQwqC,CAAM,CAAC/4B,EAAO,KAAK,CAAC,CAC5Bk2B,EAAS3nC,GAASyR,EAAO,WAAW,CAAGzR,EAAM,MAAM,AACrDyR,CAAAA,EAAO,UAAU,EACnBA,EAAO,KAAK,CAAGk2B,EAASA,EAASoc,EAAeT,GAAY3B,EAAO,cAAc,CACjFlwC,EAAO,MAAM,CAAGuyC,IAEhBvyC,EAAO,KAAK,CAAGsyC,EACftyC,EAAO,MAAM,CAAGk2B,EAASA,EAASqc,EAAgBV,GAAY3B,EAAO,eAAe,CAExF,CACA,OAAOnX,CACT,EA2NiCkZ,EAAc,MAAM,CAACC,GAAkBhC,GACpEF,GAASC,EAAM,QAAQ,CAAEpP,EAAWqP,EAAQnX,GAC5CiX,GAASiC,EAAepR,EAAWqP,EAAQnX,GACvCiX,GAASkC,EAAiBrR,EAAWqP,EAAQnX,IAC/CiX,GAASiC,EAAepR,EAAWqP,EAAQnX,IAE7CyZ,AA5KJ,SAA0B3R,CAAS,EACjC,IAAMgP,EAAahP,EAAU,UAAU,CACvC,SAAS4R,EAAUhC,CAAG,EACpB,IAAMtxE,EAASzF,KAAK,GAAG,CAACm2E,CAAU,CAACY,EAAI,CAAG5P,CAAS,CAAC4P,EAAI,CAAE,GAE1D,OADA5P,CAAS,CAAC4P,EAAI,EAAItxE,EACXA,CACT,CACA0hE,EAAU,CAAC,EAAI4R,EAAU,OACzB5R,EAAU,CAAC,EAAI4R,EAAU,QACzBA,EAAU,SACVA,EAAU,SACZ,EAiKqB5R,GACjBoQ,GAAWhB,EAAM,UAAU,CAAEpP,EAAWqP,EAAQnX,GAChD8H,EAAU,CAAC,EAAIA,EAAU,CAAC,CAC1BA,EAAU,CAAC,EAAIA,EAAU,CAAC,CAC1BoQ,GAAWhB,EAAM,cAAc,CAAEpP,EAAWqP,EAAQnX,GACpDn7B,EAAM,SAAS,CAAG,CAChB,KAAMijC,EAAU,IAAI,CACpB,IAAKA,EAAU,GAAG,CAClB,MAAOA,EAAU,IAAI,CAAGA,EAAU,CAAC,CACnC,OAAQA,EAAU,GAAG,CAAGA,EAAU,CAAC,CACnC,OAAQA,EAAU,CAAC,CACnB,MAAOA,EAAU,CAAC,AACpB,EACA,QAAKoP,EAAM,SAAS,CAAE,AAACjwC,IACrB,IAAM7xB,EAAM6xB,EAAO,GAAG,CACtB5hC,OAAO,MAAM,CAAC+P,EAAKyvB,EAAM,SAAS,EAClCzvB,EAAI,MAAM,CAAC0yD,EAAU,CAAC,CAAEA,EAAU,CAAC,CAAE,CAAC,KAAM,EAAG,IAAK,EAAG,MAAO,EAAG,OAAQ,CAAC,EAC5E,EACF,CACF,CAEA,OAAM6R,GACJ,eAAetnE,CAAM,CAAEotC,CAAW,CAAE,CAAC,CACrC,eAAe7xC,CAAO,CAAE,CACtB,MAAO,EACT,CACA,iBAAiBi3B,CAAK,CAAEh3B,CAAI,CAAEuf,CAAQ,CAAE,CAAC,CACzC,oBAAoByX,CAAK,CAAEh3B,CAAI,CAAEuf,CAAQ,CAAE,CAAC,CAC5C,qBAAsB,CACpB,OAAO,CACT,CACA,eAAetf,CAAO,CAAE4F,CAAK,CAAE1R,CAAM,CAAEy9C,CAAW,CAAE,CAGlD,OAFA/rC,EAAQ/S,KAAK,GAAG,CAAC,EAAG+S,GAAS5F,EAAQ,KAAK,EAC1C9L,EAASA,GAAU8L,EAAQ,MAAM,CAC1B,CACL4F,MAAAA,EACA,OAAQ/S,KAAK,GAAG,CAAC,EAAG8+C,EAAc9+C,KAAK,KAAK,CAAC+S,EAAQ+rC,GAAez9C,EACtE,CACF,CACA,WAAWqQ,CAAM,CAAE,CACjB,MAAO,EACT,CACA,aAAaH,CAAM,CAAE,CACrB,CACF,CAEA,MAAM0nE,WAAsBD,GAC1B,eAAe7c,CAAI,CAAE,CACnB,OAAOA,GAAQA,EAAK,UAAU,EAAIA,EAAK,UAAU,CAAC,OAAS,IAC7D,CACA,aAAa5qD,CAAM,CAAE,CACnBA,EAAO,OAAO,CAAC,SAAS,CAAG,EAC7B,CACF,CAEA,IAAM+1B,GAAc,WACd4xC,GAAc,CAClB,WAAY,YACZ,UAAW,YACX,SAAU,UACV,aAAc,aACd,YAAa,YACb,YAAa,YACb,UAAW,UACX,aAAc,WACd,WAAY,UACd,EACMC,GAAgBz3E,GAASA,AAAU,OAAVA,GAAkBA,AAAU,KAAVA,EAoC3C03E,GAAuB,MAA4B,EAAG,CAAC,QAAS,EAAI,EAI1E,SAASC,GAAen1C,CAAK,CAAEh3B,CAAI,CAAEuf,CAAQ,EAC3CyX,EAAM,MAAM,CAAC,mBAAmB,CAACh3B,EAAMuf,EAAU2sD,GACnD,CAYA,SAASE,GAAiBC,CAAQ,CAAE7nE,CAAM,EACxC,IAAK,IAAMvR,KAAQo5E,EACjB,GAAIp5E,IAASuR,GAAUvR,EAAK,QAAQ,CAACuR,GACnC,MAAO,EAGb,CACA,SAAS8nE,GAAqBt1C,CAAK,CAAEh3B,CAAI,CAAEuf,CAAQ,EACjD,IAAM/a,EAASwyB,EAAM,MAAM,CACrBu1C,EAAW,IAAIC,iBAAiBC,IACpC,IAAIC,EAAU,GACd,IAAK,IAAM/V,KAAS8V,EAElBC,EAAUA,AADVA,CAAAA,EAAUA,GAAWN,GAAiBzV,EAAM,UAAU,CAAEnyD,EAAM,GACzC,CAAC4nE,GAAiBzV,EAAM,YAAY,CAAEnyD,GAEzDkoE,GACFntD,GAEJ,GAEA,OADAgtD,EAAS,OAAO,CAAC/gE,SAAU,CAAC,UAAW,GAAM,QAAS,EAAI,GACnD+gE,CACT,CACA,SAASI,GAAqB31C,CAAK,CAAEh3B,CAAI,CAAEuf,CAAQ,EACjD,IAAM/a,EAASwyB,EAAM,MAAM,CACrBu1C,EAAW,IAAIC,iBAAiBC,IACpC,IAAIC,EAAU,GACd,IAAK,IAAM/V,KAAS8V,EAElBC,EAAUA,AADVA,CAAAA,EAAUA,GAAWN,GAAiBzV,EAAM,YAAY,CAAEnyD,EAAM,GAC3C,CAAC4nE,GAAiBzV,EAAM,UAAU,CAAEnyD,GAEvDkoE,GACFntD,GAEJ,GAEA,OADAgtD,EAAS,OAAO,CAAC/gE,SAAU,CAAC,UAAW,GAAM,QAAS,EAAI,GACnD+gE,CACT,CACA,IAAMK,GAAqB,IAAIt5E,IAC3Bu5E,GAAsB,EAC1B,SAASC,KACP,IAAMC,EAAM54C,OAAO,gBAAgB,CACnC,GAAI44C,IAAQF,GAGZA,GAAsBE,EACtBH,GAAmB,OAAO,CAAC,CAACI,EAAQh2C,KAC9BA,EAAM,uBAAuB,GAAK+1C,GACpCC,GAEJ,EACF,CAaA,SAASC,GAAqBj2C,CAAK,CAAEh3B,CAAI,CAAEuf,CAAQ,MAZZyX,EAAOg2C,EAa5C,IAAMxoE,EAASwyB,EAAM,MAAM,CACrBpjB,EAAYpP,GAAU,SAAeA,GAC3C,GAAI,CAACoP,EACH,OAEF,IAAMo5D,EAAS,SAAU,CAACnnE,EAAO1R,KAC/B,IAAMiE,EAAIwb,EAAU,WAAW,CAC/B2L,EAAS1Z,EAAO1R,GACZiE,EAAIwb,EAAU,WAAW,EAC3B2L,GAEJ,EAAG4U,QACGo4C,EAAW,IAAIW,eAAeT,IAClC,IAAM9V,EAAQ8V,CAAO,CAAC,EAAE,CAClB5mE,EAAQ8wD,EAAM,WAAW,CAAC,KAAK,CAC/BxiE,EAASwiE,EAAM,WAAW,CAAC,MAAM,CACvC,GAAI9wD,AAAU,IAAVA,GAAe1R,AAAW,IAAXA,EAGnB64E,EAAOnnE,EAAO1R,EAChB,GAGA,OAFAo4E,EAAS,OAAO,CAAC34D,GAlCoBojB,EAmCPA,EAnCcg2C,EAmCPA,EAlChCJ,GAAmB,IAAI,EAC1Bz4C,OAAO,gBAAgB,CAAC,SAAU24C,IAEpCF,GAAmB,GAAG,CAAC51C,EAAOg2C,GAgCvBT,CACT,CACA,SAASY,GAAgBn2C,CAAK,CAAEh3B,CAAI,CAAEusE,CAAQ,EAI5C,GAHIA,GACFA,EAAS,UAAU,GAEjBvsE,AAAS,WAATA,EAAmB,KApCgBg3B,EAAAA,EAqCLA,EApClC41C,GAAmB,MAAM,CAAC51C,GACrB41C,GAAmB,IAAI,EAC1Bz4C,OAAO,mBAAmB,CAAC,SAAU24C,GAmCvC,CACF,CACA,SAASM,GAAqBp2C,CAAK,CAAEh3B,CAAI,CAAEuf,CAAQ,EACjD,IAAM/a,EAASwyB,EAAM,MAAM,CACrB4C,EAAQ,SAAU,AAAC72B,IACL,OAAdi0B,EAAM,GAAG,EACXzX,EAAS8tD,AAhHf,SAAyBtqE,CAAK,CAAEi0B,CAAK,EACnC,IAAMh3B,EAAOgsE,EAAW,CAACjpE,EAAM,IAAI,CAAC,EAAIA,EAAM,IAAI,CAC5C,CAACxQ,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAC,CAAG,QAAoBoN,EAAOi0B,GAC1C,MAAO,CACLh3B,KAAAA,EACAg3B,MAAAA,EACA,OAAQj0B,EACR,EAAGxQ,AAAMgB,KAAAA,IAANhB,EAAkBA,EAAI,KACzB,EAAGoD,AAAMpC,KAAAA,IAANoC,EAAkBA,EAAI,IAC3B,CACF,EAsG+BoN,EAAOi0B,GAEpC,EAAGA,EAAO,AAAC9X,IACT,IAAMnc,EAAQmc,CAAI,CAAC,EAAE,CACrB,MAAO,CAACnc,EAAOA,EAAM,OAAO,CAAEA,EAAM,OAAO,CAAC,AAC9C,GAEA,OADAuqE,AA5HF,SAAqBr6E,CAAI,CAAE+M,CAAI,CAAEuf,CAAQ,EACvCtsB,EAAK,gBAAgB,CAAC+M,EAAMuf,EAAU2sD,GACxC,EA0Hc1nE,EAAQxE,EAAM45B,GACnBA,CACT,CACA,MAAM2zC,WAAoBzB,GACxB,eAAetnE,CAAM,CAAEotC,CAAW,CAAE,CAClC,IAAM7xC,EAAUyE,GAAUA,EAAO,UAAU,EAAIA,EAAO,UAAU,CAAC,aACjE,AAAIzE,GAAWA,EAAQ,MAAM,GAAKyE,IAChCgpE,AAvKN,SAAoBhpE,CAAM,CAAEotC,CAAW,EACrC,IAAM5mC,EAAQxG,EAAO,KAAK,CACpBipE,EAAejpE,EAAO,YAAY,CAAC,UACnCkpE,EAAclpE,EAAO,YAAY,CAAC,SAcxC,GAbAA,CAAM,CAAC41B,GAAY,CAAG,CACpB,QAAS,CACP,OAAQqzC,EACR,MAAOC,EACP,MAAO,CACL,QAAS1iE,EAAM,OAAO,CACtB,OAAQA,EAAM,MAAM,CACpB,MAAOA,EAAM,KAAK,AACpB,CACF,CACF,EACAA,EAAM,OAAO,CAAGA,EAAM,OAAO,EAAI,QACjCA,EAAM,SAAS,CAAGA,EAAM,SAAS,EAAI,aACjCihE,GAAcyB,GAAc,CAC9B,IAAMC,EAAe,SAAanpE,EAAQ,QACrBjR,MAAAA,IAAjBo6E,GACFnpE,CAAAA,EAAO,KAAK,CAAGmpE,CAAW,CAE9B,CACA,GAAI1B,GAAcwB,IAChB,GAAIjpE,AAAwB,KAAxBA,EAAO,KAAK,CAAC,MAAM,CACrBA,EAAO,MAAM,CAAGA,EAAO,KAAK,CAAIotC,CAAAA,GAAe,OAC1C,CACL,IAAMg8B,EAAgB,SAAappE,EAAQ,SACrBjR,MAAAA,IAAlBq6E,GACFppE,CAAAA,EAAO,MAAM,CAAGopE,CAAY,CAEhC,GAGJ,EAqIiBppE,EAAQotC,GACZ7xC,GAEF,IACT,CACA,eAAeA,CAAO,CAAE,CACtB,IAAMyE,EAASzE,EAAQ,MAAM,CAC7B,GAAI,CAACyE,CAAM,CAAC41B,GAAY,CACtB,MAAO,GAET,IAAMyzC,EAAUrpE,CAAM,CAAC41B,GAAY,CAAC,OAAO,CAC3C,CAAC,SAAU,QAAQ,CAAC,OAAO,CAAC,AAACpT,IAC3B,IAAMxyB,EAAQq5E,CAAO,CAAC7mD,EAAK,CACvB,QAAcxyB,GAChBgQ,EAAO,eAAe,CAACwiB,GAEvBxiB,EAAO,YAAY,CAACwiB,EAAMxyB,EAE9B,GACA,IAAMwW,EAAQ6iE,EAAQ,KAAK,EAAI,CAAC,EAMhC,OALAr2E,OAAO,IAAI,CAACwT,GAAO,OAAO,CAAC,AAACV,IAC1B9F,EAAO,KAAK,CAAC8F,EAAI,CAAGU,CAAK,CAACV,EAAI,AAChC,GACA9F,EAAO,KAAK,CAAGA,EAAO,KAAK,CAC3B,OAAOA,CAAM,CAAC41B,GAAY,CACnB,EACT,CACA,iBAAiBpD,CAAK,CAAEh3B,CAAI,CAAEuf,CAAQ,CAAE,CACtC,IAAI,CAAC,mBAAmB,CAACyX,EAAOh3B,GAChC,IAAM8tE,EAAU92C,EAAM,QAAQ,EAAKA,CAAAA,EAAM,QAAQ,CAAG,CAAC,GAM/CzsB,EAAUjE,AALC,CACf,OAAQgmE,GACR,OAAQK,GACR,OAAQM,EACV,CACwB,CAACjtE,EAAK,EAAIotE,EAClCU,CAAAA,CAAO,CAAC9tE,EAAK,CAAGuK,EAAQysB,EAAOh3B,EAAMuf,EACvC,CACA,oBAAoByX,CAAK,CAAEh3B,CAAI,CAAE,CAC/B,IAAM8tE,EAAU92C,EAAM,QAAQ,EAAKA,CAAAA,EAAM,QAAQ,CAAG,CAAC,GAC/C4C,EAAQk0C,CAAO,CAAC9tE,EAAK,CAC3B,IAAI,CAAC45B,EASLrvB,AADgBjE,CAAAA,AALC,EACf,OAAQ6mE,GACR,OAAQA,GACR,OAAQA,EACV,EACwB,CAACntE,EAAK,EAAImsE,EAAa,EACvCn1C,EAAOh3B,EAAM45B,GACrBk0C,CAAO,CAAC9tE,EAAK,CAAGzM,KAAAA,CAClB,CACA,qBAAsB,CACpB,OAAO4gC,OAAO,gBAAgB,AAChC,CACA,eAAe3vB,CAAM,CAAEqB,CAAK,CAAE1R,CAAM,CAAEy9C,CAAW,CAAE,CACjD,MAAO,SAAeptC,EAAQqB,EAAO1R,EAAQy9C,EAC/C,CACA,WAAWptC,CAAM,CAAE,CACjB,IAAMoP,EAAY,SAAepP,GACjC,MAAO,CAAC,CAAEoP,CAAAA,GAAaA,EAAU,WAAW,AAAD,CAC7C,CACF,CASA,MAAMm6D,GACJ,aAAc,CACZ,IAAI,CAAC,KAAK,CAAG,EAAE,AACjB,CACA,OAAO/2C,CAAK,CAAEjgB,CAAI,CAAEmI,CAAI,CAAExO,CAAM,CAAE,CACnB,eAATqG,IACF,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,kBAAkB,CAACigB,EAAO,IAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAEA,EAAO,YAElC,IAAMg3C,EAAct9D,EAAS,IAAI,CAAC,YAAY,CAACsmB,GAAO,MAAM,CAACtmB,GAAU,IAAI,CAAC,YAAY,CAACsmB,GACnF/X,EAAS,IAAI,CAAC,OAAO,CAAC+uD,EAAah3C,EAAOjgB,EAAMmI,GAKtD,MAJa,iBAATnI,IACF,IAAI,CAAC,OAAO,CAACi3D,EAAah3C,EAAO,QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAEA,EAAO,cAE3B/X,CACT,CACA,QAAQ+uD,CAAW,CAAEh3C,CAAK,CAAEjgB,CAAI,CAAEmI,CAAI,CAAE,CAEtC,IAAK,IAAM+B,KADX/B,EAAOA,GAAQ,CAAC,EACS8uD,GAAa,CACpC,IAAMC,EAAShtD,EAAW,MAAM,CAC1BivC,EAAS+d,CAAM,CAACl3D,EAAK,CACrBuyD,EAAS,CAACtyC,EAAO9X,EAAM+B,EAAW,OAAO,CAAC,CAChD,GAAI,AAAqC,KAArC,QAASivC,EAAQoZ,EAAQ2E,IAAqB/uD,EAAK,UAAU,CAC/D,MAAO,EAEX,CACA,MAAO,EACT,CACA,YAAa,CACP,CAAC,QAAc,IAAI,CAAC,MAAM,IAC5B,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,MAAM,CAC5B,IAAI,CAAC,MAAM,CAAG3rB,KAAAA,EAElB,CACA,aAAayjC,CAAK,CAAE,CAClB,GAAI,IAAI,CAAC,MAAM,CACb,OAAO,IAAI,CAAC,MAAM,CAEpB,IAAMg3C,EAAc,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,kBAAkB,CAACh3C,GAE1D,OADA,IAAI,CAAC,mBAAmB,CAACA,GAClBg3C,CACT,CACA,mBAAmBh3C,CAAK,CAAEnD,CAAG,CAAE,CAC7B,IAAMxvB,EAAS2yB,GAASA,EAAM,MAAM,CAC9B9xB,EAAU,QAAeb,EAAO,OAAO,EAAIA,EAAO,OAAO,CAAC,OAAO,CAAE,CAAC,GACpE0jC,EAAUmmC,AAWpB,SAAoB7pE,CAAM,EACxB,IAAM8pE,EAAW,CAAC,EACZpmC,EAAU,EAAE,CACZ39B,EAAO5S,OAAO,IAAI,CAAC6uE,EAAS,OAAO,CAAC,KAAK,EAC/C,IAAK,IAAIzzE,EAAI,EAAGA,EAAIwX,EAAK,MAAM,CAAExX,IAC/Bm1C,EAAQ,IAAI,CAACs+B,EAAS,SAAS,CAACj8D,CAAI,CAACxX,EAAE,GAEzC,IAAMy5B,EAAQhoB,EAAO,OAAO,EAAI,EAAE,CAClC,IAAK,IAAIzR,EAAI,EAAGA,EAAIy5B,EAAM,MAAM,CAAEz5B,IAAK,CACrC,IAAMq7E,EAAS5hD,CAAK,CAACz5B,EAAE,AACS,MAA5Bm1C,EAAQ,OAAO,CAACkmC,KAClBlmC,EAAQ,IAAI,CAACkmC,GACbE,CAAQ,CAACF,EAAO,EAAE,CAAC,CAAG,GAE1B,CACA,MAAO,CAAClmC,QAAAA,EAASomC,SAAAA,CAAQ,CAC3B,EA3B+B9pE,GAC3B,MAAOa,AAAY,KAAZA,GAAsB2uB,EAAWu6C,AAoC5C,SAA2Bp3C,CAAK,CAAE,CAAC+Q,QAAAA,CAAO,CAAEomC,SAAAA,CAAQ,CAAC,CAAEjpE,CAAO,CAAE2uB,CAAG,EACjE,IAAM5U,EAAS,EAAE,CACXlf,EAAUi3B,EAAM,UAAU,GAChC,IAAK,IAAMi3C,KAAUlmC,EAAS,KAZf7iC,EAab,IAAMrO,EAAKo3E,EAAO,EAAE,CACpB,IAAMld,GAdO7rD,EAcQA,CAAO,CAACrO,EAAG,CAblC,AAAI,AAagCg9B,GAbxB3uB,AAAY,KAAZA,EAGRA,AAAY,KAAZA,EACK,CAAC,EAEHA,EALE,MAaP,GAAI6rD,AAAS,OAATA,EAGJ9xC,EAAO,IAAI,CAAC,CACVgvD,OAAAA,EACA,QAASI,AAKf,SAAoBhqE,CAAM,CAAE,CAAC4pE,OAAAA,CAAM,CAAE5hD,MAAAA,CAAK,CAAC,CAAE0kC,CAAI,CAAEhxD,CAAO,EACxD,IAAMqK,EAAO/F,EAAO,eAAe,CAAC4pE,GAC9B5Z,EAAShwD,EAAO,eAAe,CAAC0sD,EAAM3mD,GAI5C,OAHIiiB,GAAS4hD,EAAO,QAAQ,EAC1B5Z,EAAO,IAAI,CAAC4Z,EAAO,QAAQ,EAEtB5pE,EAAO,cAAc,CAACgwD,EAAQt0D,EAAS,CAAC,GAAG,CAAE,CAClD,WAAY,GACZ,UAAW,GACX,QAAS,EACX,EACF,EAhB0Bi3B,EAAM,MAAM,CAAE,CAACi3C,OAAAA,EAAQ,MAAOE,CAAQ,CAACt3E,EAAG,EAAGk6D,EAAMhxD,EACzE,EACF,CACA,OAAOkf,CACT,EAnD8D+X,EAAO+Q,EAAS7iC,EAAS2uB,GAAhD,EAAE,AACvC,CACA,oBAAoBmD,CAAK,CAAE,CACzB,IAAMs3C,EAAsB,IAAI,CAAC,SAAS,EAAI,EAAE,CAC1CN,EAAc,IAAI,CAAC,MAAM,CACzBhO,EAAO,CAAClrE,EAAGC,IAAMD,EAAE,MAAM,CAACvC,GAAK,CAACwC,EAAE,IAAI,CAACY,GAAKpD,EAAE,MAAM,CAAC,EAAE,GAAKoD,EAAE,MAAM,CAAC,EAAE,GAC7E,IAAI,CAAC,OAAO,CAACqqE,EAAKsO,EAAqBN,GAAch3C,EAAO,QAC5D,IAAI,CAAC,OAAO,CAACgpC,EAAKgO,EAAaM,GAAsBt3C,EAAO,QAC9D,CACF,CAwDA,SAASu3C,GAAavuE,CAAI,CAAEkF,CAAO,EACjC,IAAMspE,EAAkB,YAAiB,CAACxuE,EAAK,EAAI,CAAC,EAEpD,MAAOyuE,AADgB,CAACvpE,CAAAA,EAAQ,QAAQ,EAAI,CAAC,EAAE,CAAClF,EAAK,EAAI,CAAC,GACpC,SAAS,EAAIkF,EAAQ,SAAS,EAAIspE,EAAgB,SAAS,EAAI,GACvF,CAqBA,SAASE,GAAc73E,CAAE,CAAE83E,CAAY,MARb9+D,EASxB,GAAIhZ,AAAO,MAAPA,GAAcA,AAAO,MAAPA,EAChB,OAAOA,EAET,OAAO83E,EAAa,IAAI,EAXxB,CAAI9+D,AAAa,SADOA,EAYqB8+D,EAAa,QAAQ,GAXxC9+D,AAAa,WAAbA,EACjB,IAELA,AAAa,SAAbA,GAAuBA,AAAa,UAAbA,EAClB,UAFT,GASuEhZ,EAAG,MAAM,CAAC,GAAG,WAAW,EACjG,CAuCA,SAAS+3E,GAAYvqE,CAAM,EACzB,IAAMa,EAAUb,EAAO,OAAO,EAAKA,CAAAA,EAAO,OAAO,CAAG,CAAC,EACrDa,CAAAA,EAAQ,OAAO,CAAG,QAAeA,EAAQ,OAAO,CAAE,CAAC,GACnDA,EAAQ,MAAM,CAAG2pE,AAzCnB,SAA0BxqE,CAAM,CAAEa,CAAO,EACvC,IAAM4pE,EAAgB,GAAS,CAACzqE,EAAO,IAAI,CAAC,EAAI,CAAC,OAAQ,CAAC,CAAC,EACrD0qE,EAAe7pE,EAAQ,MAAM,EAAI,CAAC,EAClC8pE,EAAiBT,GAAalqE,EAAO,IAAI,CAAEa,GAC3C+pE,EAAWz3E,OAAO,MAAM,CAAC,MACzBq7D,EAASr7D,OAAO,MAAM,CAAC,MA+B7B,OA9BAA,OAAO,IAAI,CAACu3E,GAAc,OAAO,CAACl4E,IAChC,IAAMq4E,EAAYH,CAAY,CAACl4E,EAAG,CAClC,GAAI,CAAC,QAASq4E,GACZ,OAAOzvD,QAAQ,KAAK,CAAC,CAAC,uCAAuC,EAAE5oB,EAAG,CAAC,EAErE,GAAIq4E,EAAU,MAAM,CAClB,OAAOzvD,QAAQ,IAAI,CAAC,CAAC,+CAA+C,EAAE5oB,EAAG,CAAC,EAE5E,IAAMyhC,EAAOo2C,GAAc73E,EAAIq4E,GACzBv4E,EA/BD2hC,AA+BuCA,IAAM02C,EA/BxB,UAAY,UAgChCG,EAAsBL,EAAc,MAAM,EAAI,CAAC,CACrDG,CAAAA,CAAQ,CAAC32C,EAAK,CAAG22C,CAAQ,CAAC32C,EAAK,EAAIzhC,EACnCg8D,CAAM,CAACh8D,EAAG,CAAG,SAAQW,OAAO,MAAM,CAAC,MAAO,CAAC,CAAC8gC,KAAAA,CAAI,EAAG42C,EAAWC,CAAmB,CAAC72C,EAAK,CAAE62C,CAAmB,CAACx4E,EAAU,CAAC,CAC1H,GACA0N,EAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACu2B,IAC3B,IAAM56B,EAAO46B,EAAQ,IAAI,EAAIv2B,EAAO,IAAI,CAClCqvD,EAAY94B,EAAQ,SAAS,EAAI2zC,GAAavuE,EAAMkF,GAEpDiqE,EAAsBX,AADJ,IAAS,CAACxuE,EAAK,EAAI,CAAC,GACA,MAAM,EAAI,CAAC,EACvDxI,OAAO,IAAI,CAAC23E,GAAqB,OAAO,CAACC,QAnDVv4E,EAAI68D,MACjCp7B,EAmDA,IAAMA,GApDuBzhC,EAoDUu4E,EApDN1b,EAoDiBA,EAnDlDp7B,EAAOzhC,EACPA,AAAO,YAAPA,EACFyhC,EAAOo7B,EACS,YAAP78D,GACTyhC,CAAAA,EAAOo7B,AAAc,MAAdA,EAAoB,IAAM,GAAE,EAE9Bp7B,GA8CGzhC,EAAK+jC,CAAO,CAACtC,EAAO,SAAS,EAAI22C,CAAQ,CAAC32C,EAAK,EAAIA,CACzDu6B,CAAAA,CAAM,CAACh8D,EAAG,CAAGg8D,CAAM,CAACh8D,EAAG,EAAIW,OAAO,MAAM,CAAC,MACzC,SAAQq7D,CAAM,CAACh8D,EAAG,CAAE,CAAC,CAACyhC,KAAAA,CAAI,EAAGy2C,CAAY,CAACl4E,EAAG,CAAEs4E,CAAmB,CAACC,EAAU,CAAC,CAChF,EACF,GACA53E,OAAO,IAAI,CAACq7D,GAAQ,OAAO,CAACvoD,IAC1B,IAAMpG,EAAQ2uD,CAAM,CAACvoD,EAAI,CACzB,SAAQpG,EAAO,CAAC,UAAe,CAACA,EAAM,IAAI,CAAC,CAAE,SAAc,CAAC,CAC9D,GACO2uD,CACT,EAIoCxuD,EAAQa,EAC5C,CACA,SAASmqE,GAASh8E,CAAI,EAIpB,MAFAA,AADAA,CAAAA,EAAOA,GAAQ,CAAC,GACX,QAAQ,CAAGA,EAAK,QAAQ,EAAI,EAAE,CACnCA,EAAK,MAAM,CAAGA,EAAK,MAAM,EAAI,EAAE,CACxBA,CACT,CAOA,IAAMi8E,GAAW,IAAIh8E,IACfi8E,GAAa,IAAIC,IACvB,SAASC,GAAW/Z,CAAQ,CAAEga,CAAQ,EACpC,IAAItlE,EAAOklE,GAAS,GAAG,CAAC5Z,GAMxB,MALI,CAACtrD,IACHA,EAAOslE,IACPJ,GAAS,GAAG,CAAC5Z,EAAUtrD,GACvBmlE,GAAW,GAAG,CAACnlE,IAEVA,CACT,CACA,IAAMulE,GAAa,CAAC12B,EAAKzwB,EAAKle,KAC5B,IAAMymD,EAAO,QAAiBvoC,EAAKle,EACtB/W,MAAAA,IAATw9D,GACF9X,EAAI,GAAG,CAAC8X,EAEZ,CACA,OAAM6e,GACJ,YAAYvrE,CAAM,CAAE,KAxBFA,CAyBhB,KAAI,CAAC,OAAO,EAvBdA,AADAA,CAAAA,EAASA,CADSA,EAyBUA,IAxBT,CAAC,GACb,IAAI,CAAGgrE,GAAShrE,EAAO,IAAI,EAClCuqE,GAAYvqE,GACLA,GAsBL,IAAI,CAAC,WAAW,CAAG,IAAI/Q,IACvB,IAAI,CAAC,cAAc,CAAG,IAAIA,GAC5B,CACA,IAAI,UAAW,CACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,AAC9B,CACA,IAAI,MAAO,CACT,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,AAC1B,CACA,IAAI,KAAK0M,CAAI,CAAE,CACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAGA,CACtB,CACA,IAAI,MAAO,CACT,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,AAC1B,CACA,IAAI,KAAK3M,CAAI,CAAE,CACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAGg8E,GAASh8E,EAC/B,CACA,IAAI,SAAU,CACZ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,AAC7B,CACA,IAAI,QAAQ6R,CAAO,CAAE,CACnB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAGA,CACzB,CACA,IAAI,SAAU,CACZ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,AAC7B,CACA,QAAS,CACP,IAAMb,EAAS,IAAI,CAAC,OAAO,CAC3B,IAAI,CAAC,UAAU,GACfuqE,GAAYvqE,EACd,CACA,YAAa,CACX,IAAI,CAAC,WAAW,CAAC,KAAK,GACtB,IAAI,CAAC,cAAc,CAAC,KAAK,EAC3B,CACA,iBAAiBwrE,CAAW,CAAE,CAC5B,OAAOJ,GAAWI,EAChB,IAAM,CAAC,CACL,CAAC,SAAS,EAAEA,EAAY,CAAC,CACzB,GACD,CAAC,CACN,CACA,0BAA0BA,CAAW,CAAE/Z,CAAU,CAAE,CACjD,OAAO2Z,GAAW,CAAC,EAAEI,EAAY,YAAY,EAAE/Z,EAAW,CAAC,CACzD,IAAM,CACJ,CACE,CAAC,SAAS,EAAE+Z,EAAY,aAAa,EAAE/Z,EAAW,CAAC,CACnD,CAAC,YAAY,EAAEA,EAAW,CAAC,CAC5B,CACD,CACE,CAAC,SAAS,EAAE+Z,EAAY,CAAC,CACzB,GACD,CACF,CACL,CACA,wBAAwBA,CAAW,CAAE1oD,CAAW,CAAE,CAChD,OAAOsoD,GAAW,CAAC,EAAEI,EAAY,CAAC,EAAE1oD,EAAY,CAAC,CAC/C,IAAM,CAAC,CACL,CAAC,SAAS,EAAE0oD,EAAY,UAAU,EAAE1oD,EAAY,CAAC,CACjD,CAAC,SAAS,EAAE0oD,EAAY,CAAC,CACzB,CAAC,SAAS,EAAE1oD,EAAY,CAAC,CACzB,GACD,CAAC,CACN,CACA,gBAAgB8mD,CAAM,CAAE,CACtB,IAAMp3E,EAAKo3E,EAAO,EAAE,CACdjuE,EAAO,IAAI,CAAC,IAAI,CACtB,OAAOyvE,GAAW,CAAC,EAAEzvE,EAAK,QAAQ,EAAEnJ,EAAG,CAAC,CACtC,IAAM,CAAC,CACL,CAAC,QAAQ,EAAEA,EAAG,CAAC,IACZo3E,EAAO,sBAAsB,EAAI,EAAE,CACvC,CAAC,CACN,CACA,cAAc6B,CAAS,CAAEC,CAAU,CAAE,CACnC,IAAMC,EAAc,IAAI,CAAC,WAAW,CAChChrD,EAAQgrD,EAAY,GAAG,CAACF,GAK5B,MAJI,EAAC9qD,GAAS+qD,CAAS,IACrB/qD,EAAQ,IAAI1xB,IACZ08E,EAAY,GAAG,CAACF,EAAW9qD,IAEtBA,CACT,CACA,gBAAgB8qD,CAAS,CAAEG,CAAQ,CAAEF,CAAU,CAAE,CAC/C,GAAM,CAAC7qE,QAAAA,CAAO,CAAElF,KAAAA,CAAI,CAAC,CAAG,IAAI,CACtBglB,EAAQ,IAAI,CAAC,aAAa,CAAC8qD,EAAWC,GACtC7c,EAASluC,EAAM,GAAG,CAACirD,GACzB,GAAI/c,EACF,OAAOA,EAET,IAAMmB,EAAS,IAAImb,IACnBS,EAAS,OAAO,CAAC7lE,IACX0lE,IACFzb,EAAO,GAAG,CAACyb,GACX1lE,EAAK,OAAO,CAACE,GAAOqlE,GAAWtb,EAAQyb,EAAWxlE,KAEpDF,EAAK,OAAO,CAACE,GAAOqlE,GAAWtb,EAAQnvD,EAASoF,IAChDF,EAAK,OAAO,CAACE,GAAOqlE,GAAWtb,EAAQ,GAAS,CAACr0D,EAAK,EAAI,CAAC,EAAGsK,IAC9DF,EAAK,OAAO,CAACE,GAAOqlE,GAAWtb,EAAQ,GAAQ,CAAE/pD,IACjDF,EAAK,OAAO,CAACE,GAAOqlE,GAAWtb,EAAQ,IAAW,CAAE/pD,GACtD,GACA,IAAM5X,EAAQF,MAAM,IAAI,CAAC6hE,GAOzB,OANqB,IAAjB3hE,EAAM,MAAM,EACdA,EAAM,IAAI,CAAC8E,OAAO,MAAM,CAAC,OAEvB+3E,GAAW,GAAG,CAACU,IACjBjrD,EAAM,GAAG,CAACirD,EAAUv9E,GAEfA,CACT,CACA,mBAAoB,CAClB,GAAM,CAACwS,QAAAA,CAAO,CAAElF,KAAAA,CAAI,CAAC,CAAG,IAAI,CAC5B,MAAO,CACLkF,EACA,GAAS,CAAClF,EAAK,EAAI,CAAC,EACpB,YAAiB,CAACA,EAAK,EAAI,CAAC,EAC5B,CAACA,KAAAA,CAAI,EACL,GAAQ,CACR,IAAW,CACZ,AACH,CACA,oBAAoBq0D,CAAM,CAAEwB,CAAK,CAAE91D,CAAO,CAAE61D,EAAW,CAAC,GAAG,CAAE,CAC3D,IAAM32C,EAAS,CAAC,QAAS,EAAI,EACvB,CAACixD,SAAAA,CAAQ,CAAEC,YAAAA,CAAW,CAAC,CAAGC,GAAY,IAAI,CAAC,cAAc,CAAE/b,EAAQuB,GACrE1wD,EAAUgrE,EACd,GAAIG,AAsCR,SAAqBz2C,CAAK,CAAEi8B,CAAK,EAC/B,GAAM,CAACya,aAAAA,CAAY,CAAEC,YAAAA,CAAW,CAAC,CAAG,SAAa32C,GACjD,IAAK,IAAM5S,KAAQ6uC,EAAO,CACxB,IAAM2a,EAAaF,EAAatpD,GAC1BypD,EAAYF,EAAYvpD,GACxBxyB,EAAQ,AAACi8E,CAAAA,GAAaD,CAAS,GAAM52C,CAAK,CAAC5S,EAAK,CACtD,GAAI,AAACwpD,GAAe,UAAWh8E,IAAUk8E,GAAYl8E,EAAK,GACpDi8E,GAAa,QAAQj8E,GACzB,MAAO,EAEX,CACA,MAAO,EACT,EAlDoB07E,EAAUra,GAAQ,CAChC52C,EAAO,OAAO,CAAG,GACjBlf,EAAU,SAAWA,GAAWA,IAAYA,EAC5C,IAAM4wE,EAAc,IAAI,CAAC,cAAc,CAACtc,EAAQt0D,EAASowE,GACzDjrE,EAAU,SAAegrE,EAAUnwE,EAAS4wE,EAC9C,CACA,IAAK,IAAM3pD,KAAQ6uC,EACjB52C,CAAM,CAAC+H,EAAK,CAAG9hB,CAAO,CAAC8hB,EAAK,CAE9B,OAAO/H,CACT,CACA,eAAeo1C,CAAM,CAAEt0D,CAAO,CAAE61D,EAAW,CAAC,GAAG,CAAEgb,CAAkB,CAAE,CACnE,GAAM,CAACV,SAAAA,CAAQ,CAAC,CAAGE,GAAY,IAAI,CAAC,cAAc,CAAE/b,EAAQuB,GAC5D,MAAO,QAAS71D,GACZ,SAAemwE,EAAUnwE,EAASxM,KAAAA,EAAWq9E,GAC7CV,CACN,CACF,CACA,SAASE,GAAYS,CAAa,CAAExc,CAAM,CAAEuB,CAAQ,EAClD,IAAI5wC,EAAQ6rD,EAAc,GAAG,CAACxc,EAC1B,EAACrvC,IACHA,EAAQ,IAAI1xB,IACZu9E,EAAc,GAAG,CAACxc,EAAQrvC,IAE5B,IAAM0wC,EAAWE,EAAS,IAAI,GAC1B1C,EAASluC,EAAM,GAAG,CAAC0wC,GASvB,MARI,CAACxC,IAEHA,EAAS,CACPgd,SAFe,SAAgB7b,EAAQuB,GAGvC,YAAaA,EAAS,MAAM,CAACj7D,GAAK,CAACA,EAAE,WAAW,GAAG,QAAQ,CAAC,SAC9D,EACAqqB,EAAM,GAAG,CAAC0wC,EAAUxC,IAEfA,CACT,CACA,IAAMwd,GAAcl8E,GAAS,QAASA,IACjCgD,OAAO,mBAAmB,CAAChD,GAAO,MAAM,CAAC,CAAC0yD,EAAK58C,IAAQ48C,GAAO,SAAW1yD,CAAK,CAAC8V,EAAI,EAAG,IAiBrFwmE,GAAkB,CAAC,MAAO,SAAU,OAAQ,QAAS,YAAY,CACvE,SAASC,GAAqBlhE,CAAQ,CAAEyoB,CAAI,EAC1C,MAAOzoB,AAAa,QAAbA,GAAsBA,AAAa,WAAbA,GAA0BihE,AAAsC,KAAtCA,GAAgB,OAAO,CAACjhE,IAAoByoB,AAAS,MAATA,CACrG,CACA,SAAS04C,GAAcC,CAAE,CAAEC,CAAE,EAC3B,OAAO,SAASp8E,CAAC,CAAEC,CAAC,EAClB,OAAOD,CAAC,CAACm8E,EAAG,GAAKl8E,CAAC,CAACk8E,EAAG,CAClBn8E,CAAC,CAACo8E,EAAG,CAAGn8E,CAAC,CAACm8E,EAAG,CACbp8E,CAAC,CAACm8E,EAAG,CAAGl8E,CAAC,CAACk8E,EAAG,AACnB,CACF,CACA,SAASE,GAAqBpxE,CAAO,EACnC,IAAMi3B,EAAQj3B,EAAQ,KAAK,CACrBowD,EAAmBn5B,EAAM,OAAO,CAAC,SAAS,CAChDA,EAAM,aAAa,CAAC,eACpB,QAASm5B,GAAoBA,EAAiB,UAAU,CAAE,CAACpwD,EAAQ,CAAEi3B,EACvE,CACA,SAASo6C,GAAoBrxE,CAAO,EAClC,IAAMi3B,EAAQj3B,EAAQ,KAAK,CACrBowD,EAAmBn5B,EAAM,OAAO,CAAC,SAAS,CAChD,QAASm5B,GAAoBA,EAAiB,UAAU,CAAE,CAACpwD,EAAQ,CAAEi3B,EACvE,CACA,SAASq6C,GAAUpiB,CAAI,EASrB,MARI,YAAqB,AAAgB,UAAhB,OAAOA,EAC9BA,EAAOzjD,SAAS,cAAc,CAACyjD,GACtBA,GAAQA,EAAK,MAAM,EAC5BA,CAAAA,EAAOA,CAAI,CAAC,EAAE,AAAD,EAEXA,GAAQA,EAAK,MAAM,EACrBA,CAAAA,EAAOA,EAAK,MAAM,AAAD,EAEZA,CACT,CACA,IAAMqiB,GAAY,CAAC,EACbC,GAAW,AAACjnE,IAChB,IAAM9F,EAAS6sE,GAAU/mE,GACzB,OAAO9S,OAAO,MAAM,CAAC85E,IAAW,MAAM,CAAC,AAACp8E,GAAMA,EAAE,MAAM,GAAKsP,GAAQ,GAAG,EACxE,CAuBA,OAAMqjC,GACJ,YAAYonB,CAAI,CAAEuiB,CAAU,CAAE,KAjdPhtE,EAkdrB,IAAMH,EAAS,IAAI,CAAC,MAAM,CAAG,IAAIurE,GAAO4B,GAClCC,EAAgBJ,GAAUpiB,GAC1ByiB,EAAgBH,GAASE,GAC/B,GAAIC,EACF,MAAM,AAAIp/E,MACR,4CAA+Co/E,EAAc,EAAE,CAA/D,kDACgDA,EAAc,MAAM,CAAC,EAAE,CAAG,oBAG9E,IAAMxsE,EAAUb,EAAO,cAAc,CAACA,EAAO,iBAAiB,GAAI,IAAI,CAAC,UAAU,GACjF,KAAI,CAAC,QAAQ,CAAG,GAAKA,CAAAA,EAAO,QAAQ,GA5dfG,EA4dmCitE,EA3d1D,AAAI,CAAC,YAAsB,AAA2B,aAA3B,OAAO7kC,iBAAmCpoC,aAAkBooC,gBAC9Em/B,GAEFwB,GAwdgE,EACrE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAClpE,GAC3B,IAAMtE,EAAU,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC0xE,EAAevsE,EAAQ,WAAW,EACzEV,EAASzE,GAAWA,EAAQ,MAAM,CAClC5L,EAASqQ,GAAUA,EAAO,MAAM,CAChCqB,EAAQrB,GAAUA,EAAO,KAAK,CA6BpC,GA5BA,IAAI,CAAC,EAAE,CAAG,WACV,IAAI,CAAC,GAAG,CAAGzE,EACX,IAAI,CAAC,MAAM,CAAGyE,EACd,IAAI,CAAC,KAAK,CAAGqB,EACb,IAAI,CAAC,MAAM,CAAG1R,EACd,IAAI,CAAC,QAAQ,CAAG+Q,EAChB,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,WAAW,CACpC,IAAI,CAAC,OAAO,CAAG,EAAE,CACjB,IAAI,CAAC,SAAS,CAAG,EAAE,CACnB,IAAI,CAAC,OAAO,CAAG3R,KAAAA,EACf,IAAI,CAAC,KAAK,CAAG,EAAE,CACf,IAAI,CAAC,uBAAuB,CAAGA,KAAAA,EAC/B,IAAI,CAAC,SAAS,CAAGA,KAAAA,EACjB,IAAI,CAAC,OAAO,CAAG,EAAE,CACjB,IAAI,CAAC,UAAU,CAAGA,KAAAA,EAClB,IAAI,CAAC,UAAU,CAAG,CAAC,EACnB,IAAI,CAAC,oBAAoB,CAAGA,KAAAA,EAC5B,IAAI,CAAC,eAAe,CAAG,EAAE,CACzB,IAAI,CAAC,MAAM,CAAG,CAAC,EACf,IAAI,CAAC,QAAQ,CAAG,IAAIw6E,GACpB,IAAI,CAAC,QAAQ,CAAG,CAAC,EACjB,IAAI,CAAC,cAAc,CAAG,CAAC,EACvB,IAAI,CAAC,QAAQ,CAAG,GAChB,IAAI,CAAC,mBAAmB,CAAGx6E,KAAAA,EAC3B,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,SAAS,CAAG,SAASy/D,GAAQ,IAAI,CAAC,MAAM,CAACA,GAAO9tD,EAAQ,WAAW,EAAI,GAC5E,IAAI,CAAC,YAAY,CAAG,EAAE,CACtBosE,EAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAG,IAAI,CACrB,CAACvxE,GAAW,CAACyE,EAAQ,CACvBib,QAAQ,KAAK,CAAC,qEACd,MACF,CACAivC,EAAS,MAAM,CAAC,IAAI,CAAE,WAAYyiB,IAClCziB,EAAS,MAAM,CAAC,IAAI,CAAE,WAAY0iB,IAClC,IAAI,CAAC,WAAW,GACZ,IAAI,CAAC,QAAQ,EACf,IAAI,CAAC,MAAM,EAEf,CACA,IAAI,aAAc,CAChB,GAAM,CAAC,QAAS,CAACx/B,YAAAA,CAAW,CAAE+/B,oBAAAA,CAAmB,CAAC,CAAE9rE,MAAAA,CAAK,CAAE1R,OAAAA,CAAM,CAAEy9E,aAAAA,CAAY,CAAC,CAAG,IAAI,OACvF,AAAK,QAAchgC,GAGf+/B,GAAuBC,EAClBA,EAEFz9E,EAAS0R,EAAQ1R,EAAS,KALxBy9C,CAMX,CACA,IAAI,MAAO,CACT,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,AACzB,CACA,IAAI,KAAKv+C,CAAI,CAAE,CACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAGA,CACrB,CACA,IAAI,SAAU,CACZ,OAAO,IAAI,CAAC,QAAQ,AACtB,CACA,IAAI,QAAQ6R,CAAO,CAAE,CACnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAGA,CACxB,CACA,aAAc,CASZ,OARA,IAAI,CAAC,aAAa,CAAC,cACf,IAAI,CAAC,OAAO,CAAC,UAAU,CACzB,IAAI,CAAC,MAAM,GAEX,SAAY,IAAI,CAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAEjD,IAAI,CAAC,UAAU,GACf,IAAI,CAAC,aAAa,CAAC,aACZ,IAAI,AACb,CACA,OAAQ,CAEN,MADA,SAAY,IAAI,CAAC,MAAM,CAAE,IAAI,CAAC,GAAG,EAC1B,IAAI,AACb,CACA,MAAO,CAEL,OADAwpD,EAAS,IAAI,CAAC,IAAI,EACX,IAAI,AACb,CACA,OAAO7oD,CAAK,CAAE1R,CAAM,CAAE,CACfu6D,EAAS,OAAO,CAAC,IAAI,EAGxB,IAAI,CAAC,iBAAiB,CAAG,CAAC7oD,MAAAA,EAAO1R,OAAAA,CAAM,EAFvC,IAAI,CAAC,OAAO,CAAC0R,EAAO1R,EAIxB,CACA,QAAQ0R,CAAK,CAAE1R,CAAM,CAAE,CACrB,IAAM+Q,EAAU,IAAI,CAAC,OAAO,CACtBV,EAAS,IAAI,CAAC,MAAM,CACpBotC,EAAc1sC,EAAQ,mBAAmB,EAAI,IAAI,CAAC,WAAW,CAC7D2sE,EAAU,IAAI,CAAC,QAAQ,CAAC,cAAc,CAACrtE,EAAQqB,EAAO1R,EAAQy9C,GAC9DzyC,EAAW+F,EAAQ,gBAAgB,EAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GACxE8tD,EAAO,IAAI,CAAC,KAAK,CAAG,SAAW,SAIrC,GAHA,IAAI,CAAC,KAAK,CAAG6e,EAAQ,KAAK,CAC1B,IAAI,CAAC,MAAM,CAAGA,EAAQ,MAAM,CAC5B,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,WAAW,EAChC,CAAC,SAAY,IAAI,CAAE1yE,EAAU,IAGjC,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,KAAM0yE,CAAO,GAC3C,QAAS3sE,EAAQ,QAAQ,CAAE,CAAC,IAAI,CAAE2sE,EAAQ,CAAE,IAAI,EAC5C,IAAI,CAAC,QAAQ,EACX,IAAI,CAAC,SAAS,CAAC7e,IACjB,IAAI,CAAC,MAAM,EAGjB,CACA,qBAAsB,CAEpB,IAAM8e,EAAgB5sE,AADN,IAAI,CAAC,OAAO,CACE,MAAM,EAAI,CAAC,EACzC,QAAK4sE,EAAe,CAACC,EAAazM,KAChCyM,EAAY,EAAE,CAAGzM,CACnB,EACF,CACA,qBAAsB,CACpB,IAAMpgE,EAAU,IAAI,CAAC,OAAO,CACtB8sE,EAAY9sE,EAAQ,MAAM,CAC1B2tD,EAAS,IAAI,CAAC,MAAM,CACpBlgD,EAAUnb,OAAO,IAAI,CAACq7D,GAAQ,MAAM,CAAC,CAACrqC,EAAK3xB,KAC/C2xB,CAAG,CAAC3xB,EAAG,CAAG,GACH2xB,GACN,CAAC,GACAiM,EAAQ,EAAE,CACVu9C,GACFv9C,CAAAA,EAAQA,EAAM,MAAM,CAClBj9B,OAAO,IAAI,CAACw6E,GAAW,GAAG,CAAC,AAACn7E,IAC1B,IAAM83E,EAAeqD,CAAS,CAACn7E,EAAG,CAC5ByhC,EAAOo2C,GAAc73E,EAAI83E,GACzBsD,EAAW35C,AAAS,MAATA,EACXyoC,EAAezoC,AAAS,MAATA,EACrB,MAAO,CACL,QAASq2C,EACT,UAAWsD,EAAW,YAAclR,EAAe,SAAW,OAC9D,MAAOkR,EAAW,eAAiBlR,EAAe,WAAa,QACjE,CACF,GACF,EAEF,QAAKtsC,EAAO,AAACw6B,IACX,IAAM0f,EAAe1f,EAAK,OAAO,CAC3Bp4D,EAAK83E,EAAa,EAAE,CACpBr2C,EAAOo2C,GAAc73E,EAAI83E,GACzBuD,EAAY,QAAevD,EAAa,IAAI,CAAE1f,EAAK,KAAK,EAC1D0f,CAAAA,AAA0Bp7E,KAAAA,IAA1Bo7E,EAAa,QAAQ,EAAkBoC,GAAqBpC,EAAa,QAAQ,CAAEr2C,KAAUy4C,GAAqB9hB,EAAK,SAAS,IAClI0f,CAAAA,EAAa,QAAQ,CAAG1f,EAAK,SAAS,AAAD,EAEvCt8C,CAAO,CAAC9b,EAAG,CAAG,GACd,IAAIqN,EAAQ,IACRrN,CAAAA,KAAMg8D,GAAUA,CAAM,CAACh8D,EAAG,CAAC,IAAI,GAAKq7E,EACtChuE,EAAQ2uD,CAAM,CAACh8D,EAAG,CASlBg8D,CAAM,CAAC3uD,AANPA,CAAAA,EAAQ,GADWmiE,CAAAA,EAAS,QAAQ,CAAC6L,EAAS,EACvB,CACrBr7E,GAAAA,EACA,KAAMq7E,EACN,IAAK,IAAI,CAAC,GAAG,CACb,MAAO,IAAI,AACb,EAAC,EACY,EAAE,CAAC,CAAGhuE,EAErBA,EAAM,IAAI,CAACyqE,EAAczpE,EAC3B,GACA,QAAKyN,EAAS,CAACw/D,EAAYt7E,KACrB,CAACs7E,GACH,OAAOtf,CAAM,CAACh8D,EAAG,AAErB,GACA,QAAKg8D,EAAQ,AAAC3uD,IACZsmE,GAAQ,SAAS,CAAC,IAAI,CAAEtmE,EAAOA,EAAM,OAAO,EAC5CsmE,GAAQ,MAAM,CAAC,IAAI,CAAEtmE,EACvB,EACF,CACA,iBAAkB,CAChB,IAAMitD,EAAW,IAAI,CAAC,SAAS,CACzBmF,EAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CACnCD,EAAUlF,EAAS,MAAM,CAE/B,GADAA,EAAS,IAAI,CAAC,CAACr8D,EAAGC,IAAMD,EAAE,KAAK,CAAGC,EAAE,KAAK,EACrCshE,EAAUC,EAAS,CACrB,IAAK,IAAI1jE,EAAI0jE,EAAS1jE,EAAIyjE,EAAS,EAAEzjE,EACnC,IAAI,CAAC,mBAAmB,CAACA,GAE3Bu+D,EAAS,MAAM,CAACmF,EAASD,EAAUC,EACrC,CACA,IAAI,CAAC,eAAe,CAAGnF,EAAS,KAAK,CAAC,GAAG,IAAI,CAAC6f,GAAc,QAAS,SACvE,CACA,6BAA8B,CAC5B,GAAM,CAAC,UAAW7f,CAAQ,CAAE,KAAM,CAAC93B,SAAAA,CAAQ,CAAC,CAAC,CAAG,IAAI,AAChD83B,CAAAA,EAAS,MAAM,CAAG93B,EAAS,MAAM,EACnC,OAAO,IAAI,CAAC,OAAO,CAErB83B,EAAS,OAAO,CAAC,CAACM,EAAMn9D,KACmC,IAArD+kC,EAAS,MAAM,CAAC9mC,GAAKA,IAAMk/D,EAAK,QAAQ,EAAE,MAAM,EAClD,IAAI,CAAC,mBAAmB,CAACn9D,EAE7B,EACF,CACA,0BAA2B,KAGrB1B,EAAG8hC,EAFP,IAAM09C,EAAiB,EAAE,CACnB/4C,EAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAGnC,IAAKzmC,AADL,IAAI,CAAC,2BAA2B,GAC3BA,EAAI,EAAG8hC,EAAO2E,EAAS,MAAM,CAAEzmC,EAAI8hC,EAAM9hC,IAAK,CACjD,IAAMgoC,EAAUvB,CAAQ,CAACzmC,EAAE,CACvB6+D,EAAO,IAAI,CAAC,cAAc,CAAC7+D,GACzBoN,EAAO46B,EAAQ,IAAI,EAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAW7C,GAVI62B,EAAK,IAAI,EAAIA,EAAK,IAAI,GAAKzxD,IAC7B,IAAI,CAAC,mBAAmB,CAACpN,GACzB6+D,EAAO,IAAI,CAAC,cAAc,CAAC7+D,IAE7B6+D,EAAK,IAAI,CAAGzxD,EACZyxD,EAAK,SAAS,CAAG72B,EAAQ,SAAS,EAAI2zC,GAAavuE,EAAM,IAAI,CAAC,OAAO,EACrEyxD,EAAK,KAAK,CAAG72B,EAAQ,KAAK,EAAI,EAC9B62B,EAAK,KAAK,CAAG7+D,EACb6+D,EAAK,KAAK,CAAG,GAAK72B,EAAQ,KAAK,CAC/B62B,EAAK,OAAO,CAAG,IAAI,CAAC,gBAAgB,CAAC7+D,GACjC6+D,EAAK,UAAU,CACjBA,EAAK,UAAU,CAAC,WAAW,CAAC7+D,GAC5B6+D,EAAK,UAAU,CAAC,UAAU,OACrB,CACL,IAAM4gB,EAAkBhM,EAAS,aAAa,CAACrmE,GACzC,CAACsyE,mBAAAA,CAAkB,CAAEC,gBAAAA,CAAe,CAAC,CAAG,YAAiB,CAACvyE,EAAK,CACrExI,OAAO,MAAM,CAAC66E,EAAgB,SAAS,CAAE,CACvC,gBAAiBhM,EAAS,UAAU,CAACkM,GACrC,mBAAoBD,GAAsBjM,EAAS,UAAU,CAACiM,EAChE,GACA7gB,EAAK,UAAU,CAAG,IAAI4gB,EAAgB,IAAI,CAAEz/E,GAC5Cw/E,EAAe,IAAI,CAAC3gB,EAAK,UAAU,CACrC,CACF,CAEA,OADA,IAAI,CAAC,eAAe,GACb2gB,CACT,CACA,gBAAiB,CACf,QAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAE,CAACx3C,EAASG,KACjC,IAAI,CAAC,cAAc,CAACA,GAAc,UAAU,CAAC,KAAK,EACpD,EAAG,IAAI,CACT,CACA,OAAQ,CACN,IAAI,CAAC,cAAc,GACnB,IAAI,CAAC,aAAa,CAAC,QACrB,CACA,OAAOi4B,CAAI,CAAE,CACX,IAAM3uD,EAAS,IAAI,CAAC,MAAM,CAC1BA,EAAO,MAAM,GACb,IAAMa,EAAU,IAAI,CAAC,QAAQ,CAAGb,EAAO,cAAc,CAACA,EAAO,iBAAiB,GAAI,IAAI,CAAC,UAAU,IAC3FmuE,EAAgB,IAAI,CAAC,mBAAmB,CAAG,CAACttE,EAAQ,SAAS,CAKnE,GAJA,IAAI,CAAC,aAAa,GAClB,IAAI,CAAC,mBAAmB,GACxB,IAAI,CAAC,oBAAoB,GACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,GACpB,AAAiE,KAAjE,IAAI,CAAC,aAAa,CAAC,eAAgB,CAAC8tD,KAAAA,EAAM,WAAY,EAAI,GAC5D,OAEF,IAAMof,EAAiB,IAAI,CAAC,wBAAwB,GACpD,IAAI,CAAC,aAAa,CAAC,wBACnB,IAAI1H,EAAa,EACjB,IAAK,IAAI93E,EAAI,EAAG8hC,EAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE9hC,EAAI8hC,EAAM9hC,IAAK,CAC/D,GAAM,CAACm/D,WAAAA,CAAU,CAAC,CAAG,IAAI,CAAC,cAAc,CAACn/D,GACnC+kE,EAAQ,CAAC6a,GAAiBJ,AAAuC,KAAvCA,EAAe,OAAO,CAACrgB,GACvDA,EAAW,qBAAqB,CAAC4F,GACjC+S,EAAa53E,KAAK,GAAG,CAAC,CAACi/D,EAAW,cAAc,GAAI2Y,EACtD,CACAA,EAAa,IAAI,CAAC,WAAW,CAAGxlE,EAAQ,MAAM,CAAC,WAAW,CAAGwlE,EAAa,EAC1E,IAAI,CAAC,aAAa,CAACA,GACf,CAAC8H,GACH,QAAKJ,EAAgB,AAACrgB,IACpBA,EAAW,KAAK,EAClB,GAEF,IAAI,CAAC,eAAe,CAACiB,GACrB,IAAI,CAAC,aAAa,CAAC,cAAe,CAACA,KAAAA,CAAI,GACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAACge,GAAc,IAAK,SACrC,GAAM,CAACyB,QAAAA,CAAO,CAAEC,WAAAA,CAAU,CAAC,CAAG,IAAI,CAC9BA,EACF,IAAI,CAAC,aAAa,CAACA,EAAY,IACtBD,EAAQ,MAAM,EACvB,IAAI,CAAC,kBAAkB,CAACA,EAASA,EAAS,IAE5C,IAAI,CAAC,MAAM,EACb,CACA,eAAgB,CACd,QAAK,IAAI,CAAC,MAAM,CAAE,AAACvuE,IACjBsmE,GAAQ,SAAS,CAAC,IAAI,CAAEtmE,EAC1B,GACA,IAAI,CAAC,mBAAmB,GACxB,IAAI,CAAC,mBAAmB,EAC1B,CACA,qBAAsB,CACpB,IAAMgB,EAAU,IAAI,CAAC,OAAO,CACtBytE,EAAiB,IAAInD,IAAIh4E,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GACpDo7E,EAAY,IAAIpD,IAAItqE,EAAQ,MAAM,EACpC,EAAC,SAAUytE,EAAgBC,IAAc,CAAC,CAAC,IAAI,CAAC,oBAAoB,GAAK1tE,EAAQ,UAAU,AAAD,IAC5F,IAAI,CAAC,YAAY,GACjB,IAAI,CAAC,UAAU,GAEnB,CACA,sBAAuB,CACrB,GAAM,CAAC2tE,eAAAA,CAAc,CAAC,CAAG,IAAI,CAE7B,IAAK,GAAM,CAAC3iB,OAAAA,CAAM,CAAEv7D,MAAAA,CAAK,CAAE3B,MAAAA,CAAK,CAAC,GADjB,IAAI,CAAC,sBAAsB,IAAM,EAAE,EAGjD8/E,AAtVN,SAAyBtqD,CAAG,CAAE7zB,CAAK,CAAE4hE,CAAI,EAEvC,IAAK,IAAMjsD,KADE9S,OAAO,IAAI,CAACgxB,GACD,CACtB,IAAMuqD,EAAS,CAACzoE,EAChB,GAAIyoE,GAAUp+E,EAAO,CACnB,IAAMH,EAAQg0B,CAAG,CAACle,EAAI,AACtB,QAAOke,CAAG,CAACle,EAAI,CACXisD,CAAAA,EAAO,GAAKwc,EAASp+E,CAAI,GAC3B6zB,CAAAA,CAAG,CAACuqD,EAASxc,EAAK,CAAG/hE,CAAI,CAE7B,CACF,CACF,EA0UsBq+E,EAAgBl+E,EADnBu7D,AAAW,oBAAXA,EAA+B,CAACl9D,EAAQA,EAGzD,CACA,wBAAyB,CACvB,IAAMggF,EAAe,IAAI,CAAC,YAAY,CACtC,GAAI,CAACA,GAAgB,CAACA,EAAa,MAAM,CACvC,MAEF,KAAI,CAAC,YAAY,CAAG,EAAE,CACtB,IAAMC,EAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxCC,EAAU,AAACvmE,GAAQ,IAAI6iE,IAC3BwD,EACG,MAAM,CAAC99E,GAAKA,CAAC,CAAC,EAAE,GAAKyX,GACrB,GAAG,CAAC,CAACzX,EAAGtC,IAAMA,EAAI,IAAMsC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAExCi+E,EAAYD,EAAQ,GAC1B,IAAK,IAAItgF,EAAI,EAAGA,EAAIqgF,EAAcrgF,IAChC,GAAI,CAAC,SAAUugF,EAAWD,EAAQtgF,IAChC,OAGJ,OAAOJ,MAAM,IAAI,CAAC2gF,GACf,GAAG,CAACj+E,GAAKA,EAAE,KAAK,CAAC,MACjB,GAAG,CAACJ,GAAM,EAAC,OAAQA,CAAC,CAAC,EAAE,CAAE,MAAO,CAACA,CAAC,CAAC,EAAE,CAAE,MAAO,CAACA,CAAC,CAAC,EAAE,GACxD,CACA,cAAc41E,CAAU,CAAE,CACxB,GAAI,AAA2D,KAA3D,IAAI,CAAC,aAAa,CAAC,eAAgB,CAAC,WAAY,EAAI,GACtD,OAEFF,GAAQ,MAAM,CAAC,IAAI,CAAE,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,MAAM,CAAEE,GAC9C,IAAMh1C,EAAO,IAAI,CAAC,SAAS,CACrB09C,EAAS19C,EAAK,KAAK,EAAI,GAAKA,EAAK,MAAM,EAAI,CACjD,KAAI,CAAC,OAAO,CAAG,EAAE,CACjB,QAAK,IAAI,CAAC,KAAK,CAAE,AAACnuB,IAChB,GAAI6rE,CAAAA,GAAU7rE,AAAiB,cAAjBA,EAAI,QAAQ,CAGtBA,EAAI,SAAS,EACfA,EAAI,SAAS,GAEf,IAAI,CAAC,OAAO,CAAC,IAAI,IAAIA,EAAI,OAAO,GAClC,EAAG,IAAI,EACP,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC0nD,EAAM36D,KAC1B26D,EAAK,IAAI,CAAG36D,CACd,GACA,IAAI,CAAC,aAAa,CAAC,cACrB,CACA,gBAAgB0+D,CAAI,CAAE,CACpB,GAAI,AAAyE,KAAzE,IAAI,CAAC,aAAa,CAAC,uBAAwB,CAACA,KAAAA,EAAM,WAAY,EAAI,IAGtE,IAAK,IAAIpgE,EAAI,EAAG8hC,EAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE9hC,EAAI8hC,EAAM,EAAE9hC,EAC5D,IAAI,CAAC,cAAc,CAACA,GAAG,UAAU,CAAC,SAAS,GAE7C,IAAK,IAAIA,EAAI,EAAG8hC,EAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE9hC,EAAI8hC,EAAM,EAAE9hC,EAC5D,IAAI,CAAC,cAAc,CAACA,EAAG,SAAWogE,GAAQA,EAAK,CAAC,aAAcpgE,CAAC,GAAKogE,GAEtE,IAAI,CAAC,aAAa,CAAC,sBAAuB,CAACA,KAAAA,CAAI,GACjD,CACA,eAAe1+D,CAAK,CAAE0+D,CAAI,CAAE,CAC1B,IAAMvB,EAAO,IAAI,CAAC,cAAc,CAACn9D,GAC3B4qB,EAAO,CAACuyC,KAAAA,EAAMn9D,MAAAA,EAAO0+D,KAAAA,EAAM,WAAY,EAAI,EACjD,GAAI,AAAoD,KAApD,IAAI,CAAC,aAAa,CAAC,sBAAuB9zC,GAG9CuyC,EAAK,UAAU,CAAC,OAAO,CAACuB,GACxB9zC,EAAK,UAAU,CAAG,GAClB,IAAI,CAAC,aAAa,CAAC,qBAAsBA,EAC3C,CACA,QAAS,CACP,GAAI,AAA2D,KAA3D,IAAI,CAAC,aAAa,CAAC,eAAgB,CAAC,WAAY,EAAI,GAGpDwvC,EAAS,GAAG,CAAC,IAAI,EACf,IAAI,CAAC,QAAQ,EAAI,CAACA,EAAS,OAAO,CAAC,IAAI,GACzCA,EAAS,KAAK,CAAC,IAAI,GAGrB,IAAI,CAAC,IAAI,GACTyiB,GAAqB,CAAC,MAAO,IAAI,GAErC,CACA,MAAO,KACDv+E,EACJ,GAAI,IAAI,CAAC,iBAAiB,CAAE,CAC1B,GAAM,CAACiT,MAAAA,CAAK,CAAE1R,OAAAA,CAAM,CAAC,CAAG,IAAI,CAAC,iBAAiB,CAC9C,IAAI,CAAC,OAAO,CAAC0R,EAAO1R,GACpB,IAAI,CAAC,iBAAiB,CAAG,IAC3B,CAEA,GADA,IAAI,CAAC,KAAK,GACN,IAAI,CAAC,KAAK,EAAI,GAAK,IAAI,CAAC,MAAM,EAAI,GAGlC,AAAyD,KAAzD,IAAI,CAAC,aAAa,CAAC,aAAc,CAAC,WAAY,EAAI,GAFpD,OAKF,IAAMk/E,EAAS,IAAI,CAAC,OAAO,CAC3B,IAAKzgF,EAAI,EAAGA,EAAIygF,EAAO,MAAM,EAAIA,CAAM,CAACzgF,EAAE,CAAC,CAAC,EAAI,EAAG,EAAEA,EACnDygF,CAAM,CAACzgF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAG/B,IADA,IAAI,CAAC,aAAa,GACXA,EAAIygF,EAAO,MAAM,CAAE,EAAEzgF,EAC1BygF,CAAM,CAACzgF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAE/B,IAAI,CAAC,aAAa,CAAC,YACrB,CACA,uBAAuBs+D,CAAa,CAAE,KAGhCt+D,EAAG8hC,EAFP,IAAMy8B,EAAW,IAAI,CAAC,eAAe,CAC/BlyC,EAAS,EAAE,CAEjB,IAAKrsB,EAAI,EAAG8hC,EAAOy8B,EAAS,MAAM,CAAEv+D,EAAI8hC,EAAM,EAAE9hC,EAAG,CACjD,IAAM6+D,EAAON,CAAQ,CAACv+D,EAAE,CACpB,EAACs+D,GAAiBO,EAAK,OAAO,AAAD,GAC/BxyC,EAAO,IAAI,CAACwyC,EAEhB,CACA,OAAOxyC,CACT,CACA,8BAA+B,CAC7B,OAAO,IAAI,CAAC,sBAAsB,CAAC,GACrC,CACA,eAAgB,CACd,GAAI,AAAiE,KAAjE,IAAI,CAAC,aAAa,CAAC,qBAAsB,CAAC,WAAY,EAAI,GAC5D,OAEF,IAAMkyC,EAAW,IAAI,CAAC,4BAA4B,GAClD,IAAK,IAAIv+D,EAAIu+D,EAAS,MAAM,CAAG,EAAGv+D,GAAK,EAAG,EAAEA,EAC1C,IAAI,CAAC,YAAY,CAACu+D,CAAQ,CAACv+D,EAAE,EAE/B,IAAI,CAAC,aAAa,CAAC,oBACrB,CACA,aAAa6+D,CAAI,CAAE,CACjB,IAAMzpC,EAAM,IAAI,CAAC,GAAG,CACdiqB,EAAOwf,EAAK,KAAK,CACjB6hB,EAAU,CAACrhC,EAAK,QAAQ,CACxBvc,EAAO,IAAI,CAAC,SAAS,CACrBxW,EAAO,CACXuyC,KAAAA,EACA,MAAOA,EAAK,KAAK,CACjB,WAAY,EACd,EACA,GAAI,AAAkD,KAAlD,IAAI,CAAC,aAAa,CAAC,oBAAqBvyC,GAGxCo0D,GACF,QAAStrD,EAAK,CACZ,KAAMiqB,AAAc,KAAdA,EAAK,IAAI,CAAa,EAAIvc,EAAK,IAAI,CAAGuc,EAAK,IAAI,CACrD,MAAOA,AAAe,KAAfA,EAAK,KAAK,CAAa,IAAI,CAAC,KAAK,CAAGvc,EAAK,KAAK,CAAGuc,EAAK,KAAK,CAClE,IAAKA,AAAa,KAAbA,EAAK,GAAG,CAAa,EAAIvc,EAAK,GAAG,CAAGuc,EAAK,GAAG,CACjD,OAAQA,AAAgB,KAAhBA,EAAK,MAAM,CAAa,IAAI,CAAC,MAAM,CAAGvc,EAAK,MAAM,CAAGuc,EAAK,MAAM,AACzE,GAEFwf,EAAK,UAAU,CAAC,IAAI,GAChB6hB,GACF,QAAWtrD,GAEb9I,EAAK,UAAU,CAAG,GAClB,IAAI,CAAC,aAAa,CAAC,mBAAoBA,EACzC,CACA,cAAcje,CAAK,CAAE,CACnB,MAAO,QAAeA,EAAO,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,WAAW,CAC/D,CACA,0BAA0BrG,CAAC,CAAEo4D,CAAI,CAAE9tD,CAAO,CAAE83D,CAAgB,CAAE,CAC5D,IAAM9M,EAASyY,GAAY,KAAK,CAAC3V,EAAK,OACtC,AAAI,AAAkB,YAAlB,OAAO9C,EACFA,EAAO,IAAI,CAAEt1D,EAAGsK,EAAS83D,GAE3B,EAAE,AACX,CACA,eAAejiC,CAAY,CAAE,CAC3B,IAAMH,EAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAACG,EAAa,CAC1Co2B,EAAW,IAAI,CAAC,SAAS,CAC3BM,EAAON,EAAS,MAAM,CAAC5+D,GAAKA,GAAKA,EAAE,QAAQ,GAAKqoC,GAAS,GAAG,GAkBhE,MAjBI,CAAC62B,IACHA,EAAO,CACL,KAAM,KACN,KAAM,EAAE,CACR,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,QAAS,KACT,QAAS,KACT,MAAO72B,GAAWA,EAAQ,KAAK,EAAI,EACnC,MAAOG,EACP,SAAUH,EACV,QAAS,EAAE,CACX,QAAS,EACX,EACAu2B,EAAS,IAAI,CAACM,IAETA,CACT,CACA,YAAa,CACX,OAAO,IAAI,CAAC,QAAQ,EAAK,KAAI,CAAC,QAAQ,CAAG,QAAc,KAAM,CAAC,MAAO,IAAI,CAAE,KAAM,OAAO,EAAC,CAC3F,CACA,wBAAyB,CACvB,OAAO,IAAI,CAAC,4BAA4B,GAAG,MAAM,AACnD,CACA,iBAAiB12B,CAAY,CAAE,CAC7B,IAAMH,EAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAACG,EAAa,CAChD,GAAI,CAACH,EACH,MAAO,GAET,IAAM62B,EAAO,IAAI,CAAC,cAAc,CAAC12B,GACjC,MAAO,AAAuB,WAAvB,OAAO02B,EAAK,MAAM,CAAiB,CAACA,EAAK,MAAM,CAAG,CAAC72B,EAAQ,MAAM,AAC1E,CACA,qBAAqBG,CAAY,CAAE3kB,CAAO,CAAE,CAE1Cq7C,AADa,IAAI,CAAC,cAAc,CAAC12B,GAC5B,MAAM,CAAG,CAAC3kB,CACjB,CACA,qBAAqB9hB,CAAK,CAAE,CAC1B,IAAI,CAAC,cAAc,CAACA,EAAM,CAAG,CAAC,IAAI,CAAC,cAAc,CAACA,EAAM,AAC1D,CACA,kBAAkBA,CAAK,CAAE,CACvB,MAAO,CAAC,IAAI,CAAC,cAAc,CAACA,EAAM,AACpC,CACA,kBAAkBymC,CAAY,CAAEo9B,CAAS,CAAE/hD,CAAO,CAAE,CAClD,IAAM48C,EAAO58C,EAAU,OAAS,OAC1Bq7C,EAAO,IAAI,CAAC,cAAc,CAAC12B,GAC3B6zB,EAAQ6C,EAAK,UAAU,CAAC,kBAAkB,CAACl+D,KAAAA,EAAWy/D,GACxD,QAAQmF,IACV1G,EAAK,IAAI,CAAC0G,EAAU,CAAC,MAAM,CAAG,CAAC/hD,EAC/B,IAAI,CAAC,MAAM,KAEX,IAAI,CAAC,oBAAoB,CAAC2kB,EAAc3kB,GACxCw4C,EAAM,MAAM,CAAC6C,EAAM,CAACr7C,QAAAA,CAAO,GAC3B,IAAI,CAAC,MAAM,CAAC,AAAC4R,GAAQA,EAAI,YAAY,GAAK+S,EAAei4B,EAAOz/D,KAAAA,GAEpE,CACA,KAAKwnC,CAAY,CAAEo9B,CAAS,CAAE,CAC5B,IAAI,CAAC,iBAAiB,CAACp9B,EAAco9B,EAAW,GAClD,CACA,KAAKp9B,CAAY,CAAEo9B,CAAS,CAAE,CAC5B,IAAI,CAAC,iBAAiB,CAACp9B,EAAco9B,EAAW,GAClD,CACA,oBAAoBp9B,CAAY,CAAE,CAChC,IAAM02B,EAAO,IAAI,CAAC,SAAS,CAAC12B,EAAa,CACrC02B,GAAQA,EAAK,UAAU,EACzBA,EAAK,UAAU,CAAC,QAAQ,GAE1B,OAAO,IAAI,CAAC,SAAS,CAAC12B,EAAa,AACrC,CACA,OAAQ,CACN,IAAInoC,EAAG8hC,EAGP,IAAK9hC,AAFL,IAAI,CAAC,IAAI,GACT87D,EAAS,MAAM,CAAC,IAAI,EACf97D,EAAI,EAAG8hC,EAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE9hC,EAAI8hC,EAAM,EAAE9hC,EACxD,IAAI,CAAC,mBAAmB,CAACA,EAE7B,CACA,SAAU,CACR,IAAI,CAAC,aAAa,CAAC,iBACnB,GAAM,CAAC4R,OAAAA,CAAM,CAAEwjB,IAAAA,CAAG,CAAC,CAAG,IAAI,CAC1B,IAAI,CAAC,KAAK,GACV,IAAI,CAAC,MAAM,CAAC,UAAU,GAClBxjB,IACF,IAAI,CAAC,YAAY,GACjB,SAAYA,EAAQwjB,GACpB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAACA,GAC7B,IAAI,CAAC,MAAM,CAAG,KACd,IAAI,CAAC,GAAG,CAAG,MAEb,IAAI,CAAC,aAAa,CAAC,WACnB,OAAOspD,EAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CACzB,IAAI,CAAC,aAAa,CAAC,eACrB,CACA,cAAc,GAAGpyD,CAAI,CAAE,CACrB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,IAAIA,EAClC,CACA,YAAa,CACX,IAAI,CAAC,cAAc,GACf,IAAI,CAAC,OAAO,CAAC,UAAU,CACzB,IAAI,CAAC,oBAAoB,GAEzB,IAAI,CAAC,QAAQ,CAAG,EAEpB,CACA,gBAAiB,CACf,IAAMqb,EAAY,IAAI,CAAC,UAAU,CAC3Bg5C,EAAW,IAAI,CAAC,QAAQ,CACxBC,EAAO,CAACxzE,EAAMuf,KAClBg0D,EAAS,gBAAgB,CAAC,IAAI,CAAEvzE,EAAMuf,GACtCgb,CAAS,CAACv6B,EAAK,CAAGuf,CACpB,EACMA,EAAW,CAAC3kB,EAAGrI,EAAGoD,KACtBiF,EAAE,OAAO,CAAGrI,EACZqI,EAAE,OAAO,CAAGjF,EACZ,IAAI,CAAC,aAAa,CAACiF,EACrB,EACA,QAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,AAACoF,GAASwzE,EAAKxzE,EAAMuf,GACjD,CACA,sBAAuB,KAqBjBk0D,CApBA,EAAC,IAAI,CAAC,oBAAoB,EAC5B,KAAI,CAAC,oBAAoB,CAAG,CAAC,GAE/B,IAAMl5C,EAAY,IAAI,CAAC,oBAAoB,CACrCg5C,EAAW,IAAI,CAAC,QAAQ,CACxBC,EAAO,CAACxzE,EAAMuf,KAClBg0D,EAAS,gBAAgB,CAAC,IAAI,CAAEvzE,EAAMuf,GACtCgb,CAAS,CAACv6B,EAAK,CAAGuf,CACpB,EACMm0D,EAAU,CAAC1zE,EAAMuf,KACjBgb,CAAS,CAACv6B,EAAK,GACjBuzE,EAAS,mBAAmB,CAAC,IAAI,CAAEvzE,EAAMuf,GACzC,OAAOgb,CAAS,CAACv6B,EAAK,CAE1B,EACMuf,EAAW,CAAC1Z,EAAO1R,KACnB,IAAI,CAAC,MAAM,EACb,IAAI,CAAC,MAAM,CAAC0R,EAAO1R,EAEvB,EAEMw/E,EAAW,KACfD,EAAQ,SAAUC,GAClB,IAAI,CAAC,QAAQ,CAAG,GAChB,IAAI,CAAC,MAAM,GACXH,EAAK,SAAUj0D,GACfi0D,EAAK,SAAUC,EACjB,EACAA,EAAW,KACT,IAAI,CAAC,QAAQ,CAAG,GAChBC,EAAQ,SAAUn0D,GAClB,IAAI,CAAC,KAAK,GACV,IAAI,CAAC,OAAO,CAAC,EAAG,GAChBi0D,EAAK,SAAUG,EACjB,EACIJ,EAAS,UAAU,CAAC,IAAI,CAAC,MAAM,EACjCI,IAEAF,GAEJ,CACA,cAAe,CACb,QAAK,IAAI,CAAC,UAAU,CAAE,CAACl0D,EAAUvf,KAC/B,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAEA,EAAMuf,EAChD,GACA,IAAI,CAAC,UAAU,CAAG,CAAC,EACnB,QAAK,IAAI,CAAC,oBAAoB,CAAE,CAACA,EAAUvf,KACzC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAEA,EAAMuf,EAChD,GACA,IAAI,CAAC,oBAAoB,CAAGhsB,KAAAA,CAC9B,CACA,iBAAiBkhC,CAAK,CAAEu+B,CAAI,CAAEr/C,CAAO,CAAE,KAE3Bs7C,EAAMr8D,EAAG8hC,EADnB,IAAM7f,EAASlB,EAAU,MAAQ,SAMjC,IAAK/gB,AAJQ,YAATogE,GAEFvB,AADO,IAAI,CAAC,cAAc,CAACh9B,CAAK,CAAC,EAAE,CAAC,YAAY,EAC3C,UAAU,CAAC,IAAM5f,EAAS,oBAAoB,GAEhDjiB,EAAI,EAAG8hC,EAAOD,EAAM,MAAM,CAAE7hC,EAAI8hC,EAAM,EAAE9hC,EAAG,CAE9C,IAAMm/D,EAAa9C,AADnBA,CAAAA,EAAOx6B,CAAK,CAAC7hC,EAAE,AAAD,GACa,IAAI,CAAC,cAAc,CAACq8D,EAAK,YAAY,EAAE,UAAU,CACxE8C,GACFA,CAAU,CAACl9C,EAAS,aAAa,CAACo6C,EAAK,OAAO,CAAEA,EAAK,YAAY,CAAEA,EAAK,KAAK,CAEjF,CACF,CACA,mBAAoB,CAClB,OAAO,IAAI,CAAC,OAAO,EAAI,EAAE,AAC3B,CACA,kBAAkB2kB,CAAc,CAAE,CAChC,IAAMC,EAAa,IAAI,CAAC,OAAO,EAAI,EAAE,CAC/Bre,EAASoe,EAAe,GAAG,CAAC,CAAC,CAAC74C,aAAAA,CAAY,CAAEzmC,MAAAA,CAAK,CAAC,IACtD,IAAMm9D,EAAO,IAAI,CAAC,cAAc,CAAC12B,GACjC,GAAI,CAAC02B,EACH,MAAM,AAAIn/D,MAAM,6BAA+ByoC,GAEjD,MAAO,CACLA,aAAAA,EACA,QAAS02B,EAAK,IAAI,CAACn9D,EAAM,CACzBA,MAAAA,CACF,CACF,EACgB,EAAC,SAAekhE,EAAQqe,KAEtC,IAAI,CAAC,OAAO,CAAGre,EACf,IAAI,CAAC,UAAU,CAAG,KAClB,IAAI,CAAC,kBAAkB,CAACA,EAAQqe,GAEpC,CACA,cAAc98D,CAAI,CAAEmI,CAAI,CAAExO,CAAM,CAAE,CAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAEqG,EAAMmI,EAAMxO,EAChD,CACA,mBAAmB8kD,CAAM,CAAEqe,CAAU,CAAEC,CAAM,CAAE,CAC7C,IAAMC,EAAe,IAAI,CAAC,OAAO,CAAC,KAAK,CACjC/T,EAAO,CAAClrE,EAAGC,IAAMD,EAAE,MAAM,CAACvC,GAAK,CAACwC,EAAE,IAAI,CAACY,GAAKpD,EAAE,YAAY,GAAKoD,EAAE,YAAY,EAAIpD,EAAE,KAAK,GAAKoD,EAAE,KAAK,GACpGq+E,EAAchU,EAAK6T,EAAYre,GAC/Bye,EAAYH,EAASte,EAASwK,EAAKxK,EAAQqe,EAC7CG,CAAAA,EAAY,MAAM,EACpB,IAAI,CAAC,gBAAgB,CAACA,EAAaD,EAAa,IAAI,CAAE,IAEpDE,EAAU,MAAM,EAAIF,EAAa,IAAI,EACvC,IAAI,CAAC,gBAAgB,CAACE,EAAWF,EAAa,IAAI,CAAE,GAExD,CACA,cAAcn5E,CAAC,CAAEk5E,CAAM,CAAE,CACvB,IAAM50D,EAAO,CACX,MAAOtkB,EACPk5E,OAAAA,EACA,WAAY,GACZ,YAAa,IAAI,CAAC,aAAa,CAACl5E,EAClC,EACMs5E,EAAc,AAACjG,GAAW,AAACA,CAAAA,EAAO,OAAO,CAAC,MAAM,EAAI,IAAI,CAAC,OAAO,CAAC,MAAM,AAAD,EAAG,QAAQ,CAACrzE,EAAE,MAAM,CAAC,IAAI,EACrG,GAAI,AAAyD,KAAzD,IAAI,CAAC,aAAa,CAAC,cAAeskB,EAAMg1D,GAC1C,OAEF,IAAM1K,EAAU,IAAI,CAAC,YAAY,CAAC5uE,EAAGk5E,EAAQ50D,EAAK,WAAW,EAM7D,OALAA,EAAK,UAAU,CAAG,GAClB,IAAI,CAAC,aAAa,CAAC,aAAcA,EAAMg1D,GACnC1K,CAAAA,GAAWtqD,EAAK,OAAO,AAAD,GACxB,IAAI,CAAC,MAAM,GAEN,IAAI,AACb,CACA,aAAatkB,CAAC,CAAEk5E,CAAM,CAAEK,CAAW,CAAE,KAxuBXv5E,EAAGw5E,EAAWD,EAAaE,EAyuBnD,GAAM,CAAC,QAASR,EAAa,EAAE,CAAE3uE,QAAAA,CAAO,CAAC,CAAG,IAAI,CAE1CswD,EAAS,IAAI,CAAC,kBAAkB,CAAC56D,EAAGi5E,EAAYM,EAD7BL,GAEnBO,EAAU,SAAcz5E,GAC9B,IAAMw5E,GA7uBkBx5E,EA6uBaA,EA7uBVw5E,EA6uBa,IAAI,CAAC,UAAU,CA7uBjBD,EA6uBmBA,EA7uBNE,EA6uBmBA,EA5uBxE,AAAI,AAACF,GAAev5E,AAAW,aAAXA,EAAE,IAAI,CAGtBy5E,EACKD,EAEFx5E,EALE,MA4uBHu5E,IACF,IAAI,CAAC,UAAU,CAAG,KAClB,QAASjvE,EAAQ,OAAO,CAAE,CAACtK,EAAG46D,EAAQ,IAAI,CAAC,CAAE,IAAI,EAC7C6e,GACF,QAASnvE,EAAQ,OAAO,CAAE,CAACtK,EAAG46D,EAAQ,IAAI,CAAC,CAAE,IAAI,GAGrD,IAAMgU,EAAU,CAAC,SAAehU,EAAQqe,GAMxC,MALIrK,CAAAA,GAAWsK,CAAK,IAClB,IAAI,CAAC,OAAO,CAAGte,EACf,IAAI,CAAC,kBAAkB,CAACA,EAAQqe,EAAYC,IAE9C,IAAI,CAAC,UAAU,CAAGM,EACX5K,CACT,CACA,mBAAmB5uE,CAAC,CAAEi5E,CAAU,CAAEM,CAAW,CAAEnX,CAAgB,CAAE,CAC/D,GAAIpiE,AAAW,aAAXA,EAAE,IAAI,CACR,MAAO,EAAE,CAEX,GAAI,CAACu5E,EACH,OAAON,EAET,IAAME,EAAe,IAAI,CAAC,OAAO,CAAC,KAAK,CACvC,OAAO,IAAI,CAAC,yBAAyB,CAACn5E,EAAGm5E,EAAa,IAAI,CAAEA,EAAc/W,EAC5E,CACF,CACA,IAAMsX,GAAoB,IAAM,QAAKzsC,GAAM,SAAS,CAAE,AAAC7Q,GAAUA,EAAM,QAAQ,CAAC,UAAU,IA2C1F,SAASu9C,GAAQvsD,CAAG,CAAE/nB,CAAO,CAAEy6D,CAAQ,EACrC,GAAM,CAACC,WAAAA,CAAU,CAAE6Z,YAAAA,CAAW,CAAEjiF,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAEslE,YAAAA,CAAW,CAAEC,YAAAA,CAAW,CAAC,CAAGj7D,EAC9Dw0E,EAAcD,EAAcvZ,EAChCjzC,EAAI,SAAS,GACbA,EAAI,GAAG,CAACz1B,EAAGoD,EAAGslE,EAAaN,EAAa8Z,EAAa/Z,EAAW+Z,GAC5DvZ,EAAcsZ,GAChBC,EAAcD,EAActZ,EAC5BlzC,EAAI,GAAG,CAACz1B,EAAGoD,EAAGulE,EAAaR,EAAW+Z,EAAa9Z,EAAa8Z,EAAa,KAE7EzsD,EAAI,GAAG,CAACz1B,EAAGoD,EAAG6+E,EAAa9Z,EAAW,GAAO,CAAEC,EAAa,GAAO,EAErE3yC,EAAI,SAAS,GACbA,EAAI,IAAI,EACV,CAtDAxwB,OAAO,gBAAgB,CAACqwC,GAAO,CAC7B,SAAU,CACR6sC,WAHe,GAIf,MAAO,GAAQ,AACjB,EACA,UAAW,CACTA,WAPe,GAQf,MAAOpD,EACT,EACA,UAAW,CACToD,WAXe,GAYf,MAAO,GAAS,AAClB,EACA,SAAU,CACRA,WAfe,GAgBf,MAAOrO,CACT,EACA,QAAS,CACPqO,WAnBe,GAoBf,MAl1BU,OAm1BZ,EACA,SAAU,CACRA,WAvBe,GAwBf,MAAOnD,EACT,EACA,SAAU,CACRmD,WA3Be,GA4Bf,MAAO,CAAC,GAAGjgD,KACT4xC,EAAS,GAAG,IAAI5xC,GAChB6/C,IACF,CACF,EACA,WAAY,CACVI,WAlCe,GAmCf,MAAO,CAAC,GAAGjgD,KACT4xC,EAAS,MAAM,IAAI5xC,GACnB6/C,IACF,CACF,CACF,GAkCA,SAASK,GAAWz3E,CAAC,CAAEwoD,CAAK,CAAEnzD,CAAC,CAAEoD,CAAC,EAChC,MAAO,CACL,EAAGpD,EAAI2K,EAAIpK,KAAK,GAAG,CAAC4yD,GACpB,EAAG/vD,EAAIuH,EAAIpK,KAAK,GAAG,CAAC4yD,EACtB,CACF,CACA,SAASkvB,GAAQ5sD,CAAG,CAAE/nB,CAAO,CAAE6F,CAAM,CAAEq0D,CAAO,CAAEzlE,CAAG,CAAEmgF,CAAQ,EAC3D,GAAM,CAACtiF,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAE,WAAYhB,CAAK,CAAE6/E,YAAAA,CAAW,CAAE,YAAaM,CAAM,CAAC,CAAG70E,EAC9Dg7D,EAAcnoE,KAAK,GAAG,CAACmN,EAAQ,WAAW,CAAGk6D,EAAUr0D,EAAS0uE,EAAa,GAC7EtZ,EAAc4Z,EAAS,EAAIA,EAAS3a,EAAUr0D,EAAS0uE,EAAc,EACvEO,EAAgB,EACd11E,EAAQ3K,EAAMC,EACpB,GAAIwlE,EAAS,CAEX,IAAM6a,EAAuB/Z,EAAc,EAAIA,EAAcd,EAAU,EACjE8a,EAAqB,AAACC,CAAAA,AAFCJ,CAAAA,EAAS,EAAIA,EAAS3a,EAAU,GAEV6a,CAAmB,EAAK,EAE3ED,EAAgB,AAAC11E,CAAAA,EADK41E,CAAAA,AAAuB,IAAvBA,EAA2B,AAAC51E,EAAQ41E,EAAuBA,CAAAA,EAAqB9a,CAAM,EAAK96D,CAAI,CAChF,EAAK,CAC5C,CACA,IAAMC,EAAOxM,KAAK,GAAG,CAAC,KAAOuM,EAAQ47D,EAAcn1D,EAAS,GAAE,EAAIm1D,EAC5Dka,EAAc,AAAC91E,CAAAA,EAAQC,CAAG,EAAK,EAC/Bq7D,EAAahmE,EAAQwgF,EAAcJ,EACnCra,EAAWhmE,EAAMygF,EAAcJ,EAC/B,CAACK,WAAAA,CAAU,CAAEC,SAAAA,CAAQ,CAAEC,WAAAA,CAAU,CAAEC,SAAAA,CAAQ,CAAC,CAAGC,AAtCvD,SAA6Bla,CAAG,CAAEJ,CAAW,CAAED,CAAW,CAAEwa,CAAU,MAH7CjhF,EAIvB,IAAMiiB,GAJiBjiB,EAIG8mE,EAAI,OAAO,CAAC,YAAY,CAH3C,SAAkB9mE,EAAO,CAAC,aAAc,WAAY,aAAc,WAAW,GAI9EkhF,EAAgB,AAACza,CAAAA,EAAcC,CAAU,EAAK,EAC9Cya,EAAa7iF,KAAK,GAAG,CAAC4iF,EAAeD,EAAava,EAAc,GAChE0a,EAAoB,AAACzkE,IACzB,IAAM0kE,EAAgB,AAAC5a,CAAAA,EAAcnoE,KAAK,GAAG,CAAC4iF,EAAevkE,EAAG,EAAKskE,EAAa,EAClF,MAAO,QAAYtkE,EAAK,EAAGre,KAAK,GAAG,CAAC4iF,EAAeG,GACrD,EACA,MAAO,CACL,WAAYD,EAAkBn/D,EAAE,UAAU,EAC1C,SAAUm/D,EAAkBn/D,EAAE,QAAQ,EACtC,WAAY,QAAYA,EAAE,UAAU,CAAE,EAAGk/D,GACzC,SAAU,QAAYl/D,EAAE,QAAQ,CAAE,EAAGk/D,EACvC,CACF,EAwB2E11E,EAASi7D,EAAaD,EAAaP,EAAWC,GACjHmb,EAA2B7a,EAAcma,EACzCW,EAAyB9a,EAAcoa,EACvCW,EAA0Brb,EAAaya,EAAaU,EACpDG,EAAwBvb,EAAW2a,EAAWU,EAC9CG,EAA2Bhb,EAAcoa,EACzCa,EAAyBjb,EAAcqa,EACvCa,EAA0Bzb,EAAa2a,EAAaY,EACpDG,EAAwB3b,EAAW6a,EAAWY,EAEpD,GADAnuD,EAAI,SAAS,GACT6sD,EAAU,CAEZ,GADA7sD,EAAI,GAAG,CAACz1B,EAAGoD,EAAGslE,EAAa+a,EAAyBC,GAChDZ,EAAW,EAAG,CAChB,IAAMiB,EAAU3B,GAAWoB,EAAwBE,EAAuB1jF,EAAGoD,GAC7EqyB,EAAI,GAAG,CAACsuD,EAAQ,CAAC,CAAEA,EAAQ,CAAC,CAAEjB,EAAUY,EAAuBvb,EAAW,GAAO,CACnF,CACA,IAAM6b,EAAK5B,GAAWwB,EAAwBzb,EAAUnoE,EAAGoD,GAE3D,GADAqyB,EAAI,MAAM,CAACuuD,EAAG,CAAC,CAAEA,EAAG,CAAC,EACjBhB,EAAW,EAAG,CAChB,IAAMe,EAAU3B,GAAWwB,EAAwBE,EAAuB9jF,EAAGoD,GAC7EqyB,EAAI,GAAG,CAACsuD,EAAQ,CAAC,CAAEA,EAAQ,CAAC,CAAEf,EAAU7a,EAAW,GAAO,CAAE2b,EAAwBvjF,KAAK,EAAE,CAC7F,CAEA,GADAk1B,EAAI,GAAG,CAACz1B,EAAGoD,EAAGulE,EAAaR,EAAY6a,EAAWra,EAAcP,EAAc2a,EAAapa,EAAc,IACrGoa,EAAa,EAAG,CAClB,IAAMgB,EAAU3B,GAAWuB,EAA0BE,EAAyB7jF,EAAGoD,GACjFqyB,EAAI,GAAG,CAACsuD,EAAQ,CAAC,CAAEA,EAAQ,CAAC,CAAEhB,EAAYc,EAA0BtjF,KAAK,EAAE,CAAE6nE,EAAa,GAAO,CACnG,CACA,IAAM6b,EAAK7B,GAAWmB,EAA0Bnb,EAAYpoE,EAAGoD,GAE/D,GADAqyB,EAAI,MAAM,CAACwuD,EAAG,CAAC,CAAEA,EAAG,CAAC,EACjBpB,EAAa,EAAG,CAClB,IAAMkB,EAAU3B,GAAWmB,EAA0BE,EAAyBzjF,EAAGoD,GACjFqyB,EAAI,GAAG,CAACsuD,EAAQ,CAAC,CAAEA,EAAQ,CAAC,CAAElB,EAAYza,EAAa,GAAO,CAAEqb,EAClE,CACF,KAAO,CACLhuD,EAAI,MAAM,CAACz1B,EAAGoD,GACd,IAAM8gF,EAAc3jF,KAAK,GAAG,CAACkjF,GAA2B/a,EAAc1oE,EAChEmkF,EAAc5jF,KAAK,GAAG,CAACkjF,GAA2B/a,EAActlE,EACtEqyB,EAAI,MAAM,CAACyuD,EAAaC,GACxB,IAAMC,EAAY7jF,KAAK,GAAG,CAACmjF,GAAyBhb,EAAc1oE,EAC5DqkF,EAAY9jF,KAAK,GAAG,CAACmjF,GAAyBhb,EAActlE,EAClEqyB,EAAI,MAAM,CAAC2uD,EAAWC,EACxB,CACA5uD,EAAI,SAAS,EACf,CA8DA,MAAM6uD,WAAmB5/B,EACvB,YAAYpf,CAAG,CAAE,CACf,KAAK,GACL,IAAI,CAAC,OAAO,CAAGtkC,KAAAA,EACf,IAAI,CAAC,aAAa,CAAGA,KAAAA,EACrB,IAAI,CAAC,UAAU,CAAGA,KAAAA,EAClB,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,WAAW,CAAG,EACnB,IAAI,CAAC,WAAW,CAAG,EACfskC,GACFrgC,OAAO,MAAM,CAAC,IAAI,CAAEqgC,EAExB,CACA,QAAQi/C,CAAM,CAAEC,CAAM,CAAE/Z,CAAgB,CAAE,CACxC,IAAM/7D,EAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAK,IAAI,CAAE+7D,GAClC,CAACl5D,MAAAA,CAAK,CAAEukD,SAAAA,CAAQ,CAAC,CAAG,SAAkBpnD,EAAO,CAAC,EAAG61E,EAAQ,EAAGC,CAAM,GAClE,CAACpc,WAAAA,CAAU,CAAED,SAAAA,CAAQ,CAAEQ,YAAAA,CAAW,CAAED,YAAAA,CAAW,CAAEjB,cAAAA,CAAa,CAAC,CAAG,IAAI,CAAC,QAAQ,CAAC,CACpF,aACA,WACA,cACA,cACA,gBACD,CAAEgD,GACGga,EAAU,IAAI,CAAC,OAAO,CAAC,OAAO,CAAG,EAEjCC,EAAgBC,AADC,QAAeld,EAAeU,EAAWC,IACxB,GAAG,EAAI,QAAc72D,EAAO62D,EAAYD,GAC1Eyc,EAAe,SAAW9uB,EAAU6S,EAAc8b,EAAS/b,EAAc+b,GAC/E,OAAQC,GAAiBE,CAC3B,CACA,eAAena,CAAgB,CAAE,CAC/B,GAAM,CAACzqE,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAEglE,WAAAA,CAAU,CAAED,SAAAA,CAAQ,CAAEQ,YAAAA,CAAW,CAAED,YAAAA,CAAW,CAAC,CAAG,IAAI,CAAC,QAAQ,CAAC,CAC3E,IACA,IACA,aACA,WACA,cACA,cACA,gBACD,CAAE+B,GACG,CAACl3D,OAAAA,CAAM,CAAEq0D,QAAAA,CAAO,CAAC,CAAG,IAAI,CAAC,OAAO,CAChCid,EAAY,AAACzc,CAAAA,EAAaD,CAAO,EAAK,EACtC2c,EAAa,AAACnc,CAAAA,EAAcD,EAAcd,EAAUr0D,CAAK,EAAK,EACpE,MAAO,CACL,EAAGvT,EAAIO,KAAK,GAAG,CAACskF,GAAaC,EAC7B,EAAG1hF,EAAI7C,KAAK,GAAG,CAACskF,GAAaC,CAC/B,CACF,CACA,gBAAgBra,CAAgB,CAAE,CAChC,OAAO,IAAI,CAAC,cAAc,CAACA,EAC7B,CACA,KAAKh1C,CAAG,CAAE,CACR,GAAM,CAAC9iB,QAAAA,CAAO,CAAE80D,cAAAA,CAAa,CAAC,CAAG,IAAI,CAC/Bl0D,EAAS,AAACZ,CAAAA,EAAQ,MAAM,EAAI,GAAK,EACjCi1D,EAAU,AAACj1D,CAAAA,EAAQ,OAAO,EAAI,GAAK,EACnC2vE,EAAW3vE,EAAQ,QAAQ,CAGjC,GAFA,IAAI,CAAC,WAAW,CAAG,AAACA,AAAwB,UAAxBA,EAAQ,WAAW,CAAgB,IAAO,EAC9D,IAAI,CAAC,WAAW,CAAG80D,EAAgB,GAAG,CAAGlnE,KAAK,KAAK,CAACknE,EAAgB,GAAG,EAAI,EACvEA,AAAkB,IAAlBA,GAAuB,IAAI,CAAC,WAAW,CAAG,GAAK,IAAI,CAAC,WAAW,CAAG,EACpE,OAEFhyC,EAAI,IAAI,GACR,IAAIsvD,EAAe,EACnB,GAAIxxE,EAAQ,CACVwxE,EAAexxE,EAAS,EACxB,IAAMsxE,EAAY,AAAC,KAAI,CAAC,UAAU,CAAG,IAAI,CAAC,QAAQ,AAAD,EAAK,EACtDpvD,EAAI,SAAS,CAACl1B,KAAK,GAAG,CAACskF,GAAaE,EAAcxkF,KAAK,GAAG,CAACskF,GAAaE,GACpE,IAAI,CAAC,aAAa,EAAI,GAAE,EAC1BA,CAAAA,EAAexxE,CAAK,CAExB,CACAkiB,EAAI,SAAS,CAAG9iB,EAAQ,eAAe,CACvC8iB,EAAI,WAAW,CAAG9iB,EAAQ,WAAW,CACrC,IAAMw1D,EAAW6c,AAvIrB,SAAiBvvD,CAAG,CAAE/nB,CAAO,CAAE6F,CAAM,CAAEq0D,CAAO,CAAE0a,CAAQ,EACtD,GAAM,CAAC2C,YAAAA,CAAW,CAAE7c,WAAAA,CAAU,CAAEX,cAAAA,CAAa,CAAC,CAAG/5D,EAC7Cy6D,EAAWz6D,EAAQ,QAAQ,CAC/B,GAAIu3E,EAAa,CACf5C,GAAQ5sD,EAAK/nB,EAAS6F,EAAQq0D,EAASQ,EAAa,GAAG,CAAEka,GACzD,IAAK,IAAIjiF,EAAI,EAAGA,EAAI4kF,EAAa,EAAE5kF,EACjCo1B,EAAI,IAAI,EAEN,EAAC8iB,MAAMkvB,KACTU,EAAWC,EAAaX,EAAgB,GAAG,CACvCA,EAAgB,GAAG,EAAK,GAC1BU,CAAAA,GAAY,GAAG,AAAH,EAGlB,CAGA,OAFAka,GAAQ5sD,EAAK/nB,EAAS6F,EAAQq0D,EAASO,EAAUma,GACjD7sD,EAAI,IAAI,GACD0yC,CACT,EAqH6B1yC,EAAK,IAAI,CAAEsvD,EAAcnd,EAAS0a,IAC3D4C,AAlGJ,SAAoBzvD,CAAG,CAAE/nB,CAAO,CAAE6F,CAAM,CAAEq0D,CAAO,CAAEO,CAAQ,CAAEma,CAAQ,EACnE,GAAM,CAAC3vE,QAAAA,CAAO,CAAC,CAAGjF,EACZ,CAAC02B,YAAAA,CAAW,CAAE+gD,gBAAAA,CAAe,CAAC,CAAGxyE,EACjC8X,EAAQ9X,AAAwB,UAAxBA,EAAQ,WAAW,CACjC,IAAI,CAACyxB,EAGD3Z,GACFgL,EAAI,SAAS,CAAG2O,AAAc,EAAdA,EAChB3O,EAAI,QAAQ,CAAG0vD,GAAmB,UAElC1vD,EAAI,SAAS,CAAG2O,EAChB3O,EAAI,QAAQ,CAAG0vD,GAAmB,SAEhCz3E,EAAQ,WAAW,GACrB03E,AAlCJ,SAA+B3vD,CAAG,CAAE/nB,CAAO,CAAE+c,CAAK,MAI5CpqB,EAHJ,GAAM,CAACL,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAEglE,WAAAA,CAAU,CAAE6Z,YAAAA,CAAW,CAAEgD,YAAAA,CAAW,CAAC,CAAGv3E,EAC/Cg7D,EAAcnoE,KAAK,GAAG,CAACmN,EAAQ,WAAW,CAAGu0E,EAAa,GAC1DtZ,EAAcj7D,EAAQ,WAAW,CAAGu0E,EAO1C,IALIx3D,GACFu3D,GAAQvsD,EAAK/nB,EAAS06D,EAAa,GAAG,EAExC3yC,EAAI,SAAS,GACbA,EAAI,GAAG,CAACz1B,EAAGoD,EAAGulE,EAAaP,EAAa,GAAG,CAAEA,EAAY,IACpD/nE,EAAI,EAAGA,EAAI4kF,EAAa,EAAE5kF,EAC7Bo1B,EAAI,MAAM,GAIZ,IAFAA,EAAI,SAAS,GACbA,EAAI,GAAG,CAACz1B,EAAGoD,EAAGslE,EAAaN,EAAYA,EAAa,GAAG,EAClD/nE,EAAI,EAAGA,EAAI4kF,EAAa,EAAE5kF,EAC7Bo1B,EAAI,MAAM,EAEd,EAgB0BA,EAAK/nB,EAAS+c,GAElCA,GACFu3D,GAAQvsD,EAAK/nB,EAASy6D,GAExBka,GAAQ5sD,EAAK/nB,EAAS6F,EAAQq0D,EAASO,EAAUma,GACjD7sD,EAAI,MAAM,EACZ,EA4EeA,EAAK,IAAI,CAAEsvD,EAAcnd,EAASO,EAAUma,GACvD7sD,EAAI,OAAO,EACb,CACF,CAiBA,SAAS4vD,GAAS5vD,CAAG,CAAE9iB,CAAO,CAAE8F,EAAQ9F,CAAO,EAC7C8iB,EAAI,OAAO,CAAG,QAAehd,EAAM,cAAc,CAAE9F,EAAQ,cAAc,EACzE8iB,EAAI,WAAW,CAAC,QAAehd,EAAM,UAAU,CAAE9F,EAAQ,UAAU,GACnE8iB,EAAI,cAAc,CAAG,QAAehd,EAAM,gBAAgB,CAAE9F,EAAQ,gBAAgB,EACpF8iB,EAAI,QAAQ,CAAG,QAAehd,EAAM,eAAe,CAAE9F,EAAQ,eAAe,EAC5E8iB,EAAI,SAAS,CAAG,QAAehd,EAAM,WAAW,CAAE9F,EAAQ,WAAW,EACrE8iB,EAAI,WAAW,CAAG,QAAehd,EAAM,WAAW,CAAE9F,EAAQ,WAAW,CACzE,CACA,SAASlE,GAAOgnB,CAAG,CAAEiT,CAAQ,CAAE/rB,CAAM,EACnC8Y,EAAI,MAAM,CAAC9Y,EAAO,CAAC,CAAEA,EAAO,CAAC,CAC/B,CA1BA2nE,GAAW,EAAE,CAAG,MAChBA,GAAW,QAAQ,CAAG,CACpB,YAAa,SACb,YAAa,OACb,gBAAiBtjF,KAAAA,EACjB,aAAc,EACd,YAAa,EACb,OAAQ,EACR,QAAS,EACT,MAAOA,KAAAA,EACP,SAAU,EACZ,EACAsjF,GAAW,aAAa,CAAG,CACzB,gBAAiB,iBACnB,EAsBA,SAASgB,GAASp2E,CAAM,CAAE+zB,CAAO,CAAE8zC,EAAS,CAAC,CAAC,EAC5C,IAAMt2E,EAAQyO,EAAO,MAAM,CACrB,CAAC,MAAOq2E,EAAc,CAAC,CAAE,IAAKC,EAAY/kF,EAAQ,CAAC,CAAC,CAAGs2E,EACvD,CAAC,MAAO0O,CAAY,CAAE,IAAKC,CAAU,CAAC,CAAGziD,EACzC7gC,EAAQ7B,KAAK,GAAG,CAACglF,EAAaE,GAC9BtjF,EAAM5B,KAAK,GAAG,CAACilF,EAAWE,GAEhC,MAAO,CACLjlF,MAAAA,EACA2B,MAAAA,EACA,KAAM6gC,EAAQ,IAAI,CAClB,KAAM9gC,EAAMC,GAAS,CALPmjF,CAAAA,EAAcE,GAAgBD,EAAYC,GAAgBF,EAAcG,GAAcF,EAAYE,CAAS,EAKzFjlF,EAAQ0B,EAAMC,EAAQD,EAAMC,CAC9D,CACF,CACA,SAASujF,GAAYlwD,CAAG,CAAEtmB,CAAI,CAAE8zB,CAAO,CAAE8zC,CAAM,MAvBxBpkE,MA4BjBtS,EAAGqO,EAAO0zB,EAJd,GAAM,CAAClzB,OAAAA,CAAM,CAAEyD,QAAAA,CAAO,CAAC,CAAGxD,EACpB,CAAC1O,MAAAA,CAAK,CAAE2B,MAAAA,CAAK,CAAEm7D,KAAAA,CAAI,CAAEp7B,KAAAA,CAAI,CAAC,CAAGmjD,GAASp2E,EAAQ+zB,EAAS8zC,GAC7D,IAAM6O,EAzBN,AAAIjzE,CADiBA,EA0BYA,GAzBrB,OAAO,CACV,IAAc,CAEnBA,EAAQ,OAAO,EAAIA,AAAmC,aAAnCA,EAAQ,sBAAsB,CAC5C,IAAc,CAEhBlE,GAoBH,CAACu1D,KAAAA,EAAO,EAAI,CAAEvF,QAAAA,CAAO,CAAC,CAAGsY,GAAU,CAAC,EAExC,IAAK12E,EAAI,EAAGA,GAAK8hC,EAAM,EAAE9hC,EAAG,CAE1B,IAAIqO,AADJA,CAAAA,EAAQQ,CAAM,CAAC,AAAC9M,CAAAA,EAASq8D,CAAAA,EAAUt8B,EAAO9hC,EAAIA,CAAAA,CAAC,EAAKI,EAAM,AAAD,EAC/C,IAAI,EAEHujE,GACTvuC,EAAI,MAAM,CAAC/mB,EAAM,CAAC,CAAEA,EAAM,CAAC,EAC3Bs1D,EAAO,IAEP4hB,EAAWnwD,EAAK2M,EAAM1zB,EAAO+vD,EAAS9rD,EAAQ,OAAO,EAEvDyvB,EAAO1zB,EACT,CAKA,OAJI6uD,GAEFqoB,EAAWnwD,EAAK2M,EADhB1zB,EAAQQ,CAAM,CAAC,AAAC9M,CAAAA,EAASq8D,CAAAA,EAAUt8B,EAAO,EAAC,EAAK1hC,EAAM,CACzBg+D,EAAS9rD,EAAQ,OAAO,EAEhD,CAAC,CAAC4qD,CACX,CACA,SAASsoB,GAAgBpwD,CAAG,CAAEtmB,CAAI,CAAE8zB,CAAO,CAAE8zC,CAAM,MAM7C12E,EAAGqO,EAAOo3E,EAAOlmE,EAAME,EAAMimE,EALjC,IAAM72E,EAASC,EAAK,MAAM,CACpB,CAAC1O,MAAAA,CAAK,CAAE2B,MAAAA,CAAK,CAAE+/B,KAAAA,CAAI,CAAC,CAAGmjD,GAASp2E,EAAQ+zB,EAAS8zC,GACjD,CAAC/S,KAAAA,EAAO,EAAI,CAAEvF,QAAAA,CAAO,CAAC,CAAGsY,GAAU,CAAC,EACtCiP,EAAO,EACPC,EAAS,EAEPC,EAAa,AAACnkF,GAAU,AAACK,CAAAA,EAASq8D,CAAAA,EAAUt8B,EAAOpgC,EAAQA,CAAI,CAAC,EAAKtB,EACrE0lF,EAAQ,KACRvmE,IAASE,IACX2V,EAAI,MAAM,CAACuwD,EAAMlmE,GACjB2V,EAAI,MAAM,CAACuwD,EAAMpmE,GACjB6V,EAAI,MAAM,CAACuwD,EAAMD,GAErB,EAKA,IAJI/hB,IACFt1D,EAAQQ,CAAM,CAACg3E,EAAW,GAAG,CAC7BzwD,EAAI,MAAM,CAAC/mB,EAAM,CAAC,CAAEA,EAAM,CAAC,GAExBrO,EAAI,EAAGA,GAAK8hC,EAAM,EAAE9hC,EAAG,CAE1B,GAAIqO,AADJA,CAAAA,EAAQQ,CAAM,CAACg3E,EAAW7lF,GAAG,AAAD,EAClB,IAAI,CACZ,SAEF,IAAML,EAAI0O,EAAM,CAAC,CACXtL,EAAIsL,EAAM,CAAC,CACX03E,EAASpmF,AAAI,EAAJA,CACXomF,CAAAA,IAAWN,GACT1iF,EAAIwc,EACNA,EAAOxc,EACEA,EAAI0c,GACbA,CAAAA,EAAO1c,CAAAA,EAET4iF,EAAO,AAACC,CAAAA,EAASD,EAAOhmF,CAAAA,EAAK,EAAEimF,IAE/BE,IACA1wD,EAAI,MAAM,CAACz1B,EAAGoD,GACd0iF,EAAQM,EACRH,EAAS,EACTrmE,EAAOE,EAAO1c,GAEhB2iF,EAAQ3iF,CACV,CACA+iF,GACF,CACA,SAASE,GAAkBl3E,CAAI,EAC7B,IAAMqvD,EAAOrvD,EAAK,OAAO,CACnBkiE,EAAa7S,EAAK,UAAU,EAAIA,EAAK,UAAU,CAAC,MAAM,CAE5D,OAAO8nB,AADa,AAACn3E,EAAK,UAAU,EAAKA,EAAK,KAAK,EAAKqvD,EAAK,OAAO,EAAIA,AAAgC,aAAhCA,EAAK,sBAAsB,EAAoBA,EAAK,OAAO,EAAK6S,EACjGsU,GAAlBE,EACvB,CAiCA,IAAMU,GAAY,AAAkB,YAAlB,OAAOC,MAQzB,OAAMr3B,WAAoBzK,EACxB,YAAYpf,CAAG,CAAE,CACf,KAAK,GACL,IAAI,CAAC,QAAQ,CAAG,GAChB,IAAI,CAAC,OAAO,CAAGtkC,KAAAA,EACf,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,SAAS,CAAGA,KAAAA,EACjB,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,OAAO,CAAGA,KAAAA,EACf,IAAI,CAAC,SAAS,CAAGA,KAAAA,EACjB,IAAI,CAAC,UAAU,CAAG,GAClB,IAAI,CAAC,cAAc,CAAG,GACtB,IAAI,CAAC,aAAa,CAAGA,KAAAA,EACjBskC,GACFrgC,OAAO,MAAM,CAAC,IAAI,CAAEqgC,EAExB,CACA,oBAAoBoiC,CAAS,CAAEvG,CAAS,CAAE,CACxC,IAAMxuD,EAAU,IAAI,CAAC,OAAO,CAC5B,GAAI,AAACA,CAAAA,EAAQ,OAAO,EAAIA,AAAmC,aAAnCA,EAAQ,sBAAsB,AAAc,GAAM,CAACA,EAAQ,OAAO,EAAI,CAAC,IAAI,CAAC,cAAc,CAAE,CAClH,IAAM4qD,EAAO5qD,EAAQ,QAAQ,CAAG,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,SAAS,CAC3D,SAA2B,IAAI,CAAC,OAAO,CAAEA,EAAS+0D,EAAWnK,EAAM4D,GACnE,IAAI,CAAC,cAAc,CAAG,EACxB,CACF,CACA,IAAI,OAAOjyD,CAAM,CAAE,CACjB,IAAI,CAAC,OAAO,CAAGA,EACf,OAAO,IAAI,CAAC,SAAS,CACrB,OAAO,IAAI,CAAC,KAAK,CACjB,IAAI,CAAC,cAAc,CAAG,EACxB,CACA,IAAI,QAAS,CACX,OAAO,IAAI,CAAC,OAAO,AACrB,CACA,IAAI,UAAW,CACb,OAAO,IAAI,CAAC,SAAS,EAAK,KAAI,CAAC,SAAS,CAAG,SAAiB,IAAI,CAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EACxF,CACA,OAAQ,CACN,IAAMu3E,EAAW,IAAI,CAAC,QAAQ,CACxBv3E,EAAS,IAAI,CAAC,MAAM,CAC1B,OAAOu3E,EAAS,MAAM,EAAIv3E,CAAM,CAACu3E,CAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,AACrD,CACA,MAAO,CACL,IAAMA,EAAW,IAAI,CAAC,QAAQ,CACxBv3E,EAAS,IAAI,CAAC,MAAM,CACpBzO,EAAQgmF,EAAS,MAAM,CAC7B,OAAOhmF,GAASyO,CAAM,CAACu3E,CAAQ,CAAChmF,EAAQ,EAAE,CAAC,GAAG,CAAC,AACjD,CACA,YAAYiO,CAAK,CAAEsN,CAAQ,CAAE,KAzFErJ,MAmGzBtS,EAAG8hC,EATP,IAAMxvB,EAAU,IAAI,CAAC,OAAO,CACtB1Q,EAAQyM,CAAK,CAACsN,EAAS,CACvB9M,EAAS,IAAI,CAAC,MAAM,CACpBu3E,EAAW,SAAe,IAAI,CAAE,CAACzqE,SAAAA,EAAU,MAAO/Z,EAAO,IAAKA,CAAK,GACzE,GAAI,CAACwkF,EAAS,MAAM,CAClB,OAEF,IAAM/5D,EAAS,EAAE,CACjB,IAAMg6D,EAjGR,AAAI/zE,CAD2BA,EAkGgBA,GAjGnC,OAAO,CACV,IAAqB,CAE1BA,EAAQ,OAAO,EAAIA,AAAmC,aAAnCA,EAAQ,sBAAsB,CAC5C,IAAoB,CAEtB,IAAY,CA6FjB,IAAKtS,EAAI,EAAG8hC,EAAOskD,EAAS,MAAM,CAAEpmF,EAAI8hC,EAAM,EAAE9hC,EAAG,CACjD,GAAM,CAAC+B,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAC,CAAGskF,CAAQ,CAACpmF,EAAE,CAC1BqP,EAAKR,CAAM,CAAC9M,EAAM,CAClBuN,EAAKT,CAAM,CAAC/M,EAAI,CACtB,GAAIuN,IAAOC,EAAI,CACb+c,EAAO,IAAI,CAAChd,GACZ,QACF,CACA,IAAMtP,EAAIG,KAAK,GAAG,CAAC,AAAC0B,CAAAA,EAAQyN,CAAE,CAACsM,EAAS,AAAD,EAAMrM,CAAAA,CAAE,CAACqM,EAAS,CAAGtM,CAAE,CAACsM,EAAS,AAAD,GACjE2qE,EAAeD,EAAah3E,EAAIC,EAAIvP,EAAGuS,EAAQ,OAAO,CAC5Dg0E,CAAAA,CAAY,CAAC3qE,EAAS,CAAGtN,CAAK,CAACsN,EAAS,CACxC0Q,EAAO,IAAI,CAACi6D,EACd,CACA,OAAOj6D,AAAkB,IAAlBA,EAAO,MAAM,CAASA,CAAM,CAAC,EAAE,CAAGA,CAC3C,CACA,YAAY+I,CAAG,CAAEwN,CAAO,CAAE8zC,CAAM,CAAE,CAEhC,OAAO6P,AADeP,GAAkB,IAAI,EACvB5wD,EAAK,IAAI,CAAEwN,EAAS8zC,EAC3C,CACA,KAAKthD,CAAG,CAAErzB,CAAK,CAAE3B,CAAK,CAAE,CACtB,IAAMgmF,EAAW,IAAI,CAAC,QAAQ,CACxBG,EAAgBP,GAAkB,IAAI,EACxC9oB,EAAO,IAAI,CAAC,KAAK,CAGrB,IAAK,IAAMt6B,KAFX7gC,EAAQA,GAAS,EACjB3B,EAAQA,GAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAG2B,EACjBqkF,GACpBlpB,GAAQqpB,EAAcnxD,EAAK,IAAI,CAAEwN,EAAS,CAAC7gC,MAAAA,EAAO,IAAKA,EAAQ3B,EAAQ,CAAC,GAE1E,MAAO,CAAC,CAAC88D,CACX,CACA,KAAK9nC,CAAG,CAAEiyC,CAAS,CAAEtlE,CAAK,CAAE3B,CAAK,CAAE,CACjC,IAAMkS,EAAU,IAAI,CAAC,OAAO,EAAI,CAAC,CAE7BzD,CADW,KAAI,CAAC,MAAM,EAAI,EAAE,AAAD,EACpB,MAAM,EAAIyD,EAAQ,WAAW,GACtC8iB,EAAI,IAAI,IACRknC,AAtGN,SAAclnC,CAAG,CAAEtmB,CAAI,CAAE/M,CAAK,CAAE3B,CAAK,EACnC,GAAI8lF,IAAa,CAACp3E,EAAK,OAAO,CAAC,OAAO,CAAE,KAzBbsmB,EAAKtmB,EAAM/M,EAAO3B,MACzCqP,EADuB2lB,EA0BLA,EA1BUtmB,EA0BLA,EA1BW/M,EA0BLA,EA1BY3B,EA0BLA,GAzBpCqP,EAAOX,EAAK,KAAK,IAEnBW,EAAOX,EAAK,KAAK,CAAG,IAAIq3E,OACpBr3E,EAAK,IAAI,CAACW,EAAM1N,EAAO3B,IACzBqP,EAAK,SAAS,IAGlBu1E,GAAS5vD,EAAKtmB,EAAK,OAAO,EAC1BsmB,EAAI,MAAM,CAAC3lB,EAkBX,MACE+2E,AAjBJ,SAA0BpxD,CAAG,CAAEtmB,CAAI,CAAE/M,CAAK,CAAE3B,CAAK,EAC/C,GAAM,CAACgmF,SAAAA,CAAQ,CAAE9zE,QAAAA,CAAO,CAAC,CAAGxD,EACtBy3E,EAAgBP,GAAkBl3E,GACxC,IAAK,IAAM8zB,KAAWwjD,EACpBpB,GAAS5vD,EAAK9iB,EAASswB,EAAQ,KAAK,EACpCxN,EAAI,SAAS,GACTmxD,EAAcnxD,EAAKtmB,EAAM8zB,EAAS,CAAC7gC,MAAAA,EAAO,IAAKA,EAAQ3B,EAAQ,CAAC,IAClEg1B,EAAI,SAAS,GAEfA,EAAI,MAAM,EAEd,EAMqBA,EAAKtmB,EAAM/M,EAAO3B,EAEvC,EAgGWg1B,EAAK,IAAI,CAAErzB,EAAO3B,GACvBg1B,EAAI,OAAO,IAET,IAAI,CAAC,QAAQ,GACf,IAAI,CAAC,cAAc,CAAG,GACtB,IAAI,CAAC,KAAK,CAAGz0B,KAAAA,EAEjB,CACF,CAwBA,SAAS8lF,GAAU3iE,CAAE,CAAEmzD,CAAG,CAAEvxC,CAAI,CAAE0kC,CAAgB,EAChD,IAAM93D,EAAUwR,EAAG,OAAO,CACpB,CAAC,CAAC4hB,EAAK,CAAE9jC,CAAK,CAAC,CAAGkiB,EAAG,QAAQ,CAAC,CAAC4hB,EAAK,CAAE0kC,GAC5C,OAAQlqE,KAAK,GAAG,CAAC+2E,EAAMr1E,GAAS0Q,EAAQ,MAAM,CAAGA,EAAQ,SAAS,AACpE,CA3BAw8C,GAAY,EAAE,CAAG,OACjBA,GAAY,QAAQ,CAAG,CACrB,eAAgB,OAChB,WAAY,EAAE,CACd,iBAAkB,EAClB,gBAAiB,QACjB,YAAa,EACb,gBAAiB,GACjB,uBAAwB,UACxB,KAAM,GACN,SAAU,GACV,QAAS,GACT,QAAS,CACX,EACAA,GAAY,aAAa,CAAG,CAC1B,gBAAiB,kBACjB,YAAa,aACf,EACAA,GAAY,WAAW,CAAG,CACxB,YAAa,GACb,WAAY,AAAC73C,GAASA,AAAS,eAATA,GAAyBA,AAAS,SAATA,CACjD,CAOA,OAAMyvE,WAAqBriC,EACzB,YAAYpf,CAAG,CAAE,CACf,KAAK,GACL,IAAI,CAAC,OAAO,CAAGtkC,KAAAA,EACf,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,IAAI,CAAGA,KAAAA,EACZ,IAAI,CAAC,IAAI,CAAGA,KAAAA,EACRskC,GACFrgC,OAAO,MAAM,CAAC,IAAI,CAAEqgC,EAExB,CACA,QAAQ0hD,CAAM,CAAEC,CAAM,CAAExc,CAAgB,CAAE,CACxC,IAAM93D,EAAU,IAAI,CAAC,OAAO,CACtB,CAAC3S,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAC,CAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAK,IAAI,CAAEqnE,GACzC,OAAQ,AAAClqE,KAAK,GAAG,CAACymF,EAAShnF,EAAG,GAAKO,KAAK,GAAG,CAAC0mF,EAAS7jF,EAAG,GAAM7C,KAAK,GAAG,CAACoS,EAAQ,SAAS,CAAGA,EAAQ,MAAM,CAAE,EAC7G,CACA,SAASq0E,CAAM,CAAEvc,CAAgB,CAAE,CACjC,OAAOqc,GAAU,IAAI,CAAEE,EAAQ,IAAKvc,EACtC,CACA,SAASwc,CAAM,CAAExc,CAAgB,CAAE,CACjC,OAAOqc,GAAU,IAAI,CAAEG,EAAQ,IAAKxc,EACtC,CACA,eAAeA,CAAgB,CAAE,CAC/B,GAAM,CAACzqE,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAC,CAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAK,IAAI,CAAEqnE,GACzC,MAAO,CAACzqE,EAAAA,EAAGoD,EAAAA,CAAC,CACd,CACA,KAAKuP,CAAO,CAAE,CAEZ,IAAI9H,EAAS8H,AADbA,CAAAA,EAAUA,GAAW,IAAI,CAAC,OAAO,EAAI,CAAC,GACjB,MAAM,EAAI,EAEzByxB,EAAcv5B,AADpBA,CAAAA,EAAStK,KAAK,GAAG,CAACsK,EAAQA,GAAU8H,EAAQ,WAAW,EAAI,EAAC,GAC9BA,EAAQ,WAAW,EAAI,EACrD,MAAO,AAAC9H,CAAAA,EAASu5B,CAAU,EAAK,CAClC,CACA,KAAK3O,CAAG,CAAE0N,CAAI,CAAE,CACd,IAAMxwB,EAAU,IAAI,CAAC,OAAO,CAC5B,GAAI,KAAI,CAAC,IAAI,GAAIA,CAAAA,EAAQ,MAAM,CAAG,EAAE,IAAK,CAAC,QAAe,IAAI,CAAEwwB,EAAM,IAAI,CAAC,IAAI,CAACxwB,GAAW,GAG1F8iB,EAAI,WAAW,CAAG9iB,EAAQ,WAAW,CACrC8iB,EAAI,SAAS,CAAG9iB,EAAQ,WAAW,CACnC8iB,EAAI,SAAS,CAAG9iB,EAAQ,eAAe,CACvC,SAAU8iB,EAAK9iB,EAAS,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CACxC,CACA,UAAW,CACT,IAAMA,EAAU,IAAI,CAAC,OAAO,EAAI,CAAC,EACjC,OAAOA,EAAQ,MAAM,CAAGA,EAAQ,SAAS,AAC3C,CACF,CAgBA,SAASu0E,GAAaC,CAAG,CAAE1c,CAAgB,MAErC9mE,EAAME,EAAOqf,EAAK3d,EAAQ6hF,EAD9B,GAAM,CAACpnF,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAE0uC,KAAAA,CAAI,CAAEx+B,MAAAA,CAAK,CAAE1R,OAAAA,CAAM,CAAC,CAAGulF,EAAI,QAAQ,CAAC,CAAC,IAAK,IAAK,OAAQ,QAAS,SAAS,CAAE1c,GAexF,OAbI0c,EAAI,UAAU,EAChBC,EAAOxlF,EAAS,EAChB+B,EAAOpD,KAAK,GAAG,CAACP,EAAG8xC,GACnBjuC,EAAQtD,KAAK,GAAG,CAACP,EAAG8xC,GACpB5uB,EAAM9f,EAAIgkF,EACV7hF,EAASnC,EAAIgkF,IAGbzjF,EAAO3D,EADPonF,CAAAA,EAAO9zE,EAAQ,GAEfzP,EAAQ7D,EAAIonF,EACZlkE,EAAM3iB,KAAK,GAAG,CAAC6C,EAAG0uC,GAClBvsC,EAAShF,KAAK,GAAG,CAAC6C,EAAG0uC,IAEhB,CAACnuC,KAAAA,EAAMuf,IAAAA,EAAKrf,MAAAA,EAAO0B,OAAAA,CAAM,CAClC,CACA,SAAS8hF,GAAY/b,CAAI,CAAErpE,CAAK,CAAEogC,CAAG,CAAEC,CAAG,EACxC,OAAOgpC,EAAO,EAAI,QAAYrpE,EAAOogC,EAAKC,EAC5C,CAnCAykD,GAAa,EAAE,CAAG,QAClBA,GAAa,QAAQ,CAAG,CACtB,YAAa,EACb,UAAW,EACX,iBAAkB,EAClB,YAAa,EACb,WAAY,SACZ,OAAQ,EACR,SAAU,CACZ,EACAA,GAAa,aAAa,CAAG,CAC3B,gBAAiB,kBACjB,YAAa,aACf,EA4EA,SAAS/Q,GAAQmR,CAAG,CAAEnnF,CAAC,CAAEoD,CAAC,CAAEqnE,CAAgB,EAC1C,IAAM6c,EAAQtnF,AAAM,OAANA,EACRunF,EAAQnkF,AAAM,OAANA,EAER+N,EAASg2E,GAAO,CADLG,CAAAA,GAASC,CAAI,GACKL,GAAaC,EAAK1c,GACrD,OAAOt5D,GACHm2E,CAAAA,GAAS,SAAWtnF,EAAGmR,EAAO,IAAI,CAAEA,EAAO,KAAK,IAChDo2E,CAAAA,GAAS,SAAWnkF,EAAG+N,EAAO,GAAG,CAAEA,EAAO,MAAM,EACtD,CAIA,SAASq2E,GAAkB/xD,CAAG,CAAEhiB,CAAI,EAClCgiB,EAAI,IAAI,CAAChiB,EAAK,CAAC,CAAEA,EAAK,CAAC,CAAEA,EAAK,CAAC,CAAEA,EAAK,CAAC,CACzC,CACA,SAASg0E,GAAYh0E,CAAI,CAAEjC,CAAM,CAAEk2E,EAAU,CAAC,CAAC,EAC7C,IAAM1nF,EAAIyT,EAAK,CAAC,GAAKi0E,EAAQ,CAAC,CAAG,CAACl2E,EAAS,EACrCpO,EAAIqQ,EAAK,CAAC,GAAKi0E,EAAQ,CAAC,CAAG,CAACl2E,EAAS,EACrC3L,EAAI,AAAC4N,CAAAA,EAAK,CAAC,CAAGA,EAAK,CAAC,GAAKi0E,EAAQ,CAAC,CAAGA,EAAQ,CAAC,CAAGl2E,EAAS,GAAKxR,EAC/D8kC,EAAI,AAACrxB,CAAAA,EAAK,CAAC,CAAGA,EAAK,CAAC,GAAKi0E,EAAQ,CAAC,CAAGA,EAAQ,CAAC,CAAGl2E,EAAS,GAAKpO,EACrE,MAAO,CACL,EAAGqQ,EAAK,CAAC,CAAGzT,EACZ,EAAGyT,EAAK,CAAC,CAAGrQ,EACZ,EAAGqQ,EAAK,CAAC,CAAG5N,EACZ,EAAG4N,EAAK,CAAC,CAAGqxB,EACZ,OAAQrxB,EAAK,MAAM,AACrB,CACF,CACA,MAAMk0E,WAAmBjjC,EACvB,YAAYpf,CAAG,CAAE,CACf,KAAK,GACL,IAAI,CAAC,OAAO,CAAGtkC,KAAAA,EACf,IAAI,CAAC,UAAU,CAAGA,KAAAA,EAClB,IAAI,CAAC,IAAI,CAAGA,KAAAA,EACZ,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,aAAa,CAAGA,KAAAA,EACjBskC,GACFrgC,OAAO,MAAM,CAAC,IAAI,CAAEqgC,EAExB,CACA,KAAK7P,CAAG,CAAE,KAhCO5qB,EAiCf,GAAM,CAAC86D,cAAAA,CAAa,CAAE,QAAS,CAAC/gC,YAAAA,CAAW,CAAE4tC,gBAAAA,CAAe,CAAC,CAAC,CAAG,IAAI,CAC/D,CAAC/nD,MAAAA,CAAK,CAAE7T,MAAAA,CAAK,CAAC,CAAGgxE,AAvE3B,SAAuBT,CAAG,EACxB,IAAMh2E,EAAS+1E,GAAaC,GACtB7zE,EAAQnC,EAAO,KAAK,CAAGA,EAAO,IAAI,CAClCvP,EAASuP,EAAO,MAAM,CAAGA,EAAO,GAAG,CACnC64D,EAAS6d,AA7BjB,SAA0BV,CAAG,CAAEW,CAAI,CAAEC,CAAI,EACvC,IAAM9lF,EAAQklF,EAAI,OAAO,CAAC,WAAW,CAC/B7b,EAAO6b,EAAI,aAAa,CACxBjjE,EAAI,SAAOjiB,GACjB,MAAO,CACL,EAAGolF,GAAY/b,EAAK,GAAG,CAAEpnD,EAAE,GAAG,CAAE,EAAG6jE,GACnC,EAAGV,GAAY/b,EAAK,KAAK,CAAEpnD,EAAE,KAAK,CAAE,EAAG4jE,GACvC,EAAGT,GAAY/b,EAAK,MAAM,CAAEpnD,EAAE,MAAM,CAAE,EAAG6jE,GACzC,EAAGV,GAAY/b,EAAK,IAAI,CAAEpnD,EAAE,IAAI,CAAE,EAAG4jE,EACvC,CACF,EAmBkCX,EAAK7zE,EAAQ,EAAG1R,EAAS,GACnDiJ,EAASm9E,AAnBjB,SAA2Bb,CAAG,CAAEW,CAAI,CAAEC,CAAI,EACxC,GAAM,CAACE,mBAAAA,CAAkB,CAAC,CAAGd,EAAI,QAAQ,CAAC,CAAC,qBAAqB,EAC1DllF,EAAQklF,EAAI,OAAO,CAAC,YAAY,CAChCjjE,EAAI,SAAcjiB,GAClBimF,EAAO3nF,KAAK,GAAG,CAACunF,EAAMC,GACtBzc,EAAO6b,EAAI,aAAa,CACxBgB,EAAeF,GAAsB,QAAShmF,GACpD,MAAO,CACL,QAASolF,GAAY,CAACc,GAAgB7c,EAAK,GAAG,EAAIA,EAAK,IAAI,CAAEpnD,EAAE,OAAO,CAAE,EAAGgkE,GAC3E,SAAUb,GAAY,CAACc,GAAgB7c,EAAK,GAAG,EAAIA,EAAK,KAAK,CAAEpnD,EAAE,QAAQ,CAAE,EAAGgkE,GAC9E,WAAYb,GAAY,CAACc,GAAgB7c,EAAK,MAAM,EAAIA,EAAK,IAAI,CAAEpnD,EAAE,UAAU,CAAE,EAAGgkE,GACpF,YAAab,GAAY,CAACc,GAAgB7c,EAAK,MAAM,EAAIA,EAAK,KAAK,CAAEpnD,EAAE,WAAW,CAAE,EAAGgkE,EACzF,CACF,EAMmCf,EAAK7zE,EAAQ,EAAG1R,EAAS,GAC1D,MAAO,CACL,MAAO,CACL,EAAGuP,EAAO,IAAI,CACd,EAAGA,EAAO,GAAG,CACb,EAAGmC,EACH,EAAG1R,EACHiJ,OAAAA,CACF,EACA,MAAO,CACL,EAAGsG,EAAO,IAAI,CAAG64D,EAAO,CAAC,CACzB,EAAG74D,EAAO,GAAG,CAAG64D,EAAO,CAAC,CACxB,EAAG12D,EAAQ02D,EAAO,CAAC,CAAGA,EAAO,CAAC,CAC9B,EAAGpoE,EAASooE,EAAO,CAAC,CAAGA,EAAO,CAAC,CAC/B,OAAQ,CACN,QAASzpE,KAAK,GAAG,CAAC,EAAGsK,EAAO,OAAO,CAAGtK,KAAK,GAAG,CAACypE,EAAO,CAAC,CAAEA,EAAO,CAAC,GACjE,SAAUzpE,KAAK,GAAG,CAAC,EAAGsK,EAAO,QAAQ,CAAGtK,KAAK,GAAG,CAACypE,EAAO,CAAC,CAAEA,EAAO,CAAC,GACnE,WAAYzpE,KAAK,GAAG,CAAC,EAAGsK,EAAO,UAAU,CAAGtK,KAAK,GAAG,CAACypE,EAAO,CAAC,CAAEA,EAAO,CAAC,GACvE,YAAazpE,KAAK,GAAG,CAAC,EAAGsK,EAAO,WAAW,CAAGtK,KAAK,GAAG,CAACypE,EAAO,CAAC,CAAEA,EAAO,CAAC,EAC3E,CACF,CACF,CACF,EA4CyC,IAAI,EACzC,IAAMoe,EAAcC,AAlCfx9E,CADUA,EAmCe+L,EAAM,MAAM,EAlC9B,OAAO,EAAI/L,EAAO,QAAQ,EAAIA,EAAO,UAAU,EAAIA,EAAO,WAAW,CAkCnC,IAAkB,CAAG28E,GACnE/xD,EAAI,IAAI,GACJ7e,CAAAA,EAAM,CAAC,GAAK6T,EAAM,CAAC,EAAI7T,EAAM,CAAC,GAAK6T,EAAM,CAAC,AAAD,IAC3CgL,EAAI,SAAS,GACb2yD,EAAY3yD,EAAKgyD,GAAY7wE,EAAO+uD,EAAel7C,IACnDgL,EAAI,IAAI,GACR2yD,EAAY3yD,EAAKgyD,GAAYh9D,EAAO,CAACk7C,EAAe/uD,IACpD6e,EAAI,SAAS,CAAGmP,EAChBnP,EAAI,IAAI,CAAC,YAEXA,EAAI,SAAS,GACb2yD,EAAY3yD,EAAKgyD,GAAYh9D,EAAOk7C,IACpClwC,EAAI,SAAS,CAAG+8C,EAChB/8C,EAAI,IAAI,GACRA,EAAI,OAAO,EACb,CACA,QAAQuxD,CAAM,CAAEC,CAAM,CAAExc,CAAgB,CAAE,CACxC,OAAOuL,GAAQ,IAAI,CAAEgR,EAAQC,EAAQxc,EACvC,CACA,SAASuc,CAAM,CAAEvc,CAAgB,CAAE,CACjC,OAAOuL,GAAQ,IAAI,CAAEgR,EAAQ,KAAMvc,EACrC,CACA,SAASwc,CAAM,CAAExc,CAAgB,CAAE,CACjC,OAAOuL,GAAQ,IAAI,CAAE,KAAMiR,EAAQxc,EACrC,CACA,eAAeA,CAAgB,CAAE,CAC/B,GAAM,CAACzqE,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAE0uC,KAAAA,CAAI,CAAEuzB,WAAAA,CAAU,CAAC,CAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAK,IAAK,OAAQ,aAAa,CAAEoF,GACjF,MAAO,CACL,EAAGpF,EAAa,AAACrlE,CAAAA,EAAI8xC,CAAG,EAAK,EAAI9xC,EACjC,EAAGqlE,EAAajiE,EAAI,AAACA,CAAAA,EAAI0uC,CAAG,EAAK,CACnC,CACF,CACA,SAAS/L,CAAI,CAAE,CACb,MAAOA,AAAS,MAATA,EAAe,IAAI,CAAC,KAAK,CAAG,EAAI,IAAI,CAAC,MAAM,CAAG,CACvD,CACF,CACA4hD,GAAW,EAAE,CAAG,MAChBA,GAAW,QAAQ,CAAG,CACpB,cAAe,QACf,YAAa,EACb,aAAc,EACd,cAAe,OACf,WAAY3mF,KAAAA,CACd,EACA2mF,GAAW,aAAa,CAAG,CACzB,gBAAiB,kBACjB,YAAa,aACf,EAEA,IAAIn5E,GAAwBvJ,OAAO,MAAM,CAAC,CAC1C,UAAW,KACX,WAAYq/E,GACZ,YAAan1B,GACb,aAAc43B,GACd,WAAYY,EACZ,GAqGA,SAASW,GAAsBjgD,CAAO,EACpC,GAAIA,EAAQ,UAAU,CAAE,CACtB,IAAMvnC,EAAOunC,EAAQ,KAAK,AAC1B,QAAOA,EAAQ,UAAU,CACzB,OAAOA,EAAQ,KAAK,CACpBpjC,OAAO,cAAc,CAACojC,EAAS,OAAQ,CAAC,MAAOvnC,CAAI,EACrD,CACF,CACA,SAASynF,GAAmB9jD,CAAK,EAC/BA,EAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,AAAC4D,IAC3BigD,GAAsBjgD,EACxB,EACF,CA2HA,SAASmgD,GAAWxsE,CAAQ,CAAEoB,CAAK,CAAElD,CAAI,CAAEqjD,CAAI,EAC7C,GAAIA,EACF,OAEF,IAAIn7D,EAAQgb,CAAK,CAACpB,EAAS,CACvB7Z,EAAM+X,CAAI,CAAC8B,EAAS,CAKxB,MAJiB,UAAbA,IACF5Z,EAAQ,SAAgBA,GACxBD,EAAM,SAAgBA,IAEjB,CAAC6Z,SAAAA,EAAU5Z,MAAAA,EAAOD,IAAAA,CAAG,CAC9B,CAmBA,SAASsmF,GAAgBrmF,CAAK,CAAED,CAAG,CAAE+M,CAAM,EACzC,KAAM/M,EAAMC,EAAOD,IAAO,CACxB,IAAMuM,EAAQQ,CAAM,CAAC/M,EAAI,CACzB,GAAI,CAACo2C,MAAM7pC,EAAM,CAAC,GAAK,CAAC6pC,MAAM7pC,EAAM,CAAC,EACnC,KAEJ,CACA,OAAOvM,CACT,CACA,SAASumF,GAASnmF,CAAC,CAAEC,CAAC,CAAEiyB,CAAI,CAAE3P,CAAE,SAC9B,AAAIviB,GAAKC,EACAsiB,EAAGviB,CAAC,CAACkyB,EAAK,CAAEjyB,CAAC,CAACiyB,EAAK,EAErBlyB,EAAIA,CAAC,CAACkyB,EAAK,CAAGjyB,EAAIA,CAAC,CAACiyB,EAAK,CAAG,CACrC,CAEA,SAASk0D,GAAoBC,CAAQ,CAAEz5E,CAAI,EACzC,IAAID,EAAS,EAAE,CACX25E,EAAQ,GAOZ,MANI,QAAQD,IACVC,EAAQ,GACR35E,EAAS05E,GAET15E,EAAS45E,AAzCb,SAA6BF,CAAQ,CAAEz5E,CAAI,EACzC,GAAM,CAACnP,EAAAA,EAAI,IAAI,CAAEoD,EAAAA,EAAI,IAAI,CAAC,CAAGwlF,GAAY,CAAC,EACpCG,EAAa55E,EAAK,MAAM,CACxBD,EAAS,EAAE,CAajB,OAZAC,EAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC/M,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAC,IACjCA,EAAMsmF,GAAgBrmF,EAAOD,EAAK4mF,GAClC,IAAM3rE,EAAQ2rE,CAAU,CAAC3mF,EAAM,CACzB8X,EAAO6uE,CAAU,CAAC5mF,EAAI,AACxBiB,AAAM,QAANA,GACF8L,EAAO,IAAI,CAAC,CAAC,EAAGkO,EAAM,CAAC,CAAEha,EAAAA,CAAC,GAC1B8L,EAAO,IAAI,CAAC,CAAC,EAAGgL,EAAK,CAAC,CAAE9W,EAAAA,CAAC,IACV,OAANpD,IACTkP,EAAO,IAAI,CAAC,CAAClP,EAAAA,EAAG,EAAGod,EAAM,CAAC,GAC1BlO,EAAO,IAAI,CAAC,CAAClP,EAAAA,EAAG,EAAGka,EAAK,CAAC,GAE7B,GACOhL,CACT,EAwBiC05E,EAAUz5E,GAElCD,EAAO,MAAM,CAAG,IAAIigD,GAAY,CACrCjgD,OAAAA,EACA,QAAS,CAAC,QAAS,CAAC,EACpB25E,MAAAA,EACA,UAAWA,CACb,GAAK,IACP,CACA,SAASG,GAAiBzxE,CAAM,EAC9B,OAAOA,GAAUA,AAAgB,KAAhBA,EAAO,IAAI,AAC9B,CA+JA,MAAM0xE,GACJ,YAAYzqB,CAAI,CAAE,CAChB,IAAI,CAAC,CAAC,CAAGA,EAAK,CAAC,CACf,IAAI,CAAC,CAAC,CAAGA,EAAK,CAAC,CACf,IAAI,CAAC,MAAM,CAAGA,EAAK,MAAM,AAC3B,CACA,YAAY/oC,CAAG,CAAEtkB,CAAM,CAAEqtD,CAAI,CAAE,CAC7B,GAAM,CAACx+D,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAEyH,OAAAA,CAAM,CAAC,CAAG,IAAI,CAG3B,OAFAsG,EAASA,GAAU,CAAC,MAAO,EAAG,IAAK,GAAG,EACtCskB,EAAI,GAAG,CAACz1B,EAAGoD,EAAGyH,EAAQsG,EAAO,GAAG,CAAEA,EAAO,KAAK,CAAE,IACzC,CAACqtD,EAAK,MAAM,AACrB,CACA,YAAY9vD,CAAK,CAAE,CACjB,GAAM,CAAC1O,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAEyH,OAAAA,CAAM,CAAC,CAAG,IAAI,CACrB0G,EAAQ7C,EAAM,KAAK,CACzB,MAAO,CACL,EAAG1O,EAAIO,KAAK,GAAG,CAACgR,GAAS1G,EACzB,EAAGzH,EAAI7C,KAAK,GAAG,CAACgR,GAAS1G,EACzB0G,MAAAA,CACF,CACF,CACF,CAgEA,SAAS23E,GAAUzzD,CAAG,CAAEle,CAAM,CAAE4rB,CAAI,EAClC,IAAMxmB,EAASwsE,AA/DjB,SAAoB5xE,CAAM,EACxB,GAAM,CAACktB,MAAAA,CAAK,CAAExxB,KAAAA,CAAI,CAAE9D,KAAAA,CAAI,CAAC,CAAGoI,EAC5B,GAAI,QAAetE,GACjB,OAAOm2E,AAcX,SAAwB3kD,CAAK,CAAE1iC,CAAK,EAClC,IAAMm9D,EAAOz6B,EAAM,cAAc,CAAC1iC,GAElC,OAAO8hB,AADSq7C,GAAQz6B,EAAM,gBAAgB,CAAC1iC,GAC9Bm9D,EAAK,OAAO,CAAG,IAClC,EAlB0Bz6B,EAAOxxB,GAE/B,GAAIA,AAAS,UAATA,EACF,OAAOo2E,AApGX,SAAyB9xE,CAAM,EAC7B,GAAM,CAAC5F,MAAAA,CAAK,CAAE5P,MAAAA,CAAK,CAAEoN,KAAAA,CAAI,CAAC,CAAGoI,EACvBrI,EAAS,EAAE,CACXu3E,EAAWt3E,EAAK,QAAQ,CACxBm6E,EAAen6E,EAAK,MAAM,CAC1Bo6E,EAAaC,AAUrB,SAAuB73E,CAAK,CAAE5P,CAAK,EACjC,IAAM0nF,EAAQ,EAAE,CACVnd,EAAQ36D,EAAM,uBAAuB,CAAC,QAC5C,IAAK,IAAItR,EAAI,EAAGA,EAAIisE,EAAM,MAAM,CAAEjsE,IAAK,CACrC,IAAM6+D,EAAOoN,CAAK,CAACjsE,EAAE,CACrB,GAAI6+D,EAAK,KAAK,GAAKn9D,EACjB,KAEE,EAACm9D,EAAK,MAAM,EACduqB,EAAM,OAAO,CAACvqB,EAAK,OAAO,CAE9B,CACA,OAAOuqB,CACT,EAvBmC93E,EAAO5P,GACxCwnF,EAAW,IAAI,CAACZ,GAAoB,CAAC,EAAG,KAAM,EAAGh3E,EAAM,MAAM,EAAGxC,IAChE,IAAK,IAAI9O,EAAI,EAAGA,EAAIomF,EAAS,MAAM,CAAEpmF,IAAK,CACxC,IAAM4iC,EAAUwjD,CAAQ,CAACpmF,EAAE,CAC3B,IAAK,IAAI6G,EAAI+7B,EAAQ,KAAK,CAAE/7B,GAAK+7B,EAAQ,GAAG,CAAE/7B,IAC5CwiF,AAmBN,UAAwBx6E,CAAM,CAAEy6E,CAAW,CAAEJ,CAAU,EACrD,IAAMK,EAAY,EAAE,CACpB,IAAK,IAAI1iF,EAAI,EAAGA,EAAIqiF,EAAW,MAAM,CAAEriF,IAAK,CAE1C,GAAM,CAACkW,MAAAA,CAAK,CAAElD,KAAAA,CAAI,CAAExL,MAAAA,CAAK,CAAC,CAAGm7E,AAejC,SAAmB16E,CAAI,CAAEw6E,CAAW,CAAE3tE,CAAQ,EAC5C,IAAMtN,EAAQS,EAAK,WAAW,CAACw6E,EAAa3tE,GAC5C,GAAI,CAACtN,EACH,MAAO,CAAC,EAEV,IAAMo7E,EAAap7E,CAAK,CAACsN,EAAS,CAC5ByqE,EAAWt3E,EAAK,QAAQ,CACxB45E,EAAa55E,EAAK,MAAM,CAC1BiO,EAAQ,GACRlD,EAAO,GACX,IAAK,IAAI7Z,EAAI,EAAGA,EAAIomF,EAAS,MAAM,CAAEpmF,IAAK,CACxC,IAAM4iC,EAAUwjD,CAAQ,CAACpmF,EAAE,CACrB0pF,EAAahB,CAAU,CAAC9lD,EAAQ,KAAK,CAAC,CAACjnB,EAAS,CAChDguE,EAAYjB,CAAU,CAAC9lD,EAAQ,GAAG,CAAC,CAACjnB,EAAS,CACnD,GAAI,SAAW8tE,EAAYC,EAAYC,GAAY,CACjD5sE,EAAQ0sE,IAAeC,EACvB7vE,EAAO4vE,IAAeE,EACtB,KACF,CACF,CACA,MAAO,CAAC5sE,MAAAA,EAAOlD,KAAAA,EAAMxL,MAAAA,CAAK,CAC5B,EArCiB66E,CAAU,CAACriF,EAAE,CACmByiF,EAAa,KAC1D,GAAI,EAACj7E,GAAU0O,CAAAA,CAAAA,IAASlD,CAAG,EAG3B,IAAIkD,EACFwsE,EAAU,OAAO,CAACl7E,QAGlB,GADAQ,EAAO,IAAI,CAACR,GACR,CAACwL,EACH,KAEJ,CACF,CACAhL,EAAO,IAAI,IAAI06E,EACjB,GArCqB16E,EAAQo6E,CAAY,CAACpiF,EAAE,CAAEqiF,EAE5C,CACA,OAAO,IAAIp6B,GAAY,CAACjgD,OAAAA,EAAQ,QAAS,CAAC,CAAC,EAC7C,EAsF2BqI,GAEzB,GAAItE,AAAS,UAATA,EACF,MAAO,GAET,IAAM21E,EAAWqB,AAWnB,SAAyB1yE,CAAM,QAE7B,AAAI5F,AADU4F,CAAAA,EAAO,KAAK,EAAI,CAAC,GACrB,wBAAwB,CACzB2yE,AAgBX,SAAiC3yE,CAAM,MApKdtE,EAAMtB,EAAO2yD,EAqKpC,IApKIriE,EAoKE,CAAC0P,MAAAA,CAAK,CAAEsB,KAAAA,CAAI,CAAC,CAAGsE,EAChB5E,EAAUhB,EAAM,OAAO,CACvB/C,EAAS+C,EAAM,SAAS,GAAG,MAAM,CACjCvP,EAAQuQ,EAAQ,OAAO,CAAGhB,EAAM,GAAG,CAAGA,EAAM,GAAG,CACrD,IAAM1P,GAzKiBgR,EAyKOA,EAzKDtB,EAyKOA,EAzKA2yD,EAyKOliE,EAtKzCH,EADEgR,AAAS,UAATA,EACMqxD,EACCrxD,AAAS,QAATA,EACDtB,EAAM,OAAO,CAAC,OAAO,CAAGA,EAAM,GAAG,CAAGA,EAAM,GAAG,CAC5C,QAASsB,GACVA,EAAK,KAAK,CAEVtB,EAAM,YAAY,IAiKtBgL,EAAS,EAAE,CACjB,GAAIhK,EAAQ,IAAI,CAAC,QAAQ,CAAE,CACzB,IAAM2X,EAAS3Y,EAAM,wBAAwB,CAAC,EAAGvP,GACjD,OAAO,IAAI6mF,GAAU,CACnB,EAAG3+D,EAAO,CAAC,CACX,EAAGA,EAAO,CAAC,CACX,OAAQ3Y,EAAM,6BAA6B,CAAC1P,EAC9C,EACF,CACA,IAAK,IAAI5B,EAAI,EAAGA,EAAIuO,EAAQ,EAAEvO,EAC5Bsc,EAAO,IAAI,CAAChL,EAAM,wBAAwB,CAACtR,EAAG4B,IAEhD,OAAO0a,CACT,EAnCmCpF,GAE1B4yE,AAET,SAA+B5yE,CAAM,MArKZtE,EAAMtB,EAsK7B,IArKIwyB,EAqKE,CAACxyB,MAAAA,EAAQ,CAAC,CAAC,CAAEsB,KAAAA,CAAI,CAAC,CAAGsE,EAC3B,IAAM4sB,GAvKiBlxB,EAuKOA,EAvKDtB,EAuKOA,EAtKhCwyB,EAAQ,KACRlxB,AAAS,UAATA,EACFkxB,EAAQxyB,EAAM,MAAM,CACXsB,AAAS,QAATA,EACTkxB,EAAQxyB,EAAM,GAAG,CACR,QAASsB,GAClBkxB,EAAQxyB,EAAM,gBAAgB,CAACsB,EAAK,KAAK,EAChCtB,EAAM,YAAY,EAC3BwyB,CAAAA,EAAQxyB,EAAM,YAAY,EAAC,EAEtBwyB,GA6JP,GAAI,QAAeA,GAAQ,CACzB,IAAMkhC,EAAa1zD,EAAM,YAAY,GACrC,MAAO,CACL,EAAG0zD,EAAalhC,EAAQ,KACxB,EAAGkhC,EAAa,KAAOlhC,CACzB,CACF,CACA,OAAO,IACT,EAb+B5sB,EAC/B,EAjBmCA,UACjC,AAAIqxE,aAAoBK,GACfL,EAEFD,GAAoBC,EAAUz5E,EACvC,EA+C4BoI,GACpB,CAACpI,KAAAA,CAAI,CAAEwC,MAAAA,CAAK,CAAEo0B,KAAAA,CAAI,CAAC,CAAGxuB,EACtB6yE,EAAWj7E,EAAK,OAAO,CACvBk7E,EAAaD,EAAS,IAAI,CAC1BnmD,EAAQmmD,EAAS,eAAe,CAChC,CAACE,MAAAA,EAAQrmD,CAAK,CAAEwlD,MAAAA,EAAQxlD,CAAK,CAAC,CAAGomD,GAAc,CAAC,EAClD1tE,GAAUxN,EAAK,MAAM,CAAC,MAAM,GAC9B,QAASsmB,EAAK0N,GACdonD,AAIJ,SAAgB90D,CAAG,CAAE6P,CAAG,EACtB,GAAM,CAACn2B,KAAAA,CAAI,CAAEwN,OAAAA,CAAM,CAAE2tE,MAAAA,CAAK,CAAEb,MAAAA,CAAK,CAAEtmD,KAAAA,CAAI,CAAExxB,MAAAA,CAAK,CAAC,CAAG2zB,EAC5CtpB,EAAW7M,EAAK,KAAK,CAAG,QAAUm2B,EAAI,IAAI,CAChD7P,EAAI,IAAI,GACS,MAAbzZ,GAAoBytE,IAAUa,IAChCE,GAAa/0D,EAAK9Y,EAAQwmB,EAAK,GAAG,EAClClwB,GAAKwiB,EAAK,CAACtmB,KAAAA,EAAMwN,OAAAA,EAAQ,MAAO2tE,EAAO34E,MAAAA,EAAOqK,SAAAA,CAAQ,GACtDyZ,EAAI,OAAO,GACXA,EAAI,IAAI,GACR+0D,GAAa/0D,EAAK9Y,EAAQwmB,EAAK,MAAM,GAEvClwB,GAAKwiB,EAAK,CAACtmB,KAAAA,EAAMwN,OAAAA,EAAQ,MAAO8sE,EAAO93E,MAAAA,EAAOqK,SAAAA,CAAQ,GACtDyZ,EAAI,OAAO,EACb,EAjBWA,EAAK,CAACtmB,KAAAA,EAAMwN,OAAAA,EAAQ2tE,MAAAA,EAAOb,MAAAA,EAAOtmD,KAAAA,EAAMxxB,MAAAA,EAAOo0B,KAAAA,CAAI,GAC1D,QAAWtQ,GAEf,CAeA,SAAS+0D,GAAa/0D,CAAG,CAAE9Y,CAAM,CAAEijC,CAAK,EACtC,GAAM,CAAC6mC,SAAAA,CAAQ,CAAEv3E,OAAAA,CAAM,CAAC,CAAGyN,EACvBS,EAAQ,GACRqtE,EAAW,GAEf,IAAK,IAAMxnD,KADXxN,EAAI,SAAS,GACSgxD,GAAU,CAC9B,GAAM,CAACrkF,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAC,CAAG8gC,EACfgnC,EAAa/6D,CAAM,CAAC9M,EAAM,CAC1BiZ,EAAYnM,CAAM,CAACu5E,GAAgBrmF,EAAOD,EAAK+M,GAAQ,CACzDkO,GACFqY,EAAI,MAAM,CAACw0C,EAAW,CAAC,CAAEA,EAAW,CAAC,EACrC7sD,EAAQ,KAERqY,EAAI,MAAM,CAACw0C,EAAW,CAAC,CAAErqB,GACzBnqB,EAAI,MAAM,CAACw0C,EAAW,CAAC,CAAEA,EAAW,CAAC,GAEvCwgB,CAAAA,EAAW,CAAC,CAAC9tE,EAAO,WAAW,CAAC8Y,EAAKwN,EAAS,CAAC,KAAMwnD,CAAQ,EAAC,EAE5Dh1D,EAAI,SAAS,GAEbA,EAAI,MAAM,CAACpa,EAAU,CAAC,CAAEukC,EAE5B,CACAnqB,EAAI,MAAM,CAAC9Y,EAAO,KAAK,GAAG,CAAC,CAAEijC,GAC7BnqB,EAAI,SAAS,GACbA,EAAI,IAAI,EACV,CACA,SAASxiB,GAAKwiB,CAAG,CAAE6P,CAAG,EACpB,GAAM,CAACn2B,KAAAA,CAAI,CAAEwN,OAAAA,CAAM,CAAEX,SAAAA,CAAQ,CAAEioB,MAAAA,CAAK,CAAEtyB,MAAAA,CAAK,CAAC,CAAG2zB,EAE/C,IAAK,GAAM,CAAC,OAAQ6yB,CAAG,CAAE,OAAQuyB,CAAG,CAAEtoF,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAC,GADhCwoF,AAlZnB,SAAmBx7E,CAAI,CAAEwN,CAAM,CAAEX,CAAQ,EACvC,IAAMyqE,EAAWt3E,EAAK,QAAQ,CACxBD,EAASC,EAAK,MAAM,CACpBy7E,EAAUjuE,EAAO,MAAM,CACvBpE,EAAQ,EAAE,CAChB,IAAK,IAAM0qB,KAAWwjD,EAAU,CAC9B,GAAI,CAACrkF,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAC,CAAG8gC,EACnB9gC,EAAMsmF,GAAgBrmF,EAAOD,EAAK+M,GAClC,IAAMiC,EAASq3E,GAAWxsE,EAAU9M,CAAM,CAAC9M,EAAM,CAAE8M,CAAM,CAAC/M,EAAI,CAAE8gC,EAAQ,IAAI,EAC5E,GAAI,CAACtmB,EAAO,QAAQ,CAAE,CACpBpE,EAAM,IAAI,CAAC,CACT,OAAQ0qB,EACR,OAAQ9xB,EACR,MAAOjC,CAAM,CAAC9M,EAAM,CACpB,IAAK8M,CAAM,CAAC/M,EAAI,AAClB,GACA,QACF,CAEA,IAAK,IAAMuoF,IADY,SAAe/tE,EAAQxL,GACZ,CAChC,IAAM05E,EAAYrC,GAAWxsE,EAAU4uE,CAAO,CAACF,EAAI,KAAK,CAAC,CAAEE,CAAO,CAACF,EAAI,GAAG,CAAC,CAAEA,EAAI,IAAI,EAErF,IAAK,IAAMI,IADS,SAAc7nD,EAAS/zB,EAAQ27E,GAEjDtyE,EAAM,IAAI,CAAC,CACT,OAAQuyE,EACR,OAAQJ,EACR,MAAO,CACL,CAAC1uE,EAAS,CAAE0sE,GAASv3E,EAAQ05E,EAAW,QAAStqF,KAAK,GAAG,CAC3D,EACA,IAAK,CACH,CAACyb,EAAS,CAAE0sE,GAASv3E,EAAQ05E,EAAW,MAAOtqF,KAAK,GAAG,CACzD,CACF,EAEJ,CACF,CACA,OAAOgY,CACT,EA6W6BpJ,EAAMwN,EAAQX,GACsB,KAQzDuhD,EAPJ,GAAM,CAAC,MAAO,CAACiV,gBAAAA,EAAkBvuC,CAAK,CAAC,CAAG,CAAC,CAAC,CAAC,CAAGk0B,EAC1C4yB,EAAWpuE,AAAW,KAAXA,EACjB8Y,EAAI,IAAI,GACRA,EAAI,SAAS,CAAG+8C,EAChBwY,AAqBJ,SAAoBv1D,CAAG,CAAE9jB,CAAK,CAAER,CAAM,EACpC,GAAM,CAAC+R,IAAAA,CAAG,CAAE3d,OAAAA,CAAM,CAAC,CAAGoM,EAAM,KAAK,CAAC,SAAS,CACrC,CAACqK,SAAAA,CAAQ,CAAE5Z,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAC,CAAGgP,GAAU,CAAC,CACzB,OAAb6K,IACFyZ,EAAI,SAAS,GACbA,EAAI,IAAI,CAACrzB,EAAO8gB,EAAK/gB,EAAMC,EAAOmD,EAAS2d,GAC3CuS,EAAI,IAAI,GAEZ,EA7BeA,EAAK9jB,EAAOo5E,GAAYvC,GAAWxsE,EAAU5Z,EAAOD,IAC/DszB,EAAI,SAAS,GACb,IAAMg1D,EAAW,CAAC,CAACt7E,EAAK,WAAW,CAACsmB,EAAK0iC,GAEzC,GAAI4yB,EAAU,CACRN,EACFh1D,EAAI,SAAS,GAEbw1D,GAAmBx1D,EAAK9Y,EAAQxa,EAAK6Z,GAEvC,IAAMkvE,EAAa,CAAC,CAACvuE,EAAO,WAAW,CAAC8Y,EAAKi1D,EAAK,CAAC,KAAMD,EAAU,QAAS,EAAI,EAE5E,EADJltB,CAAAA,EAAOktB,GAAYS,CAAS,GAE1BD,GAAmBx1D,EAAK9Y,EAAQva,EAAO4Z,EAE3C,CACAyZ,EAAI,SAAS,GACbA,EAAI,IAAI,CAAC8nC,EAAO,UAAY,WAC5B9nC,EAAI,OAAO,EACb,CACF,CAUA,SAASw1D,GAAmBx1D,CAAG,CAAE9Y,CAAM,CAAEjO,CAAK,CAAEsN,CAAQ,EACtD,IAAMmvE,EAAoBxuE,EAAO,WAAW,CAACjO,EAAOsN,GAChDmvE,GACF11D,EAAI,MAAM,CAAC01D,EAAkB,CAAC,CAAEA,EAAkB,CAAC,CAEvD,CA0EA,IAAMC,GAAa,CAACC,EAAW5wE,KAC7B,GAAI,CAAC6wE,UAAAA,EAAY7wE,CAAQ,CAAE8wE,SAAAA,EAAW9wE,CAAQ,CAAC,CAAG4wE,EAKlD,OAJIA,EAAU,aAAa,GACzBC,EAAY/qF,KAAK,GAAG,CAAC+qF,EAAW7wE,GAChC8wE,EAAWF,EAAU,eAAe,EAAI9qF,KAAK,GAAG,CAACgrF,EAAU9wE,IAEtD,CACL8wE,SAAAA,EACAD,UAAAA,EACA,WAAY/qF,KAAK,GAAG,CAACka,EAAU6wE,EACjC,CACF,EACME,GAAa,CAACjpF,EAAGC,IAAMD,AAAM,OAANA,GAAcC,AAAM,OAANA,GAAcD,EAAE,YAAY,GAAKC,EAAE,YAAY,EAAID,EAAE,KAAK,GAAKC,EAAE,KAAK,AACjH,OAAMipF,WAAe/mC,EACnB,YAAY5yC,CAAM,CAAE,CAClB,KAAK,GACL,IAAI,CAAC,MAAM,CAAG,GACd,IAAI,CAAC,cAAc,CAAG,EAAE,CACxB,IAAI,CAAC,YAAY,CAAG,KACpB,IAAI,CAAC,YAAY,CAAG,GACpB,IAAI,CAAC,KAAK,CAAGA,EAAO,KAAK,CACzB,IAAI,CAAC,OAAO,CAAGA,EAAO,OAAO,CAC7B,IAAI,CAAC,GAAG,CAAGA,EAAO,GAAG,CACrB,IAAI,CAAC,WAAW,CAAG9Q,KAAAA,EACnB,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,UAAU,CAAGA,KAAAA,EAClB,IAAI,CAAC,SAAS,CAAGA,KAAAA,EACjB,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,GAAG,CAAGA,KAAAA,EACX,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,IAAI,CAAGA,KAAAA,EACZ,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,QAAQ,CAAGA,KAAAA,CAClB,CACA,OAAO+X,CAAQ,CAAEwzD,CAAS,CAAEC,CAAO,CAAE,CACnC,IAAI,CAAC,QAAQ,CAAGzzD,EAChB,IAAI,CAAC,SAAS,CAAGwzD,EACjB,IAAI,CAAC,QAAQ,CAAGC,EAChB,IAAI,CAAC,aAAa,GAClB,IAAI,CAAC,WAAW,GAChB,IAAI,CAAC,GAAG,EACV,CACA,eAAgB,CACV,IAAI,CAAC,YAAY,IACnB,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,QAAQ,CAC1B,IAAI,CAAC,IAAI,CAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC9B,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,KAAK,GAEvB,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,SAAS,CAC5B,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAC5B,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,MAAM,CAE7B,CACA,aAAc,CACZ,IAAM6e,EAAY,IAAI,CAAC,OAAO,CAAC,MAAM,EAAI,CAAC,EACtCK,EAAc,QAASL,EAAU,cAAc,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAE,IAAI,GAAK,EAAE,AAC1EA,CAAAA,EAAU,MAAM,EAClBK,CAAAA,EAAcA,EAAY,MAAM,CAAC,AAAChvB,GAAS2uB,EAAU,MAAM,CAAC3uB,EAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAC,EAEhF2uB,EAAU,IAAI,EAChBK,CAAAA,EAAcA,EAAY,IAAI,CAAC,CAACnpF,EAAGC,IAAM6oF,EAAU,IAAI,CAAC9oF,EAAGC,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAC,EAE5E,IAAI,CAAC,OAAO,CAAC,OAAO,EACtBkpF,EAAY,OAAO,GAErB,IAAI,CAAC,WAAW,CAAGA,CACrB,CACA,KAAM,KAWAp4E,EAAO1R,EAVX,GAAM,CAAC+Q,QAAAA,CAAO,CAAE8iB,IAAAA,CAAG,CAAC,CAAG,IAAI,CAC3B,GAAI,CAAC9iB,EAAQ,OAAO,CAAE,CACpB,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,MAAM,CAAG,EAC3B,MACF,CACA,IAAM04E,EAAY14E,EAAQ,MAAM,CAC1Bg5E,EAAY,QAAON,EAAU,IAAI,EACjC5wE,EAAWkxE,EAAU,IAAI,CACzBld,EAAc,IAAI,CAAC,mBAAmB,GACtC,CAAC8c,SAAAA,CAAQ,CAAEK,WAAAA,CAAU,CAAC,CAAGR,GAAWC,EAAW5wE,EAErDgb,CAAAA,EAAI,IAAI,CAAGk2D,EAAU,MAAM,CACvB,IAAI,CAAC,YAAY,IACnBr4E,EAAQ,IAAI,CAAC,QAAQ,CACrB1R,EAAS,IAAI,CAAC,QAAQ,CAAC6sE,EAAah0D,EAAU8wE,EAAUK,GAAc,KAEtEhqF,EAAS,IAAI,CAAC,SAAS,CACvB0R,EAAQ,IAAI,CAAC,QAAQ,CAACm7D,EAAah0D,EAAU8wE,EAAUK,GAAc,IAEvE,IAAI,CAAC,KAAK,CAAGrrF,KAAK,GAAG,CAAC+S,EAAOX,EAAQ,QAAQ,EAAI,IAAI,CAAC,QAAQ,EAC9D,IAAI,CAAC,MAAM,CAAGpS,KAAK,GAAG,CAACqB,EAAQ+Q,EAAQ,SAAS,EAAI,IAAI,CAAC,SAAS,CACpE,CACA,SAAS87D,CAAW,CAAEh0D,CAAQ,CAAE8wE,CAAQ,CAAEK,CAAU,CAAE,CACpD,GAAM,CAACn2D,IAAAA,CAAG,CAAE1c,SAAAA,CAAQ,CAAE,QAAS,CAAC,OAAQ,CAACjO,QAAAA,CAAO,CAAC,CAAC,CAAC,CAAG,IAAI,CACpD+gF,EAAW,IAAI,CAAC,cAAc,CAAG,EAAE,CACnCC,EAAa,IAAI,CAAC,UAAU,CAAG,CAAC,EAAE,CAClCnzE,EAAaizE,EAAa9gF,EAC5BqP,EAAcs0D,CAClBh5C,CAAAA,EAAI,SAAS,CAAG,OAChBA,EAAI,YAAY,CAAG,SACnB,IAAIxtB,EAAM,GACNib,EAAM,CAACvK,EAYX,OAXA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAACywD,EAAY/oE,KACpC,IAAM0rF,EAAYR,EAAY9wE,EAAW,EAAKgb,EAAI,WAAW,CAAC2zC,EAAW,IAAI,EAAE,KAAK,CAChF/oE,CAAAA,AAAM,IAANA,GAAWyrF,CAAU,CAACA,EAAW,MAAM,CAAG,EAAE,CAAGC,EAAY,EAAIjhF,EAAUiO,CAAO,IAClFoB,GAAexB,EACfmzE,CAAU,CAACA,EAAW,MAAM,CAAIzrF,CAAAA,EAAI,EAAI,EAAI,GAAG,CAAG,EAClD6iB,GAAOvK,EACP1Q,KAEF4jF,CAAQ,CAACxrF,EAAE,CAAG,CAAC,KAAM,EAAG6iB,IAAAA,EAAKjb,IAAAA,EAAK,MAAO8jF,EAAW,OAAQH,CAAU,EACtEE,CAAU,CAACA,EAAW,MAAM,CAAG,EAAE,EAAIC,EAAYjhF,CACnD,GACOqP,CACT,CACA,SAASs0D,CAAW,CAAEh0D,CAAQ,CAAE8wE,CAAQ,CAAEK,CAAU,CAAE,CACpD,GAAM,CAACn2D,IAAAA,CAAG,CAAE82C,UAAAA,CAAS,CAAE,QAAS,CAAC,OAAQ,CAACzhE,QAAAA,CAAO,CAAC,CAAC,CAAC,CAAG,IAAI,CACrD+gF,EAAW,IAAI,CAAC,cAAc,CAAG,EAAE,CACnCG,EAAc,IAAI,CAAC,WAAW,CAAG,EAAE,CACnCC,EAAc1f,EAAYkC,EAC5Byd,EAAaphF,EACbqhF,EAAkB,EAClBC,EAAmB,EACnBzoF,EAAO,EACP0oF,EAAM,EAgBV,OAfA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAACjjB,EAAY/oE,KACpC,IAAM0rF,EAAYR,EAAY9wE,EAAW,EAAKgb,EAAI,WAAW,CAAC2zC,EAAW,IAAI,EAAE,KAAK,CAChF/oE,EAAI,GAAK+rF,EAAmBR,EAAa,EAAI9gF,EAAUmhF,IACzDC,GAAcC,EAAkBrhF,EAChCkhF,EAAY,IAAI,CAAC,CAAC,MAAOG,EAAiB,OAAQC,CAAgB,GAClEzoF,GAAQwoF,EAAkBrhF,EAC1BuhF,IACAF,EAAkBC,EAAmB,GAEvCP,CAAQ,CAACxrF,EAAE,CAAG,CAACsD,KAAAA,EAAM,IAAKyoF,EAAkBC,IAAAA,EAAK,MAAON,EAAW,OAAQH,CAAU,EACrFO,EAAkB5rF,KAAK,GAAG,CAAC4rF,EAAiBJ,GAC5CK,GAAoBR,EAAa9gF,CACnC,GACAohF,GAAcC,EACdH,EAAY,IAAI,CAAC,CAAC,MAAOG,EAAiB,OAAQC,CAAgB,GAC3DF,CACT,CACA,gBAAiB,CACf,GAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CACvB,OAEF,IAAMzd,EAAc,IAAI,CAAC,mBAAmB,GACtC,CAAC,eAAgBod,CAAQ,CAAE,QAAS,CAAC92E,MAAAA,CAAK,CAAE,OAAQ,CAACjK,QAAAA,CAAO,CAAC,CAAEwhF,IAAAA,CAAG,CAAC,CAAC,CAAG,IAAI,CAC3EC,EAAY,SAAcD,EAAK,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,KAAK,EAC1D,GAAI,IAAI,CAAC,YAAY,GAAI,CACvB,IAAIrkF,EAAM,EACNtE,EAAO,QAAeoR,EAAO,IAAI,CAAC,IAAI,CAAGjK,EAAS,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,UAAU,CAAC7C,EAAI,EACvF,IAAK,IAAMukF,KAAUX,EACf5jF,IAAQukF,EAAO,GAAG,GACpBvkF,EAAMukF,EAAO,GAAG,CAChB7oF,EAAO,QAAeoR,EAAO,IAAI,CAAC,IAAI,CAAGjK,EAAS,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,UAAU,CAAC7C,EAAI,GAErFukF,EAAO,GAAG,EAAI,IAAI,CAAC,GAAG,CAAG/d,EAAc3jE,EACvC0hF,EAAO,IAAI,CAAGD,EAAU,UAAU,CAACA,EAAU,CAAC,CAAC5oF,GAAO6oF,EAAO,KAAK,EAClE7oF,GAAQ6oF,EAAO,KAAK,CAAG1hF,CAE3B,KAAO,CACL,IAAIuhF,EAAM,EACNnpE,EAAM,QAAenO,EAAO,IAAI,CAAC,GAAG,CAAG05D,EAAc3jE,EAAS,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,WAAW,CAACuhF,EAAI,CAAC,MAAM,EAC5G,IAAK,IAAMG,KAAUX,EACfW,EAAO,GAAG,GAAKH,IACjBA,EAAMG,EAAO,GAAG,CAChBtpE,EAAM,QAAenO,EAAO,IAAI,CAAC,GAAG,CAAG05D,EAAc3jE,EAAS,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,WAAW,CAACuhF,EAAI,CAAC,MAAM,GAE1GG,EAAO,GAAG,CAAGtpE,EACbspE,EAAO,IAAI,EAAI,IAAI,CAAC,IAAI,CAAG1hF,EAC3B0hF,EAAO,IAAI,CAAGD,EAAU,UAAU,CAACA,EAAU,CAAC,CAACC,EAAO,IAAI,EAAGA,EAAO,KAAK,EACzEtpE,GAAOspE,EAAO,MAAM,CAAG1hF,CAE3B,CACF,CACA,cAAe,CACb,MAAO,AAA0B,QAA1B,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAc,AAA0B,WAA1B,IAAI,CAAC,OAAO,CAAC,QAAQ,AACjE,CACA,MAAO,CACL,GAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAE,CACxB,IAAM2qB,EAAM,IAAI,CAAC,GAAG,CACpB,QAASA,EAAK,IAAI,EAClB,IAAI,CAAC,KAAK,GACV,QAAWA,EACb,CACF,CACA,OAAQ,KASFg3D,EARJ,GAAM,CAAC,QAASjuB,CAAI,CAAEwtB,YAAAA,CAAW,CAAEF,WAAAA,CAAU,CAAEr2D,IAAAA,CAAG,CAAC,CAAG,IAAI,CACpD,CAAC1gB,MAAAA,CAAK,CAAE,OAAQs2E,CAAS,CAAC,CAAG7sB,EAC7B5tD,EAAe,SAAc,CAC7B27E,EAAY,SAAc/tB,EAAK,GAAG,CAAE,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,KAAK,EACzDmtB,EAAY,QAAON,EAAU,IAAI,EACjC,CAAC,MAAOqB,CAAS,CAAE5hF,QAAAA,CAAO,CAAC,CAAGugF,EAC9B5wE,EAAWkxE,EAAU,IAAI,CACzBgB,EAAelyE,EAAW,EAEhC,IAAI,CAAC,SAAS,GACdgb,EAAI,SAAS,CAAG82D,EAAU,SAAS,CAAC,QACpC92D,EAAI,YAAY,CAAG,SACnBA,EAAI,SAAS,CAAG,GAChBA,EAAI,IAAI,CAAGk2D,EAAU,MAAM,CAC3B,GAAM,CAACJ,SAAAA,CAAQ,CAAED,UAAAA,CAAS,CAAEM,WAAAA,CAAU,CAAC,CAAGR,GAAWC,EAAW5wE,GAC1DmyE,EAAgB,SAAS5sF,CAAC,CAAEoD,CAAC,CAAEgmE,CAAU,EAC7C,GAAI7wB,MAAMgzC,IAAaA,GAAY,GAAKhzC,MAAM+yC,IAAcA,EAAY,EACtE,OAEF71D,EAAI,IAAI,GACR,IAAM07C,EAAY,QAAe/H,EAAW,SAAS,CAAE,GAQvD,GAPA3zC,EAAI,SAAS,CAAG,QAAe2zC,EAAW,SAAS,CAAEx4D,GACrD6kB,EAAI,OAAO,CAAG,QAAe2zC,EAAW,OAAO,CAAE,QACjD3zC,EAAI,cAAc,CAAG,QAAe2zC,EAAW,cAAc,CAAE,GAC/D3zC,EAAI,QAAQ,CAAG,QAAe2zC,EAAW,QAAQ,CAAE,SACnD3zC,EAAI,SAAS,CAAG07C,EAChB17C,EAAI,WAAW,CAAG,QAAe2zC,EAAW,WAAW,CAAEx4D,GACzD6kB,EAAI,WAAW,CAAC,QAAe2zC,EAAW,QAAQ,CAAE,EAAE,GAClDiiB,EAAU,aAAa,CAAE,CAC3B,IAAMwB,EAAc,CAClB,OAAQvB,EAAY/qF,KAAK,KAAK,CAAG,EACjC,WAAY6oE,EAAW,UAAU,CACjC,SAAUA,EAAW,QAAQ,CAC7B,YAAa+H,CACf,EACMvnC,EAAU2iD,EAAU,KAAK,CAACvsF,EAAGurF,EAAW,GAE9C,SAAgB91D,EAAKo3D,EAAajjD,EADlBxmC,EAAIupF,EACgCtB,EAAU,eAAe,EAAIE,EACnF,KAAO,CACL,IAAMuB,EAAU1pF,EAAI7C,KAAK,GAAG,CAAC,AAACka,CAAAA,EAAW6wE,CAAQ,EAAK,EAAG,GACnDyB,EAAWR,EAAU,UAAU,CAACvsF,EAAGurF,GACnCpzE,EAAe,SAAcixD,EAAW,YAAY,EAC1D3zC,EAAI,SAAS,GACTxwB,OAAO,MAAM,CAACkT,GAAc,IAAI,CAACrT,GAAKA,AAAM,IAANA,GACxC,SAAmB2wB,EAAK,CACtB,EAAGs3D,EACH,EAAGD,EACH,EAAGvB,EACH,EAAGD,EACH,OAAQnzE,CACV,GAEAsd,EAAI,IAAI,CAACs3D,EAAUD,EAASvB,EAAUD,GAExC71D,EAAI,IAAI,GACU,IAAd07C,GACF17C,EAAI,MAAM,EAEd,CACAA,EAAI,OAAO,EACb,EACMu3D,EAAW,SAAShtF,CAAC,CAAEoD,CAAC,CAAEgmE,CAAU,EACxC,QAAW3zC,EAAK2zC,EAAW,IAAI,CAAEppE,EAAGoD,EAAKwoF,EAAa,EAAID,EAAW,CACnE,cAAeviB,EAAW,MAAM,CAChC,UAAWmjB,EAAU,SAAS,CAACnjB,EAAW,SAAS,CACrD,EACF,EACMoF,EAAe,IAAI,CAAC,YAAY,GAChCC,EAAc,IAAI,CAAC,mBAAmB,GAE1Cge,EADEje,EACO,CACP,EAAG,QAAez5D,EAAO,IAAI,CAAC,IAAI,CAAGjK,EAAS,IAAI,CAAC,KAAK,CAAGghF,CAAU,CAAC,EAAE,EACxE,EAAG,IAAI,CAAC,GAAG,CAAGhhF,EAAU2jE,EACxB,KAAM,CACR,EAES,CACP,EAAG,IAAI,CAAC,IAAI,CAAG3jE,EACf,EAAG,QAAeiK,EAAO,IAAI,CAAC,GAAG,CAAG05D,EAAc3jE,EAAS,IAAI,CAAC,MAAM,CAAGkhF,CAAW,CAAC,EAAE,CAAC,MAAM,EAC9F,KAAM,CACR,EAEF,SAAsB,IAAI,CAAC,GAAG,CAAExtB,EAAK,aAAa,EAClD,IAAM7lD,EAAaizE,EAAa9gF,EAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAACs+D,EAAY/oE,KACpCo1B,EAAI,WAAW,CAAG2zC,EAAW,SAAS,EAAIsjB,EAC1Cj3D,EAAI,SAAS,CAAG2zC,EAAW,SAAS,EAAIsjB,EACxC,IAAM73B,EAAYp/B,EAAI,WAAW,CAAC2zC,EAAW,IAAI,EAAE,KAAK,CAClDyI,EAAY0a,EAAU,SAAS,CAACnjB,EAAW,SAAS,EAAKA,CAAAA,EAAW,SAAS,CAAGiiB,EAAU,SAAS,AAAD,GAClG/3E,EAAQi4E,EAAWoB,EAAe93B,EACpC70D,EAAIysF,EAAO,CAAC,CACZrpF,EAAIqpF,EAAO,CAAC,CAChBF,EAAU,QAAQ,CAAC,IAAI,CAAC,KAAK,EACzB/d,EACEnuE,EAAI,GAAKL,EAAIsT,EAAQxI,EAAU,IAAI,CAAC,KAAK,GAC3C1H,EAAIqpF,EAAO,CAAC,EAAI9zE,EAChB8zE,EAAO,IAAI,GACXzsF,EAAIysF,EAAO,CAAC,CAAG,QAAe13E,EAAO,IAAI,CAAC,IAAI,CAAGjK,EAAS,IAAI,CAAC,KAAK,CAAGghF,CAAU,CAACW,EAAO,IAAI,CAAC,GAEvFpsF,EAAI,GAAK+C,EAAIuV,EAAa,IAAI,CAAC,MAAM,GAC9C3Y,EAAIysF,EAAO,CAAC,CAAGzsF,EAAIgsF,CAAW,CAACS,EAAO,IAAI,CAAC,CAAC,KAAK,CAAG3hF,EACpD2hF,EAAO,IAAI,GACXrpF,EAAIqpF,EAAO,CAAC,CAAG,QAAe13E,EAAO,IAAI,CAAC,GAAG,CAAG05D,EAAc3jE,EAAS,IAAI,CAAC,MAAM,CAAGkhF,CAAW,CAACS,EAAO,IAAI,CAAC,CAAC,MAAM,GAGtHG,EADcL,EAAU,CAAC,CAACvsF,GACLoD,EAAGgmE,GACxBppE,EAAI,SAAO6xE,EAAW7xE,EAAIurF,EAAWoB,EAAcne,EAAexuE,EAAIsT,EAAQ,IAAI,CAAC,KAAK,CAAEkrD,EAAK,GAAG,EAClGwuB,EAAST,EAAU,CAAC,CAACvsF,GAAIoD,EAAGgmE,GACxBoF,EACFie,EAAO,CAAC,EAAIn5E,EAAQxI,EAEpB2hF,EAAO,CAAC,EAAI9zE,CAEhB,GACA,SAAqB,IAAI,CAAC,GAAG,CAAE6lD,EAAK,aAAa,CACnD,CACA,WAAY,KAaNp7D,EAZJ,IAAMo7D,EAAO,IAAI,CAAC,OAAO,CACnB8P,EAAY9P,EAAK,KAAK,CACtByuB,EAAY,QAAO3e,EAAU,IAAI,EACjC4e,EAAe,QAAU5e,EAAU,OAAO,EAChD,GAAI,CAACA,EAAU,OAAO,CACpB,OAEF,IAAMie,EAAY,SAAc/tB,EAAK,GAAG,CAAE,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,KAAK,EACzD/oC,EAAM,IAAI,CAAC,GAAG,CACdnY,EAAWgxD,EAAU,QAAQ,CAC7Bqe,EAAeM,EAAU,IAAI,CAAG,EAChCE,EAA6BD,EAAa,GAAG,CAAGP,EAElDhpF,EAAO,IAAI,CAAC,IAAI,CAChBoV,EAAW,IAAI,CAAC,KAAK,CACzB,GAAI,IAAI,CAAC,YAAY,GACnBA,EAAWxY,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,EACtC6C,EAAI,IAAI,CAAC,GAAG,CAAG+pF,EACfxpF,EAAO,QAAe66D,EAAK,KAAK,CAAE76D,EAAM,IAAI,CAAC,KAAK,CAAGoV,OAChD,CACL,IAAMwzD,EAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC5X,EAAKz3C,IAAS3c,KAAK,GAAG,CAACo0D,EAAKz3C,EAAK,MAAM,EAAG,GACrF9Z,EAAI+pF,EAA6B,QAAe3uB,EAAK,KAAK,CAAE,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,MAAM,CAAG+N,EAAY/N,EAAK,MAAM,CAAC,OAAO,CAAG,IAAI,CAAC,mBAAmB,GAChJ,CACA,IAAMx+D,EAAI,QAAesd,EAAU3Z,EAAMA,EAAOoV,EAChD0c,CAAAA,EAAI,SAAS,CAAG82D,EAAU,SAAS,CAAC,QAAmBjvE,IACvDmY,EAAI,YAAY,CAAG,SACnBA,EAAI,WAAW,CAAG64C,EAAU,KAAK,CACjC74C,EAAI,SAAS,CAAG64C,EAAU,KAAK,CAC/B74C,EAAI,IAAI,CAAGw3D,EAAU,MAAM,CAC3B,QAAWx3D,EAAK64C,EAAU,IAAI,CAAEtuE,EAAGoD,EAAG6pF,EACxC,CACA,qBAAsB,CACpB,IAAM3e,EAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAC9B2e,EAAY,QAAO3e,EAAU,IAAI,EACjC4e,EAAe,QAAU5e,EAAU,OAAO,EAChD,OAAOA,EAAU,OAAO,CAAG2e,EAAU,UAAU,CAAGC,EAAa,MAAM,CAAG,CAC1E,CACA,iBAAiBltF,CAAC,CAAEoD,CAAC,CAAE,CACrB,IAAI/C,EAAG+sF,EAAQC,EACf,GAAI,SAAWrtF,EAAG,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,KAAK,GAClC,SAAWoD,EAAG,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,MAAM,EAEtC,KAAK/C,EAAI,EADTgtF,EAAK,IAAI,CAAC,cAAc,CACZhtF,EAAIgtF,EAAG,MAAM,CAAE,EAAEhtF,EAE3B,GADA+sF,EAASC,CAAE,CAAChtF,EAAE,CACV,SAAWL,EAAGotF,EAAO,IAAI,CAAEA,EAAO,IAAI,CAAGA,EAAO,KAAK,GACpD,SAAWhqF,EAAGgqF,EAAO,GAAG,CAAEA,EAAO,GAAG,CAAGA,EAAO,MAAM,EACvD,OAAO,IAAI,CAAC,WAAW,CAAC/sF,EAAE,AAE9B,CAEF,OAAO,IACT,CACA,YAAYgI,CAAC,CAAE,CACb,IAAMm2D,EAAO,IAAI,CAAC,OAAO,CACzB,GAAI,CAAC8uB,AAmBT,SAAoB7/E,CAAI,CAAE+wD,CAAI,QAC5B,AAAK/wD,CAAAA,AAAS,cAATA,GAAwBA,AAAS,aAATA,CAAkB,GAAO+wD,CAAAA,EAAAA,EAAK,OAAO,IAAIA,EAAK,OAAO,AAAD,GAG7EA,EAAAA,EAAK,OAAO,EAAK/wD,CAAAA,AAAS,UAATA,GAAoBA,AAAS,YAATA,CAAiB,GAGnD,EACT,EA3BoBpF,EAAE,IAAI,CAAEm2D,GACtB,OAEF,IAAM+uB,EAAc,IAAI,CAAC,gBAAgB,CAACllF,EAAE,CAAC,CAAEA,EAAE,CAAC,EAClD,GAAIA,AAAW,cAAXA,EAAE,IAAI,EAAoBA,AAAW,aAAXA,EAAE,IAAI,CAAiB,CACnD,IAAMqgC,EAAW,IAAI,CAAC,YAAY,CAC5B8kD,EAAWhC,GAAW9iD,EAAU6kD,GAClC7kD,GAAY,CAAC8kD,GACf,QAAShvB,EAAK,OAAO,CAAE,CAACn2D,EAAGqgC,EAAU,IAAI,CAAC,CAAE,IAAI,EAElD,IAAI,CAAC,YAAY,CAAG6kD,EAChBA,GAAe,CAACC,GAClB,QAAShvB,EAAK,OAAO,CAAE,CAACn2D,EAAGklF,EAAa,IAAI,CAAC,CAAE,IAAI,CAEvD,MAAWA,GACT,QAAS/uB,EAAK,OAAO,CAAE,CAACn2D,EAAGklF,EAAa,IAAI,CAAC,CAAE,IAAI,CAEvD,CACF,CAsGA,MAAME,WAAc/oC,EAClB,YAAY5yC,CAAM,CAAE,CAClB,KAAK,GACL,IAAI,CAAC,KAAK,CAAGA,EAAO,KAAK,CACzB,IAAI,CAAC,OAAO,CAAGA,EAAO,OAAO,CAC7B,IAAI,CAAC,GAAG,CAAGA,EAAO,GAAG,CACrB,IAAI,CAAC,QAAQ,CAAG9Q,KAAAA,EAChB,IAAI,CAAC,GAAG,CAAGA,KAAAA,EACX,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,IAAI,CAAGA,KAAAA,EACZ,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,QAAQ,CAAGA,KAAAA,CAClB,CACA,OAAO+X,CAAQ,CAAEwzD,CAAS,CAAE,CAC1B,IAAM/N,EAAO,IAAI,CAAC,OAAO,CAGzB,GAFA,IAAI,CAAC,IAAI,CAAG,EACZ,IAAI,CAAC,GAAG,CAAG,EACP,CAACA,EAAK,OAAO,CAAE,CACjB,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,MAAM,CAAG,EACtD,MACF,CACA,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,KAAK,CAAGzlD,EAC1B,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,MAAM,CAAGwzD,EAC5B,IAAMuF,EAAY,QAAQtT,EAAK,IAAI,EAAIA,EAAK,IAAI,CAAC,MAAM,CAAG,CAC1D,KAAI,CAAC,QAAQ,CAAG,QAAUA,EAAK,OAAO,EACtC,IAAMp1B,EAAW0oC,EAAY,QAAOtT,EAAK,IAAI,EAAE,UAAU,CAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC5E,IAAI,CAAC,YAAY,GACnB,IAAI,CAAC,MAAM,CAAGp1B,EAEd,IAAI,CAAC,KAAK,CAAGA,CAEjB,CACA,cAAe,CACb,IAAMkuC,EAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CACjC,MAAOA,AAAQ,QAARA,GAAiBA,AAAQ,WAARA,CAC1B,CACA,UAAU/jE,CAAM,CAAE,KAIZwF,EAAU25D,EAAQC,EAHtB,GAAM,CAACzvD,IAAAA,CAAG,CAAEvf,KAAAA,CAAI,CAAE4B,OAAAA,CAAM,CAAE1B,MAAAA,CAAK,CAAE8O,QAAAA,CAAO,CAAC,CAAG,IAAI,CAC1CoC,EAAQpC,EAAQ,KAAK,CACvB2zB,EAAW,EAkBf,OAhBI,IAAI,CAAC,YAAY,IACnBosC,EAAS,QAAe39D,EAAOpR,EAAME,GACrC8uE,EAASzvD,EAAM3P,EACfwF,EAAWlV,EAAQF,IAEfgP,AAAqB,SAArBA,EAAQ,QAAQ,EAClB+/D,EAAS/uE,EAAO4P,EAChBo/D,EAAS,QAAe59D,EAAOxP,EAAQ2d,GACvCojB,EAAW,AAAK,IAAL,GAAE,GAEbosC,EAAS7uE,EAAQ0P,EACjBo/D,EAAS,QAAe59D,EAAOmO,EAAK3d,GACpC+gC,EAAW,AAAK,GAAL,GAAE,EAEfvtB,EAAWxT,EAAS2d,GAEf,CAACwvD,OAAAA,EAAQC,OAAAA,EAAQ55D,SAAAA,EAAUutB,SAAAA,CAAQ,CAC5C,CACA,MAAO,CACL,IAAM7Q,EAAM,IAAI,CAAC,GAAG,CACd+oC,EAAO,IAAI,CAAC,OAAO,CACzB,GAAI,CAACA,EAAK,OAAO,CACf,OAEF,IAAMkvB,EAAW,QAAOlvB,EAAK,IAAI,EAE3BjrD,EAASoF,AADI+0E,EAAS,UAAU,CACV,EAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAC3C,CAAChb,OAAAA,CAAM,CAAEC,OAAAA,CAAM,CAAE55D,SAAAA,CAAQ,CAAEutB,SAAAA,CAAQ,CAAC,CAAG,IAAI,CAAC,SAAS,CAAC/yB,GAC5D,QAAWkiB,EAAK+oC,EAAK,IAAI,CAAE,EAAG,EAAGkvB,EAAU,CACzC,MAAOlvB,EAAK,KAAK,CACjBzlD,SAAAA,EACAutB,SAAAA,EACA,UAAW,QAAmBk4B,EAAK,KAAK,EACxC,aAAc,SACd,YAAa,CAACkU,EAAQC,EAAO,AAC/B,EACF,CACF,CAgDA,IAAMtnD,GAAM,IAAIsiE,QA2CVnqD,GAAc,CAClB,QAAQtB,CAAK,MAIP7hC,EAAGy9C,EAHP,GAAI,CAAC5b,EAAM,MAAM,CACf,MAAO,GAGT,IAAIliC,EAAI,EACJoD,EAAI,EACJ3C,EAAQ,EACZ,IAAKJ,EAAI,EAAGy9C,EAAM5b,EAAM,MAAM,CAAE7hC,EAAIy9C,EAAK,EAAEz9C,EAAG,CAC5C,IAAM8jB,EAAK+d,CAAK,CAAC7hC,EAAE,CAAC,OAAO,CAC3B,GAAI8jB,GAAMA,EAAG,QAAQ,GAAI,CACvB,IAAMmzD,EAAMnzD,EAAG,eAAe,GAC9BnkB,GAAKs3E,EAAI,CAAC,CACVl0E,GAAKk0E,EAAI,CAAC,CACV,EAAE72E,CACJ,CACF,CACA,MAAO,CACL,EAAGT,EAAIS,EACP,EAAG2C,EAAI3C,CACT,CACF,EACA,QAAQyhC,CAAK,CAAE0rD,CAAa,MAOtBvtF,EAAGy9C,EAAK+vC,EANZ,GAAI,CAAC3rD,EAAM,MAAM,CACf,MAAO,GAET,IAAIliC,EAAI4tF,EAAc,CAAC,CACnBxqF,EAAIwqF,EAAc,CAAC,CACnB7X,EAActwC,OAAO,iBAAiB,CAE1C,IAAKplC,EAAI,EAAGy9C,EAAM5b,EAAM,MAAM,CAAE7hC,EAAIy9C,EAAK,EAAEz9C,EAAG,CAC5C,IAAM8jB,EAAK+d,CAAK,CAAC7hC,EAAE,CAAC,OAAO,CAC3B,GAAI8jB,GAAMA,EAAG,QAAQ,GAAI,CACvB,IAAMmG,EAASnG,EAAG,cAAc,GAC1BziB,EAAI,SAAsBksF,EAAetjE,GAC3C5oB,EAAIq0E,IACNA,EAAcr0E,EACdmsF,EAAiB1pE,EAErB,CACF,CACA,GAAI0pE,EAAgB,CAClB,IAAMC,EAAKD,EAAe,eAAe,GACzC7tF,EAAI8tF,EAAG,CAAC,CACR1qF,EAAI0qF,EAAG,CAAC,AACV,CACA,MAAO,CACL9tF,EAAAA,EACAoD,EAAAA,CACF,CACF,CACF,EACA,SAAS2qF,GAAaj8C,CAAI,CAAEk8C,CAAM,EAQhC,OAPIA,IACE,QAAQA,GACV/tF,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC6xC,EAAMk8C,GAEjCl8C,EAAK,IAAI,CAACk8C,IAGPl8C,CACT,CACA,SAASm8C,GAAcj7E,CAAG,QACxB,AAAI,AAAC,CAAe,UAAf,OAAOA,GAAoBA,aAAe5D,MAAK,GAAM4D,EAAI,OAAO,CAAC,MAAQ,GACrEA,EAAI,KAAK,CAAC,MAEZA,CACT,CAiBA,SAASk7E,GAAeC,CAAO,CAAEx7E,CAAO,EACtC,IAAM8iB,EAAM04D,EAAQ,KAAK,CAAC,GAAG,CACvB,CAAC70D,KAAAA,CAAI,CAAE80D,OAAAA,CAAM,CAAEzoE,MAAAA,CAAK,CAAC,CAAGwoE,EACxB,CAAC5C,SAAAA,CAAQ,CAAED,UAAAA,CAAS,CAAC,CAAG34E,EACxB07E,EAAW,QAAO17E,EAAQ,QAAQ,EAClCs6E,EAAY,QAAOt6E,EAAQ,SAAS,EACpC27E,EAAa,QAAO37E,EAAQ,UAAU,EACtC47E,EAAiB5oE,EAAM,MAAM,CAC7B6oE,EAAkBJ,EAAO,MAAM,CAC/BK,EAAoBn1D,EAAK,MAAM,CAC/BxuB,EAAU,QAAU6H,EAAQ,OAAO,EACrC/Q,EAASkJ,EAAQ,MAAM,CACvBwI,EAAQ,EACRo7E,EAAqBp1D,EAAK,MAAM,CAAC,CAAC74B,EAAOkuF,IAAaluF,EAAQkuF,EAAS,MAAM,CAAC,MAAM,CAAGA,EAAS,KAAK,CAAC,MAAM,CAAGA,EAAS,KAAK,CAAC,MAAM,CAAE,GAC1ID,GAAsBP,EAAQ,UAAU,CAAC,MAAM,CAAGA,EAAQ,SAAS,CAAC,MAAM,CACtEI,GACF3sF,CAAAA,GAAU2sF,EAAiBtB,EAAU,UAAU,CAC9C,AAACsB,CAAAA,EAAiB,GAAK57E,EAAQ,YAAY,CAC3CA,EAAQ,iBAAiB,AAAD,EAEvB+7E,GAEF9sF,CAAAA,GAAU6sF,EADa97E,CAAAA,EAAQ,aAAa,CAAGpS,KAAK,GAAG,CAAC+qF,EAAW+C,EAAS,UAAU,EAAIA,EAAS,UAAU,AAAD,EAE3G,AAACK,CAAAA,EAAqBD,CAAgB,EAAKJ,EAAS,UAAU,CAC9D,AAACK,CAAAA,EAAqB,GAAK/7E,EAAQ,WAAW,AAAD,EAE5C67E,GACF5sF,CAAAA,GAAU+Q,EAAQ,eAAe,CAChC67E,EAAkBF,EAAW,UAAU,CACvC,AAACE,CAAAA,EAAkB,GAAK77E,EAAQ,aAAa,AAAD,EAE/C,IAAIi8E,EAAe,EACbv0E,EAAe,SAASlL,CAAI,EAChCmE,EAAQ/S,KAAK,GAAG,CAAC+S,EAAOmiB,EAAI,WAAW,CAACtmB,GAAM,KAAK,CAAGy/E,EACxD,EAiBA,OAhBAn5D,EAAI,IAAI,GACRA,EAAI,IAAI,CAAGw3D,EAAU,MAAM,CAC3B,QAAKkB,EAAQ,KAAK,CAAE9zE,GACpBob,EAAI,IAAI,CAAG44D,EAAS,MAAM,CAC1B,QAAKF,EAAQ,UAAU,CAAC,MAAM,CAACA,EAAQ,SAAS,EAAG9zE,GACnDu0E,EAAej8E,EAAQ,aAAa,CAAI44E,EAAW,EAAI54E,EAAQ,UAAU,CAAI,EAC7E,QAAK2mB,EAAM,AAACq1D,IACV,QAAKA,EAAS,MAAM,CAAEt0E,GACtB,QAAKs0E,EAAS,KAAK,CAAEt0E,GACrB,QAAKs0E,EAAS,KAAK,CAAEt0E,EACvB,GACAu0E,EAAe,EACfn5D,EAAI,IAAI,CAAG64D,EAAW,MAAM,CAC5B,QAAKH,EAAQ,MAAM,CAAE9zE,GACrBob,EAAI,OAAO,GAEJ,CAACniB,MADRA,GAASxI,EAAQ,KAAK,CACPlJ,OAAAA,CAAM,CACvB,CAoCA,SAASitF,GAAmBpqD,CAAK,CAAE9xB,CAAO,CAAEuK,CAAI,EAC9C,IAAM4xE,EAAS5xE,EAAK,MAAM,EAAIvK,EAAQ,MAAM,EAAIo8E,AApClD,SAAyBtqD,CAAK,CAAEvnB,CAAI,EAClC,GAAM,CAAC9Z,EAAAA,CAAC,CAAExB,OAAAA,CAAM,CAAC,CAAGsb,SACpB,AAAI9Z,EAAIxB,EAAS,EACR,MACEwB,EAAKqhC,EAAM,MAAM,CAAG7iC,EAAS,EAC/B,SAEF,QACT,EA4BkE6iC,EAAOvnB,GACvE,MAAO,CACL,OAAQA,EAAK,MAAM,EAAIvK,EAAQ,MAAM,EAAIq8E,AAnB7C,SAAyBvqD,CAAK,CAAE9xB,CAAO,CAAEuK,CAAI,CAAE4xE,CAAM,EACnD,GAAM,CAAC9uF,EAAAA,CAAC,CAAEsT,MAAAA,CAAK,CAAC,CAAG4J,EACb,CAAC,MAAO+xE,CAAU,CAAE,UAAW,CAACtrF,KAAAA,CAAI,CAAEE,MAAAA,CAAK,CAAC,CAAC,CAAG4gC,EAClDyqD,EAAS,SAWb,MAVIJ,AAAW,WAAXA,EACFI,EAASlvF,GAAK,AAAC2D,CAAAA,EAAOE,CAAI,EAAK,EAAI,OAAS,QACnC7D,GAAKsT,EAAQ,EACtB47E,EAAS,OACAlvF,GAAKivF,EAAa37E,EAAQ,GACnC47E,CAAAA,EAAS,OAAM,EAEbC,AArBN,SAA6BD,CAAM,CAAEzqD,CAAK,CAAE9xB,CAAO,CAAEuK,CAAI,EACvD,GAAM,CAACld,EAAAA,CAAC,CAAEsT,MAAAA,CAAK,CAAC,CAAG4J,EACbkyE,EAAQz8E,EAAQ,SAAS,CAAGA,EAAQ,YAAY,CACtD,GAAe,SAAXu8E,GAAqBlvF,EAAIsT,EAAQ87E,EAAQ3qD,EAAM,KAAK,EAGpDyqD,AAAW,UAAXA,GAAsBlvF,EAAIsT,EAAQ87E,EAAQ,EAF5C,MAAO,EAKX,EAY0BF,EAAQzqD,EAAO9xB,EAASuK,IAC9CgyE,CAAAA,EAAS,QAAO,EAEXA,CACT,EAI6DzqD,EAAO9xB,EAASuK,EAAM4xE,GAC/EA,OAAAA,CACF,CACF,CAqBA,SAASO,GAAmB18E,CAAO,CAAEuK,CAAI,CAAEoyE,CAAS,CAAE7qD,CAAK,EACzD,GAAM,CAAC8qD,UAAAA,CAAS,CAAEC,aAAAA,CAAY,CAAEjgF,aAAAA,CAAY,CAAC,CAAGoD,EAC1C,CAACu8E,OAAAA,CAAM,CAAEJ,OAAAA,CAAM,CAAC,CAAGQ,EACnBG,EAAiBF,EAAYC,EAC7B,CAACE,QAAAA,CAAO,CAAEC,SAAAA,CAAQ,CAAEC,WAAAA,CAAU,CAAEC,YAAAA,CAAW,CAAC,CAAG,SAActgF,GAC/DvP,EAAI8vF,AAzBV,SAAgB5yE,CAAI,CAAEgyE,CAAM,EAC1B,GAAI,CAAClvF,EAAAA,CAAC,CAAEsT,MAAAA,CAAK,CAAC,CAAG4J,EAMjB,MALIgyE,AAAW,UAAXA,EACFlvF,GAAKsT,EACe,WAAX47E,GACTlvF,CAAAA,GAAMsT,EAAQ,CAAC,EAEVtT,CACT,EAiBiBkd,EAAMgyE,GACf9rF,EAAI2sF,AAjBZ,SAAgB7yE,CAAI,CAAE4xE,CAAM,CAAEW,CAAc,EAC1C,GAAI,CAACrsF,EAAAA,CAAC,CAAExB,OAAAA,CAAM,CAAC,CAAGsb,EAQlB,MAPI4xE,AAAW,QAAXA,EACF1rF,GAAKqsF,EACIX,AAAW,WAAXA,EACT1rF,GAAKxB,EAAS6tF,EAEdrsF,GAAMxB,EAAS,EAEVwB,CACT,EAOmB8Z,EAAM4xE,EAAQW,GAY/B,MAXIX,AAAW,WAAXA,EACEI,AAAW,SAAXA,EACFlvF,GAAKyvF,EACe,UAAXP,GACTlvF,CAAAA,GAAKyvF,CAAa,EAEXP,AAAW,SAAXA,EACTlvF,GAAKO,KAAK,GAAG,CAACmvF,EAASE,GAAcL,EACjB,UAAXL,GACTlvF,CAAAA,GAAKO,KAAK,GAAG,CAACovF,EAAUE,GAAeN,CAAQ,EAE1C,CACL,EAAG,QAAYvvF,EAAG,EAAGykC,EAAM,KAAK,CAAGvnB,EAAK,KAAK,EAC7C,EAAG,QAAY9Z,EAAG,EAAGqhC,EAAM,MAAM,CAAGvnB,EAAK,MAAM,CACjD,CACF,CACA,SAAS8yE,GAAY7B,CAAO,CAAEp5E,CAAK,CAAEpC,CAAO,EAC1C,IAAM7H,EAAU,QAAU6H,EAAQ,OAAO,EACzC,MAAOoC,AAAU,WAAVA,EACHo5E,EAAQ,CAAC,CAAGA,EAAQ,KAAK,CAAG,EAC5Bp5E,AAAU,UAAVA,EACEo5E,EAAQ,CAAC,CAAGA,EAAQ,KAAK,CAAGrjF,EAAQ,KAAK,CACzCqjF,EAAQ,CAAC,CAAGrjF,EAAQ,IAAI,AAChC,CACA,SAASmlF,GAAwBpuF,CAAQ,EACvC,OAAOksF,GAAa,EAAE,CAAEE,GAAcpsF,GACxC,CAQA,SAASquF,GAAkB3zB,CAAS,CAAE/uD,CAAO,EAC3C,IAAM86B,EAAW96B,GAAWA,EAAQ,OAAO,EAAIA,EAAQ,OAAO,CAAC,OAAO,EAAIA,EAAQ,OAAO,CAAC,OAAO,CAAC,SAAS,CAC3G,OAAO86B,EAAWi0B,EAAU,QAAQ,CAACj0B,GAAYi0B,CACnD,CACA,MAAM4zB,WAAgBzrC,EACpB,YAAY5yC,CAAM,CAAE,CAClB,KAAK,GACL,IAAI,CAAC,OAAO,CAAG,EACf,IAAI,CAAC,OAAO,CAAG,EAAE,CACjB,IAAI,CAAC,cAAc,CAAG9Q,KAAAA,EACtB,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,iBAAiB,CAAGA,KAAAA,EACzB,IAAI,CAAC,aAAa,CAAG,EAAE,CACvB,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,QAAQ,CAAGA,KAAAA,EAChB,IAAI,CAAC,KAAK,CAAG8Q,EAAO,KAAK,EAAIA,EAAO,MAAM,CAC1C,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,KAAK,CACxB,IAAI,CAAC,OAAO,CAAGA,EAAO,OAAO,CAC7B,IAAI,CAAC,UAAU,CAAG9Q,KAAAA,EAClB,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,UAAU,CAAGA,KAAAA,EAClB,IAAI,CAAC,IAAI,CAAGA,KAAAA,EACZ,IAAI,CAAC,SAAS,CAAGA,KAAAA,EACjB,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,CAAC,CAAGA,KAAAA,EACT,IAAI,CAAC,CAAC,CAAGA,KAAAA,EACT,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,KAAK,CAAGA,KAAAA,EACb,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,MAAM,CAAGA,KAAAA,EACd,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,gBAAgB,CAAGA,KAAAA,EACxB,IAAI,CAAC,eAAe,CAAGA,KAAAA,CACzB,CACA,WAAW2R,CAAO,CAAE,CAClB,IAAI,CAAC,OAAO,CAAGA,EACf,IAAI,CAAC,iBAAiB,CAAG3R,KAAAA,EACzB,IAAI,CAAC,QAAQ,CAAGA,KAAAA,CAClB,CACA,oBAAqB,CACnB,IAAM2/D,EAAS,IAAI,CAAC,iBAAiB,CACrC,GAAIA,EACF,OAAOA,EAET,IAAMl8B,EAAQ,IAAI,CAAC,KAAK,CAClB9xB,EAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,IACjD6rD,EAAO7rD,EAAQ,OAAO,EAAI8xB,EAAM,OAAO,CAAC,SAAS,EAAI9xB,EAAQ,UAAU,CACvEurD,EAAa,IAAIL,EAAW,IAAI,CAAC,KAAK,CAAEW,GAI9C,OAHIA,EAAK,UAAU,EACjB,KAAI,CAAC,iBAAiB,CAAGv5D,OAAO,MAAM,CAACi5D,EAAU,EAE5CA,CACT,CACA,YAAa,KA9Dez5D,EAAQ0pF,EAASiC,EA+D3C,OAAO,IAAI,CAAC,QAAQ,EACpB,KAAI,CAAC,QAAQ,EAhEa3rF,EAgEW,IAAI,CAAC,KAAK,CAAC,UAAU,GAhExB0pF,EAgE4B,IAAI,CAhEvBiC,EAgEyB,IAAI,CAAC,aAAa,CA/DjF,QAAc3rF,EAAQ,CAC3B0pF,QAAAA,EACAiC,aAAAA,EACA,KAAM,SACR,GA2DwF,CACxF,CACA,SAAS5iF,CAAO,CAAEmF,CAAO,CAAE,CACzB,GAAM,CAAC4pD,UAAAA,CAAS,CAAC,CAAG5pD,EACd09E,EAAc9zB,EAAU,WAAW,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC/uD,EAAQ,EACzDmY,EAAQ42C,EAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC/uD,EAAQ,EAC7C8iF,EAAa/zB,EAAU,UAAU,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC/uD,EAAQ,EACzDqL,EAAQ,EAAE,CAId,OAHAA,EAAQk1E,GAAal1E,EAAOo1E,GAAcoC,IAC1Cx3E,EAAQk1E,GAAal1E,EAAOo1E,GAActoE,IAC1C9M,EAAQk1E,GAAal1E,EAAOo1E,GAAcqC,GAE5C,CACA,cAAcF,CAAY,CAAEz9E,CAAO,CAAE,CACnC,OAhFKo7E,GAAa,EAAE,CAAEE,GAgFSt7E,EAAQ,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAE,CAACy9E,EAAa,GACxF,CACA,QAAQA,CAAY,CAAEz9E,CAAO,CAAE,CAC7B,GAAM,CAAC4pD,UAAAA,CAAS,CAAC,CAAG5pD,EACd49E,EAAY,EAAE,CAapB,MAZA,QAAKH,EAAc,AAAC5iF,IAClB,IAAMmhF,EAAW,CACf,OAAQ,EAAE,CACV,MAAO,EAAE,CACT,MAAO,EAAE,AACX,EACM6B,EAASN,GAAkB3zB,EAAW/uD,GAC5CugF,GAAaY,EAAS,MAAM,CAAEV,GAAcuC,EAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAEhjF,KAC1EugF,GAAaY,EAAS,KAAK,CAAE6B,EAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAEhjF,IACrDugF,GAAaY,EAAS,KAAK,CAAEV,GAAcuC,EAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAEhjF,KACxE+iF,EAAU,IAAI,CAAC5B,EACjB,GACO4B,CACT,CACA,aAAaH,CAAY,CAAEz9E,CAAO,CAAE,CAClC,OApGKo7E,GAAa,EAAE,CAAEE,GAoGSt7E,EAAQ,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAE,CAACy9E,EAAa,GACvF,CACA,UAAUA,CAAY,CAAEz9E,CAAO,CAAE,CAC/B,GAAM,CAAC4pD,UAAAA,CAAS,CAAC,CAAG5pD,EACd89E,EAAel0B,EAAU,YAAY,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC6zB,EAAa,EAChEhC,EAAS7xB,EAAU,MAAM,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC6zB,EAAa,EACpDM,EAAcn0B,EAAU,WAAW,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC6zB,EAAa,EAChEv3E,EAAQ,EAAE,CAId,OAHAA,EAAQk1E,GAAal1E,EAAOo1E,GAAcwC,IAC1C53E,EAAQk1E,GAAal1E,EAAOo1E,GAAcG,IAC1Cv1E,EAAQk1E,GAAal1E,EAAOo1E,GAAcyC,GAE5C,CACA,aAAa/9E,CAAO,CAAE,KAOhBtS,EAAGy9C,EANP,IAAMmlB,EAAS,IAAI,CAAC,OAAO,CACrBniE,EAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACtB6vF,EAAc,EAAE,CAChBC,EAAmB,EAAE,CACrBC,EAAkB,EAAE,CACtBT,EAAe,EAAE,CAErB,IAAK/vF,EAAI,EAAGy9C,EAAMmlB,EAAO,MAAM,CAAE5iE,EAAIy9C,EAAK,EAAEz9C,EAC1C+vF,EAAa,IAAI,CAACU,AA7RxB,SAA2BrsD,CAAK,CAAEi4B,CAAI,EACpC,GAAM,CAAChvD,QAAAA,CAAO,CAAE86B,aAAAA,CAAY,CAAEzmC,MAAAA,CAAK,CAAC,CAAG26D,EACjC8C,EAAa/6B,EAAM,cAAc,CAAC+D,GAAc,UAAU,CAC1D,CAACv3B,MAAAA,CAAK,CAAEhP,MAAAA,CAAK,CAAC,CAAGu9D,EAAW,gBAAgB,CAACz9D,GACnD,MAAO,CACL0iC,MAAAA,EACAxzB,MAAAA,EACA,OAAQuuD,EAAW,SAAS,CAACz9D,GAC7B,IAAK0iC,EAAM,IAAI,CAAC,QAAQ,CAAC+D,EAAa,CAAC,IAAI,CAACzmC,EAAM,CAClD,eAAgBE,EAChB,QAASu9D,EAAW,UAAU,GAC9B,UAAWz9D,EACXymC,aAAAA,EACA96B,QAAAA,CACF,CACF,EA8Q0C,IAAI,CAAC,KAAK,CAAEu1D,CAAM,CAAC5iE,EAAE,GAkB3D,OAhBIsS,EAAQ,MAAM,EAChBy9E,CAAAA,EAAeA,EAAa,MAAM,CAAC,CAAC1iF,EAAS3L,EAAO5B,IAAUwS,EAAQ,MAAM,CAACjF,EAAS3L,EAAO5B,EAAOW,GAAK,EAEvG6R,EAAQ,QAAQ,EAClBy9E,CAAAA,EAAeA,EAAa,IAAI,CAAC,CAAC7tF,EAAGC,IAAMmQ,EAAQ,QAAQ,CAACpQ,EAAGC,EAAG1B,GAAK,EAEzE,QAAKsvF,EAAc,AAAC5iF,IAClB,IAAMgjF,EAASN,GAAkBv9E,EAAQ,SAAS,CAAEnF,GACpDmjF,EAAY,IAAI,CAACH,EAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAEhjF,IAC9CojF,EAAiB,IAAI,CAACJ,EAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAEhjF,IACxDqjF,EAAgB,IAAI,CAACL,EAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAEhjF,GACxD,GACA,IAAI,CAAC,WAAW,CAAGmjF,EACnB,IAAI,CAAC,gBAAgB,CAAGC,EACxB,IAAI,CAAC,eAAe,CAAGC,EACvB,IAAI,CAAC,UAAU,CAAGT,EACXA,CACT,CACA,OAAOnZ,CAAO,CAAEsK,CAAM,CAAE,KAGlB9yD,EAFJ,IAAM9b,EAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,IACjDswD,EAAS,IAAI,CAAC,OAAO,CAEvBmtB,EAAe,EAAE,CACrB,GAAKntB,EAAO,MAAM,CAMX,CACL,IAAM3lD,EAAWkmB,EAAW,CAAC7wB,EAAQ,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAEswD,EAAQ,IAAI,CAAC,cAAc,EACrFmtB,EAAe,IAAI,CAAC,YAAY,CAACz9E,GACjC,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,QAAQ,CAACy9E,EAAcz9E,GACzC,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,aAAa,CAACy9E,EAAcz9E,GACnD,IAAI,CAAC,IAAI,CAAG,IAAI,CAAC,OAAO,CAACy9E,EAAcz9E,GACvC,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,YAAY,CAACy9E,EAAcz9E,GACjD,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,SAAS,CAACy9E,EAAcz9E,GAC3C,IAAMuK,EAAO,IAAI,CAAC,KAAK,CAAGgxE,GAAe,IAAI,CAAEv7E,GACzCo+E,EAAkB9rF,OAAO,MAAM,CAAC,CAAC,EAAGqY,EAAUJ,GAC9CoyE,EAAYT,GAAmB,IAAI,CAAC,KAAK,CAAEl8E,EAASo+E,GACpDC,EAAkB3B,GAAmB18E,EAASo+E,EAAiBzB,EAAW,IAAI,CAAC,KAAK,CAC1F,KAAI,CAAC,MAAM,CAAGA,EAAU,MAAM,CAC9B,IAAI,CAAC,MAAM,CAAGA,EAAU,MAAM,CAC9B7gE,EAAa,CACX,QAAS,EACT,EAAGuiE,EAAgB,CAAC,CACpB,EAAGA,EAAgB,CAAC,CACpB,MAAO9zE,EAAK,KAAK,CACjB,OAAQA,EAAK,MAAM,CACnB,OAAQI,EAAS,CAAC,CAClB,OAAQA,EAAS,CAAC,AACpB,CACF,MA5BuB,IAAjB,IAAI,CAAC,OAAO,EACdmR,CAAAA,EAAa,CACX,QAAS,CACX,EA0BJ,KAAI,CAAC,aAAa,CAAG2hE,EACrB,IAAI,CAAC,QAAQ,CAAGpvF,KAAAA,EACZytB,GACF,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAEA,GAErCwoD,GAAWtkE,EAAQ,QAAQ,EAC7BA,EAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,MAAO,IAAI,CAAC,KAAK,CAAE,QAAS,IAAI,CAAE4uE,OAAAA,CAAM,EAEzE,CACA,UAAU0P,CAAY,CAAEx7D,CAAG,CAAEvY,CAAI,CAAEvK,CAAO,CAAE,CAC1C,IAAMu+E,EAAgB,IAAI,CAAC,gBAAgB,CAACD,EAAc/zE,EAAMvK,GAChE8iB,EAAI,MAAM,CAACy7D,EAAc,EAAE,CAAEA,EAAc,EAAE,EAC7Cz7D,EAAI,MAAM,CAACy7D,EAAc,EAAE,CAAEA,EAAc,EAAE,EAC7Cz7D,EAAI,MAAM,CAACy7D,EAAc,EAAE,CAAEA,EAAc,EAAE,CAC/C,CACA,iBAAiBD,CAAY,CAAE/zE,CAAI,CAAEvK,CAAO,CAAE,KAMxC3O,EAAIiF,EAAIO,EAAIzC,EAAImC,EAAIO,EALxB,GAAM,CAACylF,OAAAA,CAAM,CAAEJ,OAAAA,CAAM,CAAC,CAAG,IAAI,CACvB,CAACS,UAAAA,CAAS,CAAEhgF,aAAAA,CAAY,CAAC,CAAGoD,EAC5B,CAAC+8E,QAAAA,CAAO,CAAEC,SAAAA,CAAQ,CAAEC,WAAAA,CAAU,CAAEC,YAAAA,CAAW,CAAC,CAAG,SAActgF,GAC7D,CAAC,EAAG4hF,CAAG,CAAE,EAAGC,CAAG,CAAC,CAAGH,EACnB,CAAC39E,MAAAA,CAAK,CAAE1R,OAAAA,CAAM,CAAC,CAAGsb,EAqCxB,MAnCI4xE,AAAW,WAAXA,GACF5lF,EAAKkoF,EAAOxvF,EAAS,EACjBstF,AAAW,SAAXA,GAEFjmF,EAAKjF,AADLA,CAAAA,EAAKmtF,CAAE,EACG5B,EACVxoF,EAAKmC,EAAKqmF,EACV9lF,EAAKP,EAAKqmF,IAGVtmF,EAAKjF,AADLA,CAAAA,EAAKmtF,EAAM79E,CAAI,EACLi8E,EACVxoF,EAAKmC,EAAKqmF,EACV9lF,EAAKP,EAAKqmF,GAEZ/lF,EAAKxF,IAGHiF,EADEimF,AAAW,SAAXA,EACGiC,EAAM5wF,KAAK,GAAG,CAACmvF,EAASE,GAAeL,EACnCL,AAAW,UAAXA,EACJiC,EAAM79E,EAAQ/S,KAAK,GAAG,CAACovF,EAAUE,GAAeN,EAEhD,IAAI,CAAC,MAAM,CAEdT,AAAW,QAAXA,GAEF5lF,EAAKnC,AADLA,CAAAA,EAAKqqF,CAAE,EACG7B,EACVvrF,EAAKiF,EAAKsmF,EACV/lF,EAAKP,EAAKsmF,IAGVrmF,EAAKnC,AADLA,CAAAA,EAAKqqF,EAAMxvF,CAAK,EACN2tF,EACVvrF,EAAKiF,EAAKsmF,EACV/lF,EAAKP,EAAKsmF,GAEZ9lF,EAAK1C,GAEA,CAAC/C,GAAAA,EAAIiF,GAAAA,EAAIO,GAAAA,EAAIzC,GAAAA,EAAImC,GAAAA,EAAIO,GAAAA,CAAE,CAChC,CACA,UAAUu8B,CAAE,CAAEvQ,CAAG,CAAE9iB,CAAO,CAAE,KAGtBs6E,EAAWoE,EAAchxF,EAF7B,IAAMslB,EAAQ,IAAI,CAAC,KAAK,CAClB/W,EAAS+W,EAAM,MAAM,CAE3B,GAAI/W,EAAQ,CACV,IAAM29E,EAAY,SAAc55E,EAAQ,GAAG,CAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,EAQ/D,IAAKtS,EAAI,EAPT2lC,EAAG,CAAC,CAAGgqD,GAAY,IAAI,CAAEr9E,EAAQ,UAAU,CAAEA,GAC7C8iB,EAAI,SAAS,CAAG82D,EAAU,SAAS,CAAC55E,EAAQ,UAAU,EACtD8iB,EAAI,YAAY,CAAG,SACnBw3D,EAAY,QAAOt6E,EAAQ,SAAS,EACpC0+E,EAAe1+E,EAAQ,YAAY,CACnC8iB,EAAI,SAAS,CAAG9iB,EAAQ,UAAU,CAClC8iB,EAAI,IAAI,CAAGw3D,EAAU,MAAM,CACf5sF,EAAIuO,EAAQ,EAAEvO,EACxBo1B,EAAI,QAAQ,CAAC9P,CAAK,CAACtlB,EAAE,CAAEksF,EAAU,CAAC,CAACvmD,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAGinD,EAAU,UAAU,CAAG,GACxEjnD,EAAG,CAAC,EAAIinD,EAAU,UAAU,CAAGoE,EAC3BhxF,EAAI,IAAMuO,GACZo3B,CAAAA,EAAG,CAAC,EAAIrzB,EAAQ,iBAAiB,CAAG0+E,CAAW,CAGrD,CACF,CACA,cAAc57D,CAAG,CAAEuQ,CAAE,CAAE3lC,CAAC,CAAEksF,CAAS,CAAE55E,CAAO,CAAE,CAC5C,IAAMg+E,EAAc,IAAI,CAAC,WAAW,CAACtwF,EAAE,CACjCixF,EAAkB,IAAI,CAAC,gBAAgB,CAACjxF,EAAE,CAC1C,CAACirF,UAAAA,CAAS,CAAEC,SAAAA,CAAQ,CAAE3U,WAAAA,CAAU,CAAC,CAAGjkE,EACpC07E,EAAW,QAAO17E,EAAQ,QAAQ,EAClC4+E,EAASvB,GAAY,IAAI,CAAE,OAAQr9E,GACnC6+E,EAAYjF,EAAU,CAAC,CAACgF,GACxBE,EAAUnG,EAAY+C,EAAS,UAAU,CAAG,AAACA,CAAAA,EAAS,UAAU,CAAG/C,CAAQ,EAAK,EAAI,EACpFoG,EAAS1rD,EAAG,CAAC,CAAGyrD,EACtB,GAAI9+E,EAAQ,aAAa,CAAE,CACzB,IAAMk6E,EAAc,CAClB,OAAQtsF,KAAK,GAAG,CAACgrF,EAAUD,GAAa,EACxC,WAAYgG,EAAgB,UAAU,CACtC,SAAUA,EAAgB,QAAQ,CAClC,YAAa,CACf,EACM1nD,EAAU2iD,EAAU,UAAU,CAACiF,EAAWjG,GAAYA,EAAW,EACjEzhD,EAAU4nD,EAASpG,EAAY,CACrC71D,CAAAA,EAAI,WAAW,CAAG9iB,EAAQ,kBAAkB,CAC5C8iB,EAAI,SAAS,CAAG9iB,EAAQ,kBAAkB,CAC1C,SAAU8iB,EAAKo3D,EAAajjD,EAASE,GACrCrU,EAAI,WAAW,CAAGk7D,EAAY,WAAW,CACzCl7D,EAAI,SAAS,CAAGk7D,EAAY,eAAe,CAC3C,SAAUl7D,EAAKo3D,EAAajjD,EAASE,EACvC,KAAO,CACLrU,EAAI,SAAS,CAAG,QAASk7D,EAAY,WAAW,EAAIpwF,KAAK,GAAG,IAAI0E,OAAO,MAAM,CAAC0rF,EAAY,WAAW,GAAMA,EAAY,WAAW,EAAI,EACtIl7D,EAAI,WAAW,CAAGk7D,EAAY,WAAW,CACzCl7D,EAAI,WAAW,CAACk7D,EAAY,UAAU,EAAI,EAAE,EAC5Cl7D,EAAI,cAAc,CAAGk7D,EAAY,gBAAgB,EAAI,EACrD,IAAMgB,EAASpF,EAAU,UAAU,CAACiF,EAAWjG,EAAW3U,GACpDgb,EAASrF,EAAU,UAAU,CAACA,EAAU,KAAK,CAACiF,EAAW,GAAIjG,EAAW3U,EAAa,GACrFz+D,EAAe,SAAcw4E,EAAY,YAAY,EACvD1rF,OAAO,MAAM,CAACkT,GAAc,IAAI,CAACrT,GAAKA,AAAM,IAANA,IACxC2wB,EAAI,SAAS,GACbA,EAAI,SAAS,CAAG9iB,EAAQ,kBAAkB,CAC1C,SAAmB8iB,EAAK,CACtB,EAAGk8D,EACH,EAAGD,EACH,EAAGnG,EACH,EAAGD,EACH,OAAQnzE,CACV,GACAsd,EAAI,IAAI,GACRA,EAAI,MAAM,GACVA,EAAI,SAAS,CAAGk7D,EAAY,eAAe,CAC3Cl7D,EAAI,SAAS,GACb,SAAmBA,EAAK,CACtB,EAAGm8D,EACH,EAAGF,EAAS,EACZ,EAAGnG,EAAW,EACd,EAAGD,EAAY,EACf,OAAQnzE,CACV,GACAsd,EAAI,IAAI,KAERA,EAAI,SAAS,CAAG9iB,EAAQ,kBAAkB,CAC1C8iB,EAAI,QAAQ,CAACk8D,EAAQD,EAAQnG,EAAUD,GACvC71D,EAAI,UAAU,CAACk8D,EAAQD,EAAQnG,EAAUD,GACzC71D,EAAI,SAAS,CAAGk7D,EAAY,eAAe,CAC3Cl7D,EAAI,QAAQ,CAACm8D,EAAQF,EAAS,EAAGnG,EAAW,EAAGD,EAAY,GAE/D,CACA71D,EAAI,SAAS,CAAG,IAAI,CAAC,eAAe,CAACp1B,EAAE,AACzC,CACA,SAAS2lC,CAAE,CAAEvQ,CAAG,CAAE9iB,CAAO,CAAE,KAYrBg8E,EAAUkD,EAAWh5E,EAAOxY,EAAG6G,EAAGi7B,EAAM4E,EAX5C,GAAM,CAACzN,KAAAA,CAAI,CAAC,CAAG,IAAI,CACb,CAACw4D,YAAAA,CAAW,CAAEC,UAAAA,CAAS,CAAEC,cAAAA,CAAa,CAAE1G,UAAAA,CAAS,CAAEC,SAAAA,CAAQ,CAAE3U,WAAAA,CAAU,CAAC,CAAGjkE,EAC3E07E,EAAW,QAAO17E,EAAQ,QAAQ,EACpCs/E,EAAiB5D,EAAS,UAAU,CACpC6D,EAAe,EACb3F,EAAY,SAAc55E,EAAQ,GAAG,CAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,EACzDw/E,EAAiB,SAAShjF,CAAI,EAClCsmB,EAAI,QAAQ,CAACtmB,EAAMo9E,EAAU,CAAC,CAACvmD,EAAG,CAAC,CAAGksD,GAAelsD,EAAG,CAAC,CAAGisD,EAAiB,GAC7EjsD,EAAG,CAAC,EAAIisD,EAAiBH,CAC3B,EACMM,EAA0B7F,EAAU,SAAS,CAACwF,GAWpD,IAAK1xF,AATLo1B,EAAI,SAAS,CAAGs8D,EAChBt8D,EAAI,YAAY,CAAG,SACnBA,EAAI,IAAI,CAAG44D,EAAS,MAAM,CAC1BroD,EAAG,CAAC,CAAGgqD,GAAY,IAAI,CAAEoC,EAAyBz/E,GAClD8iB,EAAI,SAAS,CAAG9iB,EAAQ,SAAS,CACjC,QAAK,IAAI,CAAC,UAAU,CAAEw/E,GACtBD,EAAeF,GAAiBI,AAA4B,UAA5BA,EAC5BL,AAAc,WAAdA,EAA0BxG,EAAW,EAAI3U,EAAe2U,EAAW,EAAI3U,EACvE,EACCv2E,EAAI,EAAG8hC,EAAO7I,EAAK,MAAM,CAAEj5B,EAAI8hC,EAAM,EAAE9hC,EAAG,CAU7C,IAAK6G,AATLynF,EAAWr1D,CAAI,CAACj5B,EAAE,CAClBwxF,EAAY,IAAI,CAAC,eAAe,CAACxxF,EAAE,CACnCo1B,EAAI,SAAS,CAAGo8D,EAChB,QAAKlD,EAAS,MAAM,CAAEwD,GACtBt5E,EAAQ81E,EAAS,KAAK,CAClBqD,GAAiBn5E,EAAM,MAAM,GAC/B,IAAI,CAAC,aAAa,CAAC4c,EAAKuQ,EAAI3lC,EAAGksF,EAAW55E,GAC1Cs/E,EAAiB1xF,KAAK,GAAG,CAAC8tF,EAAS,UAAU,CAAE/C,IAE5CpkF,EAAI,EAAG6/B,EAAOluB,EAAM,MAAM,CAAE3R,EAAI6/B,EAAM,EAAE7/B,EAC3CirF,EAAet5E,CAAK,CAAC3R,EAAE,EACvB+qF,EAAiB5D,EAAS,UAAU,CAEtC,QAAKM,EAAS,KAAK,CAAEwD,EACvB,CACAD,EAAe,EACfD,EAAiB5D,EAAS,UAAU,CACpC,QAAK,IAAI,CAAC,SAAS,CAAE8D,GACrBnsD,EAAG,CAAC,EAAI8rD,CACV,CACA,WAAW9rD,CAAE,CAAEvQ,CAAG,CAAE9iB,CAAO,CAAE,KAGvB27E,EAAYjuF,EAFhB,IAAM+tF,EAAS,IAAI,CAAC,MAAM,CACpBx/E,EAASw/E,EAAO,MAAM,CAE5B,GAAIx/E,EAAQ,CACV,IAAM29E,EAAY,SAAc55E,EAAQ,GAAG,CAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,EAQ/D,IAPAqzB,EAAG,CAAC,CAAGgqD,GAAY,IAAI,CAAEr9E,EAAQ,WAAW,CAAEA,GAC9CqzB,EAAG,CAAC,EAAIrzB,EAAQ,eAAe,CAC/B8iB,EAAI,SAAS,CAAG82D,EAAU,SAAS,CAAC55E,EAAQ,WAAW,EACvD8iB,EAAI,YAAY,CAAG,SACnB64D,EAAa,QAAO37E,EAAQ,UAAU,EACtC8iB,EAAI,SAAS,CAAG9iB,EAAQ,WAAW,CACnC8iB,EAAI,IAAI,CAAG64D,EAAW,MAAM,CACvBjuF,EAAI,EAAGA,EAAIuO,EAAQ,EAAEvO,EACxBo1B,EAAI,QAAQ,CAAC24D,CAAM,CAAC/tF,EAAE,CAAEksF,EAAU,CAAC,CAACvmD,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAGsoD,EAAW,UAAU,CAAG,GAC1EtoD,EAAG,CAAC,EAAIsoD,EAAW,UAAU,CAAG37E,EAAQ,aAAa,AAEzD,CACF,CACA,eAAeqzB,CAAE,CAAEvQ,CAAG,CAAE48D,CAAW,CAAE1/E,CAAO,CAAE,CAC5C,GAAM,CAACu8E,OAAAA,CAAM,CAAEJ,OAAAA,CAAM,CAAC,CAAG,IAAI,CACvB,CAAC9uF,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAC,CAAG4iC,EACT,CAAC1yB,MAAAA,CAAK,CAAE1R,OAAAA,CAAM,CAAC,CAAGywF,EAClB,CAAC3C,QAAAA,CAAO,CAAEC,SAAAA,CAAQ,CAAEC,WAAAA,CAAU,CAAEC,YAAAA,CAAW,CAAC,CAAG,SAAcl9E,EAAQ,YAAY,CACvF8iB,CAAAA,EAAI,SAAS,CAAG9iB,EAAQ,eAAe,CACvC8iB,EAAI,WAAW,CAAG9iB,EAAQ,WAAW,CACrC8iB,EAAI,SAAS,CAAG9iB,EAAQ,WAAW,CACnC8iB,EAAI,SAAS,GACbA,EAAI,MAAM,CAACz1B,EAAI0vF,EAAStsF,GACT,QAAX0rF,GACF,IAAI,CAAC,SAAS,CAAC9oD,EAAIvQ,EAAK48D,EAAa1/E,GAEvC8iB,EAAI,MAAM,CAACz1B,EAAIsT,EAAQq8E,EAAUvsF,GACjCqyB,EAAI,gBAAgB,CAACz1B,EAAIsT,EAAOlQ,EAAGpD,EAAIsT,EAAOlQ,EAAIusF,GACnC,WAAXb,GAAuBI,AAAW,UAAXA,GACzB,IAAI,CAAC,SAAS,CAAClpD,EAAIvQ,EAAK48D,EAAa1/E,GAEvC8iB,EAAI,MAAM,CAACz1B,EAAIsT,EAAOlQ,EAAIxB,EAASiuF,GACnCp6D,EAAI,gBAAgB,CAACz1B,EAAIsT,EAAOlQ,EAAIxB,EAAQ5B,EAAIsT,EAAQu8E,EAAazsF,EAAIxB,GAC1D,WAAXktF,GACF,IAAI,CAAC,SAAS,CAAC9oD,EAAIvQ,EAAK48D,EAAa1/E,GAEvC8iB,EAAI,MAAM,CAACz1B,EAAI4vF,EAAYxsF,EAAIxB,GAC/B6zB,EAAI,gBAAgB,CAACz1B,EAAGoD,EAAIxB,EAAQ5B,EAAGoD,EAAIxB,EAASguF,GACrC,WAAXd,GAAuBI,AAAW,SAAXA,GACzB,IAAI,CAAC,SAAS,CAAClpD,EAAIvQ,EAAK48D,EAAa1/E,GAEvC8iB,EAAI,MAAM,CAACz1B,EAAGoD,EAAIssF,GAClBj6D,EAAI,gBAAgB,CAACz1B,EAAGoD,EAAGpD,EAAI0vF,EAAStsF,GACxCqyB,EAAI,SAAS,GACbA,EAAI,IAAI,GACJ9iB,EAAQ,WAAW,CAAG,GACxB8iB,EAAI,MAAM,EAEd,CACA,uBAAuB9iB,CAAO,CAAE,CAC9B,IAAM8xB,EAAQ,IAAI,CAAC,KAAK,CAClB43B,EAAQ,IAAI,CAAC,WAAW,CACxBi2B,EAAQj2B,GAASA,EAAM,CAAC,CACxBk2B,EAAQl2B,GAASA,EAAM,CAAC,CAC9B,GAAIi2B,GAASC,EAAO,CAClB,IAAMj1E,EAAWkmB,EAAW,CAAC7wB,EAAQ,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,cAAc,EAC3F,GAAI,CAAC2K,EACH,OAEF,IAAMJ,EAAO,IAAI,CAAC,KAAK,CAAGgxE,GAAe,IAAI,CAAEv7E,GACzCo+E,EAAkB9rF,OAAO,MAAM,CAAC,CAAC,EAAGqY,EAAU,IAAI,CAAC,KAAK,EACxDgyE,EAAYT,GAAmBpqD,EAAO9xB,EAASo+E,GAC/CriF,EAAQ2gF,GAAmB18E,EAASo+E,EAAiBzB,EAAW7qD,GAClE6tD,CAAAA,EAAM,GAAG,GAAK5jF,EAAM,CAAC,EAAI6jF,EAAM,GAAG,GAAK7jF,EAAM,CAAC,AAAD,IAC/C,IAAI,CAAC,MAAM,CAAG4gF,EAAU,MAAM,CAC9B,IAAI,CAAC,MAAM,CAAGA,EAAU,MAAM,CAC9B,IAAI,CAAC,KAAK,CAAGpyE,EAAK,KAAK,CACvB,IAAI,CAAC,MAAM,CAAGA,EAAK,MAAM,CACzB,IAAI,CAAC,MAAM,CAAGI,EAAS,CAAC,CACxB,IAAI,CAAC,MAAM,CAAGA,EAAS,CAAC,CACxB,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAE5O,GAE3C,CACF,CACA,aAAc,CACZ,MAAO,CAAC,CAAC,IAAI,CAAC,OAAO,AACvB,CACA,KAAK+mB,CAAG,CAAE,CACR,IAAM9iB,EAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,IACnDulC,EAAU,IAAI,CAAC,OAAO,CAC1B,GAAI,CAACA,EACH,OAEF,IAAI,CAAC,sBAAsB,CAACvlC,GAC5B,IAAM0/E,EAAc,CAClB,MAAO,IAAI,CAAC,KAAK,CACjB,OAAQ,IAAI,CAAC,MAAM,AACrB,EACMrsD,EAAK,CACT,EAAG,IAAI,CAAC,CAAC,CACT,EAAG,IAAI,CAAC,CAAC,AACX,EACAkS,EAAU33C,AAAoB,KAApBA,KAAK,GAAG,CAAC23C,GAAkB,EAAIA,EACzC,IAAMptC,EAAU,QAAU6H,EAAQ,OAAO,EACnC6/E,EAAoB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAI,IAAI,CAAC,MAAM,CAAC,MAAM,AACpI7/E,CAAAA,EAAQ,OAAO,EAAI6/E,IACrB/8D,EAAI,IAAI,GACRA,EAAI,WAAW,CAAGyiB,EAClB,IAAI,CAAC,cAAc,CAAClS,EAAIvQ,EAAK48D,EAAa1/E,GAC1C,SAAsB8iB,EAAK9iB,EAAQ,aAAa,EAChDqzB,EAAG,CAAC,EAAIl7B,EAAQ,GAAG,CACnB,IAAI,CAAC,SAAS,CAACk7B,EAAIvQ,EAAK9iB,GACxB,IAAI,CAAC,QAAQ,CAACqzB,EAAIvQ,EAAK9iB,GACvB,IAAI,CAAC,UAAU,CAACqzB,EAAIvQ,EAAK9iB,GACzB,SAAqB8iB,EAAK9iB,EAAQ,aAAa,EAC/C8iB,EAAI,OAAO,GAEf,CACA,mBAAoB,CAClB,OAAO,IAAI,CAAC,OAAO,EAAI,EAAE,AAC3B,CACA,kBAAkB4rD,CAAc,CAAEuM,CAAa,CAAE,CAC/C,IAAMtM,EAAa,IAAI,CAAC,OAAO,CACzBre,EAASoe,EAAe,GAAG,CAAC,CAAC,CAAC74C,aAAAA,CAAY,CAAEzmC,MAAAA,CAAK,CAAC,IACtD,IAAMm9D,EAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC12B,GACvC,GAAI,CAAC02B,EACH,MAAM,AAAIn/D,MAAM,kCAAoCyoC,GAEtD,MAAO,CACLA,aAAAA,EACA,QAAS02B,EAAK,IAAI,CAACn9D,EAAM,CACzBA,MAAAA,CACF,CACF,GACMk1E,EAAU,CAAC,SAAeqK,EAAYre,GACtCwvB,EAAkB,IAAI,CAAC,gBAAgB,CAACxvB,EAAQ2qB,GAClD3W,CAAAA,GAAWwb,CAAc,IAC3B,IAAI,CAAC,OAAO,CAAGxvB,EACf,IAAI,CAAC,cAAc,CAAG2qB,EACtB,IAAI,CAAC,mBAAmB,CAAG,GAC3B,IAAI,CAAC,MAAM,CAAC,IAEhB,CACA,YAAYvlF,CAAC,CAAEk5E,CAAM,CAAEK,EAAc,EAAI,CAAE,CACzC,GAAIL,GAAU,IAAI,CAAC,mBAAmB,CACpC,MAAO,EAET,KAAI,CAAC,mBAAmB,CAAG,GAC3B,IAAM5uE,EAAU,IAAI,CAAC,OAAO,CACtB2uE,EAAa,IAAI,CAAC,OAAO,EAAI,EAAE,CAC/Bre,EAAS,IAAI,CAAC,kBAAkB,CAAC56D,EAAGi5E,EAAYC,EAAQK,GACxD6Q,EAAkB,IAAI,CAAC,gBAAgB,CAACxvB,EAAQ56D,GAChD4uE,EAAUsK,GAAU,CAAC,SAAete,EAAQqe,IAAemR,EAWjE,OAVIxb,IACF,IAAI,CAAC,OAAO,CAAGhU,EACXtwD,CAAAA,EAAQ,OAAO,EAAIA,EAAQ,QAAQ,AAAD,IACpC,IAAI,CAAC,cAAc,CAAG,CACpB,EAAGtK,EAAE,CAAC,CACN,EAAGA,EAAE,CAAC,AACR,EACA,IAAI,CAAC,MAAM,CAAC,GAAMk5E,KAGftK,CACT,CACA,mBAAmB5uE,CAAC,CAAEi5E,CAAU,CAAEC,CAAM,CAAEK,CAAW,CAAE,CACrD,IAAMjvE,EAAU,IAAI,CAAC,OAAO,CAC5B,GAAItK,AAAW,aAAXA,EAAE,IAAI,CACR,MAAO,EAAE,CAEX,GAAI,CAACu5E,EACH,OAAON,EAET,IAAMre,EAAS,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC56D,EAAGsK,EAAQ,IAAI,CAAEA,EAAS4uE,GAI9E,OAHI5uE,EAAQ,OAAO,EACjBswD,EAAO,OAAO,GAETA,CACT,CACA,iBAAiBA,CAAM,CAAE56D,CAAC,CAAE,CAC1B,GAAM,CAACqqF,OAAAA,CAAM,CAAEC,OAAAA,CAAM,CAAEhgF,QAAAA,CAAO,CAAC,CAAG,IAAI,CAChC2K,EAAWkmB,EAAW,CAAC7wB,EAAQ,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAEswD,EAAQ56D,GAClE,MAAOiV,AAAa,KAAbA,GAAuBo1E,CAAAA,IAAWp1E,EAAS,CAAC,EAAIq1E,IAAWr1E,EAAS,CAAC,AAAD,CAC7E,CACF,CACA6yE,GAAQ,WAAW,CAAG3sD,GACtB,IAAIovD,GAAiB,CACnB,GAAI,UACJ,SAAUzC,GACV3sD,YAAAA,GACA,UAAUiB,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EACzBA,GACF8xB,CAAAA,EAAM,OAAO,CAAG,IAAI0rD,GAAQ,CAAC1rD,MAAAA,EAAO9xB,QAAAA,CAAO,EAAC,CAEhD,EACA,aAAa8xB,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EAC5B8xB,EAAM,OAAO,EACfA,EAAM,OAAO,CAAC,UAAU,CAAC9xB,EAE7B,EACA,MAAM8xB,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EACrB8xB,EAAM,OAAO,EACfA,EAAM,OAAO,CAAC,UAAU,CAAC9xB,EAE7B,EACA,UAAU8xB,CAAK,EACb,IAAM0pD,EAAU1pD,EAAM,OAAO,CAC7B,GAAI0pD,GAAWA,EAAQ,WAAW,GAAI,CACpC,IAAMxhE,EAAO,CACXwhE,QAAAA,CACF,EACA,GAAI1pD,AAAmD,KAAnDA,EAAM,aAAa,CAAC,oBAAqB9X,GAC3C,OAEFwhE,EAAQ,IAAI,CAAC1pD,EAAM,GAAG,EACtBA,EAAM,aAAa,CAAC,mBAAoB9X,EAC1C,CACF,EACA,WAAW8X,CAAK,CAAE9X,CAAI,EACpB,GAAI8X,EAAM,OAAO,CAAE,CACjB,IAAMgmC,EAAmB99C,EAAK,MAAM,CAChC8X,EAAM,OAAO,CAAC,WAAW,CAAC9X,EAAK,KAAK,CAAE89C,EAAkB99C,EAAK,WAAW,GAC1EA,CAAAA,EAAK,OAAO,CAAG,EAAG,CAEtB,CACF,EACA,SAAU,CACR,QAAS,GACT,SAAU,KACV,SAAU,UACV,gBAAiB,kBACjB,WAAY,OACZ,UAAW,CACT,OAAQ,MACV,EACA,aAAc,EACd,kBAAmB,EACnB,WAAY,OACZ,UAAW,OACX,YAAa,EACb,SAAU,CACV,EACA,UAAW,OACX,YAAa,OACb,cAAe,EACf,gBAAiB,EACjB,WAAY,CACV,OAAQ,MACV,EACA,YAAa,OACb,QAAS,EACT,aAAc,EACd,UAAW,EACX,aAAc,EACd,UAAW,CAAC8I,EAAK+oC,IAASA,EAAK,QAAQ,CAAC,IAAI,CAC5C,SAAU,CAAC/oC,EAAK+oC,IAASA,EAAK,QAAQ,CAAC,IAAI,CAC3C,mBAAoB,OACpB,cAAe,GACf,WAAY,EACZ,YAAa,gBACb,YAAa,EACb,UAAW,CACT,SAAU,IACV,OAAQ,cACV,EACA,WAAY,CACV,QAAS,CACP,KAAM,SACN,WAAY,CAAC,IAAK,IAAK,QAAS,SAAU,SAAU,SAAS,AAC/D,EACA,QAAS,CACP,OAAQ,SACR,SAAU,GACZ,CACF,EACA,UAAW,CACT,YAAa,IAAI,CACjB,MAAM4xB,CAAY,EAChB,GAAIA,EAAa,MAAM,CAAG,EAAG,CAC3B,IAAM1zB,EAAO0zB,CAAY,CAAC,EAAE,CACtBvkE,EAAS6wC,EAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAC/Bo2B,EAAajnE,EAASA,EAAO,MAAM,CAAG,EAC5C,GAAI,IAAI,EAAI,IAAI,CAAC,OAAO,EAAI,AAAsB,YAAtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAC3C,OAAO6wC,EAAK,OAAO,CAAC,KAAK,EAAI,GACxB,GAAIA,EAAK,KAAK,CACnB,OAAOA,EAAK,KAAK,MACZ,GAAIo2B,EAAa,GAAKp2B,EAAK,SAAS,CAAGo2B,EAC5C,OAAOjnE,CAAM,CAAC6wC,EAAK,SAAS,CAAC,AAEjC,CACA,MAAO,EACT,EACA,WAAY,IAAI,CAChB,WAAY,IAAI,CAChB,YAAa,IAAI,CACjB,MAAM4M,CAAW,EACf,GAAI,IAAI,EAAI,IAAI,CAAC,OAAO,EAAI,AAAsB,YAAtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAC3C,OAAOA,EAAY,KAAK,CAAG,KAAOA,EAAY,cAAc,EAAIA,EAAY,cAAc,CAE5F,IAAIr4D,EAAQq4D,EAAY,OAAO,CAAC,KAAK,EAAI,GACrCr4D,GACFA,CAAAA,GAAS,IAAG,EAEd,IAAMhP,EAAQqnE,EAAY,cAAc,CAIxC,MAHI,CAAC,QAAcrnE,IACjBgP,CAAAA,GAAShP,CAAI,EAERgP,CACT,EACA,WAAWq4D,CAAW,EAEpB,IAAM32D,EAAUusD,AADHoK,EAAY,KAAK,CAAC,cAAc,CAACA,EAAY,YAAY,EACjD,UAAU,CAAC,QAAQ,CAACA,EAAY,SAAS,EAC9D,MAAO,CACL,YAAa32D,EAAQ,WAAW,CAChC,gBAAiBA,EAAQ,eAAe,CACxC,YAAaA,EAAQ,WAAW,CAChC,WAAYA,EAAQ,UAAU,CAC9B,iBAAkBA,EAAQ,gBAAgB,CAC1C,aAAc,CAChB,CACF,EACA,iBACE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,AAC/B,EACA,gBAAgB22D,CAAW,EAEzB,IAAM32D,EAAUusD,AADHoK,EAAY,KAAK,CAAC,cAAc,CAACA,EAAY,YAAY,EACjD,UAAU,CAAC,QAAQ,CAACA,EAAY,SAAS,EAC9D,MAAO,CACL,WAAY32D,EAAQ,UAAU,CAC9B,SAAUA,EAAQ,QAAQ,AAC5B,CACF,EACA,WAAY,IAAI,CAChB,UAAW,IAAI,CACf,aAAc,IAAI,CAClB,OAAQ,IAAI,CACZ,YAAa,IAAI,AACnB,CACF,EACA,cAAe,CACb,SAAU,OACV,WAAY,OACZ,UAAW,MACb,EACA,YAAa,CACX,YAAa,AAAC2E,GAASA,AAAS,WAATA,GAAqBA,AAAS,aAATA,GAAuBA,AAAS,aAATA,EACnE,WAAY,GACZ,UAAW,CACT,YAAa,GACb,WAAY,EACd,EACA,UAAW,CACT,UAAW,EACb,EACA,WAAY,CACV,UAAW,WACb,CACF,EACA,uBAAwB,CAAC,cAAc,AACzC,EAEIk+B,GAAuBvwC,OAAO,MAAM,CAAC,CACzC,UAAW,KACX,WAppEwB,CACtB,GAAI,aACJ,SAAU,CACR,UAAW,UACX,QAAS,EACX,EACA,qBAAsB,CAACw/B,EAAO9X,EAAMha,KAClC,GAAI,CAACA,EAAQ,OAAO,CAAE,CACpB41E,GAAmB9jD,GACnB,MACF,CACA,IAAM2zC,EAAiB3zC,EAAM,KAAK,CAClCA,EAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC4D,EAASG,SAqChCuqD,EApCJ,GAAM,CAACxxB,MAAAA,CAAK,CAAEJ,UAAAA,CAAS,CAAC,CAAG94B,EACrB62B,EAAOz6B,EAAM,cAAc,CAAC+D,GAC5B1nC,EAAOygE,GAASl5B,EAAQ,IAAI,CAClC,GAAsD,MAAlD,QAAQ,CAAC84B,EAAW18B,EAAM,OAAO,CAAC,SAAS,CAAC,GAG5C,CAACy6B,EAAK,UAAU,CAAC,kBAAkB,CAFrC,OAKF,IAAM8zB,EAAQvuD,EAAM,MAAM,CAACy6B,EAAK,OAAO,CAAC,CACxC,GAAmB,WAAf8zB,EAAM,IAAI,EAAiBA,AAAe,SAAfA,EAAM,IAAI,EAGrCvuD,EAAM,OAAO,CAAC,OAAO,CAFvB,OAKF,GAAI,CAACriC,MAAAA,CAAK,CAAE3B,MAAAA,CAAK,CAAC,CAAGwyF,AA7C3B,SAAmD/zB,CAAI,CAAEhwD,CAAM,MAGzDzO,EAFJ,IAAMoP,EAAaX,EAAO,MAAM,CAC5B9M,EAAQ,EAEN,CAACy9D,OAAAA,CAAM,CAAC,CAAGX,EACX,CAAC78B,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAEugC,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAC,CAAGjD,EAAO,aAAa,GAS/D,OARIgD,GACFzgE,CAAAA,EAAQ,QAAY,QAAa8M,EAAQ2wD,EAAO,IAAI,CAAEx9B,GAAK,EAAE,CAAE,EAAGxyB,EAAa,EAAC,EAGhFpP,EADEqiE,EACM,QAAY,QAAa5zD,EAAQ2wD,EAAO,IAAI,CAAEv9B,GAAK,EAAE,CAAG,EAAGlgC,EAAOyN,GAAczN,EAEhFyN,EAAazN,EAEhB,CAACA,MAAAA,EAAO3B,MAAAA,CAAK,CACtB,EA8BqEy+D,EAAMp+D,GAErE,GAAIL,GADckS,CAAAA,EAAQ,SAAS,EAAI,EAAIylE,CAAa,EAChC,CACtBkQ,GAAsBjgD,GACtB,MACF,CAgBA,OAfI,QAAck5B,KAChBl5B,EAAQ,KAAK,CAAGvnC,EAChB,OAAOunC,EAAQ,IAAI,CACnBpjC,OAAO,cAAc,CAACojC,EAAS,OAAQ,CACrC,aAAc,GACd,WAAY,GACZ,IAAK,WACH,OAAO,IAAI,CAAC,UAAU,AACxB,EACA,IAAK,SAAS3mC,CAAC,EACb,IAAI,CAAC,KAAK,CAAGA,CACf,CACF,IAGMiR,EAAQ,SAAS,EACzB,IAAK,OACHogF,EAAYG,AApLpB,SAAwBpyF,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE23E,CAAc,CAAEzlE,CAAO,MAU7DtS,EAAG8yF,EAAcC,EAASjwD,EAAMkwD,EATpC,IAAMC,EAAU3gF,EAAQ,OAAO,EAAIylE,EACnC,GAAIkb,GAAW7yF,EACb,OAAOK,EAAK,KAAK,CAACsB,EAAOA,EAAQ3B,GAEnC,IAAMsyF,EAAY,EAAE,CACdQ,EAAc,AAAC9yF,CAAAA,EAAQ,GAAM6yF,CAAAA,EAAU,GACzCE,EAAe,EACbC,EAAWrxF,EAAQ3B,EAAQ,EAC7B8B,EAAIH,EAGR,IAAK/B,EAAI,EADT0yF,CAAS,CAACS,IAAe,CAAG1yF,CAAI,CAACyB,EAAE,CACvBlC,EAAIizF,EAAU,EAAGjzF,IAAK,CAChC,IAEI6G,EAFA8+E,EAAO,EACP0N,EAAO,EAELC,EAAgBpzF,KAAK,KAAK,CAAC,AAACF,CAAAA,EAAI,GAAKkzF,GAAe,EAAInxF,EACxDwxF,EAAcrzF,KAAK,GAAG,CAACA,KAAK,KAAK,CAAC,AAACF,CAAAA,EAAI,GAAKkzF,GAAe,EAAG9yF,GAAS2B,EACvEyxF,EAAiBD,EAAcD,EACrC,IAAKzsF,EAAIysF,EAAezsF,EAAI0sF,EAAa1sF,IACvC8+E,GAAQllF,CAAI,CAACoG,EAAE,CAAC,CAAC,CACjBwsF,GAAQ5yF,CAAI,CAACoG,EAAE,CAAC,CAAC,CAEnB8+E,GAAQ6N,EACRH,GAAQG,EACR,IAAMC,EAAYvzF,KAAK,KAAK,CAACF,EAAIkzF,GAAe,EAAInxF,EAC9C2xF,EAAUxzF,KAAK,GAAG,CAACA,KAAK,KAAK,CAAC,AAACF,CAAAA,EAAI,GAAKkzF,GAAe,EAAG9yF,GAAS2B,EACnE,CAAC,EAAG4xF,CAAO,CAAE,EAAGC,CAAO,CAAC,CAAGnzF,CAAI,CAACyB,EAAE,CAExC,IADA6wF,EAAUjwD,EAAO,GACZj8B,EAAI4sF,EAAW5sF,EAAI6sF,EAAS7sF,IAC/Bi8B,CAAAA,EAAO,GAAM5iC,KAAK,GAAG,CACnB,AAACyzF,CAAAA,EAAUhO,CAAG,EAAMllF,CAAAA,CAAI,CAACoG,EAAE,CAAC,CAAC,CAAG+sF,CAAM,EACtC,AAACD,CAAAA,EAAUlzF,CAAI,CAACoG,EAAE,CAAC,CAAC,AAAD,EAAMwsF,CAAAA,EAAOO,CAAM,EACxC,EACWb,IACTA,EAAUjwD,EACVgwD,EAAeryF,CAAI,CAACoG,EAAE,CACtBmsF,EAAQnsF,EAGZ6rF,CAAAA,CAAS,CAACS,IAAe,CAAGL,EAC5B5wF,EAAI8wF,CACN,CAEA,OADAN,CAAS,CAACS,IAAe,CAAG1yF,CAAI,CAAC2yF,EAAS,CACnCV,CACT,EAuImCjyF,EAAMsB,EAAO3B,EAAO23E,EAAgBzlE,GAC/D,KACF,KAAK,UACHogF,EAAYmB,AAzIpB,SAA0BpzF,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,CAAE23E,CAAc,EAC1D,IAEI/3E,EAAGqO,EAAO1O,EAAGoD,EAAG0iF,EAAOqO,EAAUC,EAAUC,EAAYz0E,EAAME,EAF7DkmE,EAAO,EACPC,EAAS,EAEP8M,EAAY,EAAE,CAEduB,EAAOxzF,CAAI,CAACsB,EAAM,CAAC,CAAC,CAEpBkB,EAAKixF,AADEzzF,CAAI,CAFAsB,EAAQ3B,EAAQ,EAEN,CAAC,CAAC,CACX6zF,EAClB,IAAKj0F,EAAI+B,EAAO/B,EAAI+B,EAAQ3B,EAAO,EAAEJ,EAAG,CAEtCL,EAAI,AAAC0O,CAAAA,AADLA,CAAAA,EAAQ5N,CAAI,CAACT,EAAE,AAAD,EACH,CAAC,CAAGi0F,CAAG,EAAKhxF,EAAK80E,EAC5Bh1E,EAAIsL,EAAM,CAAC,CACX,IAAM03E,EAASpmF,AAAI,EAAJA,EACf,GAAIomF,IAAWN,EACT1iF,EAAIwc,GACNA,EAAOxc,EACP+wF,EAAW9zF,GACF+C,EAAI0c,IACbA,EAAO1c,EACPgxF,EAAW/zF,GAEb2lF,EAAO,AAACC,CAAAA,EAASD,EAAOt3E,EAAM,CAAC,AAAD,EAAK,EAAEu3E,MAChC,CACL,IAAMt5B,EAAYtsD,EAAI,EACtB,GAAI,CAAC,QAAc8zF,IAAa,CAAC,QAAcC,GAAW,CACxD,IAAMI,EAAqBj0F,KAAK,GAAG,CAAC4zF,EAAUC,GACxCK,EAAqBl0F,KAAK,GAAG,CAAC4zF,EAAUC,GAC1CI,IAAuBH,GAAcG,IAAuB7nC,GAC9DomC,EAAU,IAAI,CAAC,CACb,GAAGjyF,CAAI,CAAC0zF,EAAmB,CAC3B,EAAGxO,CACL,GAEEyO,IAAuBJ,GAAcI,IAAuB9nC,GAC9DomC,EAAU,IAAI,CAAC,CACb,GAAGjyF,CAAI,CAAC2zF,EAAmB,CAC3B,EAAGzO,CACL,EAEJ,CACI3lF,EAAI,GAAKssD,IAAc0nC,GACzBtB,EAAU,IAAI,CAACjyF,CAAI,CAAC6rD,EAAU,EAEhComC,EAAU,IAAI,CAACrkF,GACfo3E,EAAQM,EACRH,EAAS,EACTrmE,EAAOE,EAAO1c,EACd+wF,EAAWC,EAAWC,EAAah0F,CACrC,CACF,CACA,OAAO0yF,CACT,EAqFqCjyF,EAAMsB,EAAO3B,EAAO23E,GACjD,KACF,SACE,MAAM,AAAIr4E,MAAM,CAAC,kCAAkC,EAAE4S,EAAQ,SAAS,CAAC,CAAC,CAAC,CAC3E,CACA01B,EAAQ,UAAU,CAAG0qD,CACvB,EACF,EACA,QAAQtuD,CAAK,EACX8jD,GAAmB9jD,EACrB,CACF,EAmlEA,OAppDY,CACV,GAAI,SACJ,oBAAoBA,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,MAGnCusD,EAAM7+D,EAAG8O,EAAMoI,EAFnB,IAAM9W,EAAQ,AAACgkC,CAAAA,EAAM,IAAI,CAAC,QAAQ,EAAI,EAAE,AAAD,EAAG,MAAM,CAC1CiwD,EAAU,EAAE,CAElB,IAAKr0F,EAAI,EAAGA,EAAII,EAAO,EAAEJ,EAEvB8O,EAAO+vD,AADPA,CAAAA,EAAOz6B,EAAM,cAAc,CAACpkC,EAAC,EACjB,OAAO,CACnBkX,EAAS,KACLpI,GAAQA,EAAK,OAAO,EAAIA,aAAgBggD,IAC1C53C,CAAAA,EAAS,CACP,QAASktB,EAAM,gBAAgB,CAACpkC,GAChC,MAAOA,EACP,KAAMs0F,AA3UhB,SAAqBxlF,CAAI,CAAEpN,CAAK,CAAEtB,CAAK,EACrC,IAAMwS,EAAO2hF,AA6Cf,SAAyBzlF,CAAI,EAC3B,IAAMwD,EAAUxD,EAAK,OAAO,CACtBk7E,EAAa13E,EAAQ,IAAI,CAC3BM,EAAO,QAAeo3E,GAAcA,EAAW,MAAM,CAAEA,UAI3D,AAHarpF,KAAAA,IAATiS,GACFA,CAAAA,EAAO,CAAC,CAACN,EAAQ,eAAe,AAAD,EAEpB,KAATM,GAAkBA,AAAS,OAATA,IAGlBA,AAAS,KAATA,EACK,SAEFA,EACT,EA3D+B9D,GAC7B,GAAI,QAAS8D,GACX,MAAOslC,CAAAA,MAAMtlC,EAAK,KAAK,GAAYA,EAErC,IAAI0J,EAASqS,WAAW/b,SACxB,AAAI,QAAe0J,IAAWpc,KAAK,KAAK,CAACoc,KAAYA,EAC5Ck4E,AAIX,SAA2BC,CAAO,CAAE/yF,CAAK,CAAE4a,CAAM,CAAElc,CAAK,QAItD,AAHIq0F,CAAAA,AAAY,MAAZA,GAAmBA,AAAY,MAAZA,CAAc,GACnCn4E,CAAAA,EAAS5a,EAAQ4a,CAAK,EAEpBA,IAAW5a,IAAS4a,CAAAA,EAAS,KAAKA,CAAAA,GAAUlc,CAAI,GAG7Ckc,CACT,EAZ6B1J,CAAI,CAAC,EAAE,CAAElR,EAAO4a,EAAQlc,GAE5C,CAAC,SAAU,QAAS,MAAO,QAAS,QAAQ,CAAC,OAAO,CAACwS,IAAS,GAAKA,CAC5E,EAiU4B9D,EAAM9O,EAAGI,GAC3BgkC,MAAAA,EACA,KAAMy6B,EAAK,UAAU,CAAC,OAAO,CAAC,SAAS,CACvC,MAAOA,EAAK,MAAM,CAClB/vD,KAAAA,CACF,GAEF+vD,EAAK,OAAO,CAAG3nD,EACfm9E,EAAQ,IAAI,CAACn9E,GAEf,IAAKlX,EAAI,EAAGA,EAAII,EAAO,EAAEJ,EAAG,CAE1B,GAAI,EADJkX,CAAAA,EAASm9E,CAAO,CAACr0F,EAAE,AAAD,GACHkX,AAAgB,KAAhBA,EAAO,IAAI,CAG1BA,EAAO,IAAI,CAAGw9E,AAlXpB,SAAwBL,CAAO,CAAE3yF,CAAK,CAAEizF,CAAS,MAI3Cr4E,EAFJ,IAAI1J,EAAOsE,AADIm9E,CAAO,CAAC3yF,EAAM,CACX,IAAI,CAChBkzF,EAAU,CAAClzF,EAAM,CAEvB,GAAI,CAACizF,EACH,OAAO/hF,EAET,KAAOA,AAAS,KAATA,GAAkBgiF,AAA0B,KAA1BA,EAAQ,OAAO,CAAChiF,IAAc,CACrD,GAAI,CAAC,QAAeA,GAClB,OAAOA,EAGT,GAAI,CADJ0J,CAAAA,EAAS+3E,CAAO,CAACzhF,EAAK,AAAD,EAEnB,MAEF,GAAI0J,EAAO,OAAO,CAChB,OAAO1J,EAETgiF,EAAQ,IAAI,CAAChiF,GACbA,EAAO0J,EAAO,IAAI,AACpB,CACA,MAAO,EACT,EA2VmC+3E,EAASr0F,EAAGsS,EAAQ,SAAS,CAC5D,CACF,EACA,WAAW8xB,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EAC9B,IAAMgqD,EAAOhqD,AAAqB,eAArBA,EAAQ,QAAQ,CACvBisD,EAAWn6B,EAAM,4BAA4B,GAC7CtB,EAAOsB,EAAM,SAAS,CAC5B,IAAK,IAAIpkC,EAAIu+D,EAAS,MAAM,CAAG,EAAGv+D,GAAK,EAAG,EAAEA,EAAG,CAC7C,IAAMkX,EAASqnD,CAAQ,CAACv+D,EAAE,CAAC,OAAO,CAClC,IAAI,CAACkX,EAGLA,EAAO,IAAI,CAAC,mBAAmB,CAAC4rB,EAAM5rB,EAAO,IAAI,EAC7ColD,GAAQplD,EAAO,IAAI,EACrB2xE,GAAUzkD,EAAM,GAAG,CAAEltB,EAAQ4rB,EAEjC,CACF,EACA,mBAAmBsB,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EACtC,GAAIA,AAAqB,uBAArBA,EAAQ,QAAQ,CAClB,OAEF,IAAMisD,EAAWn6B,EAAM,4BAA4B,GACnD,IAAK,IAAIpkC,EAAIu+D,EAAS,MAAM,CAAG,EAAGv+D,GAAK,EAAG,EAAEA,EAAG,CAC7C,IAAMkX,EAASqnD,CAAQ,CAACv+D,EAAE,CAAC,OAAO,CAC9B2oF,GAAiBzxE,IACnB2xE,GAAUzkD,EAAM,GAAG,CAAEltB,EAAQktB,EAAM,SAAS,CAEhD,CACF,EACA,kBAAkBA,CAAK,CAAE9X,CAAI,CAAEha,CAAO,EACpC,IAAM4E,EAASoV,EAAK,IAAI,CAAC,OAAO,CAChC,GAAI,EAACq8D,GAAiBzxE,IAAW5E,AAAqB,sBAArBA,EAAQ,QAAQ,CAGjDu2E,GAAUzkD,EAAM,GAAG,CAAEltB,EAAQktB,EAAM,SAAS,CAC9C,EACA,SAAU,CACR,UAAW,GACX,SAAU,mBACZ,CACF,EA+kDA,OAvsCoB,CAClB,GAAI,SACJ,SAAUgnD,GACV,MAAMhnD,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EACzB,IAAM02D,EAAS5kC,EAAM,MAAM,CAAG,IAAIgnD,GAAO,CAAC,IAAKhnD,EAAM,GAAG,CAAE9xB,QAAAA,EAAS8xB,MAAAA,CAAK,GACxEwzC,GAAQ,SAAS,CAACxzC,EAAO4kC,EAAQ12D,GACjCslE,GAAQ,MAAM,CAACxzC,EAAO4kC,EACxB,EACA,KAAK5kC,CAAK,EACRwzC,GAAQ,SAAS,CAACxzC,EAAOA,EAAM,MAAM,EACrC,OAAOA,EAAM,MAAM,AACrB,EACA,aAAaA,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EAChC,IAAM02D,EAAS5kC,EAAM,MAAM,CAC3BwzC,GAAQ,SAAS,CAACxzC,EAAO4kC,EAAQ12D,GACjC02D,EAAO,OAAO,CAAG12D,CACnB,EACA,YAAY8xB,CAAK,EACf,IAAM4kC,EAAS5kC,EAAM,MAAM,CAC3B4kC,EAAO,WAAW,GAClBA,EAAO,cAAc,EACvB,EACA,WAAW5kC,CAAK,CAAE9X,CAAI,EAChB,CAACA,EAAK,MAAM,EACd8X,EAAM,MAAM,CAAC,WAAW,CAAC9X,EAAK,KAAK,CAEvC,EACA,SAAU,CACR,QAAS,GACT,SAAU,MACV,MAAO,SACP,SAAU,GACV,QAAS,GACT,OAAQ,IACR,QAAQtkB,CAAC,CAAE+gE,CAAU,CAAEC,CAAM,EAC3B,IAAMtnE,EAAQqnE,EAAW,YAAY,CAC/B8rB,EAAK7rB,EAAO,KAAK,CACnB6rB,EAAG,gBAAgB,CAACnzF,IACtBmzF,EAAG,IAAI,CAACnzF,GACRqnE,EAAW,MAAM,CAAG,KAEpB8rB,EAAG,IAAI,CAACnzF,GACRqnE,EAAW,MAAM,CAAG,GAExB,EACA,QAAS,KACT,QAAS,KACT,OAAQ,CACN,MAAO,AAAC3zC,GAAQA,EAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CACvC,SAAU,GACV,QAAS,GACT,eAAegP,CAAK,EAClB,IAAMqC,EAAWrC,EAAM,IAAI,CAAC,QAAQ,CAC9B,CAAC,OAAQ,CAAC0wD,cAAAA,CAAa,CAAEhsB,WAAAA,CAAU,CAAE0I,UAAAA,CAAS,CAAE5tC,MAAAA,CAAK,CAAC,CAAC,CAAGQ,EAAM,MAAM,CAAC,OAAO,CACpF,OAAOA,EAAM,sBAAsB,GAAG,GAAG,CAAC,AAACy6B,IACzC,IAAMzmD,EAAQymD,EAAK,UAAU,CAAC,QAAQ,CAACi2B,EAAgB,EAAIn0F,KAAAA,GACrDojC,EAAc,QAAU3rB,EAAM,WAAW,EAC/C,MAAO,CACL,KAAMquB,CAAQ,CAACo4B,EAAK,KAAK,CAAC,CAAC,KAAK,CAChC,UAAWzmD,EAAM,eAAe,CAChC,UAAWwrB,EACX,OAAQ,CAACi7B,EAAK,OAAO,CACrB,QAASzmD,EAAM,cAAc,CAC7B,SAAUA,EAAM,UAAU,CAC1B,eAAgBA,EAAM,gBAAgB,CACtC,SAAUA,EAAM,eAAe,CAC/B,UAAW,AAAC2rB,CAAAA,EAAY,KAAK,CAAGA,EAAY,MAAM,AAAD,EAAK,EACtD,YAAa3rB,EAAM,WAAW,CAC9B,WAAY0wD,GAAc1wD,EAAM,UAAU,CAC1C,SAAUA,EAAM,QAAQ,CACxB,UAAWo5D,GAAap5D,EAAM,SAAS,CACvC,aAAc,EACd,aAAcymD,EAAK,KAAK,AAC1B,CACF,EAAG,IAAI,CACT,CACF,EACA,MAAO,CACL,MAAO,AAACzpC,GAAQA,EAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CACvC,QAAS,GACT,SAAU,SACV,KAAM,EACR,CACF,EACA,YAAa,CACX,YAAa,AAACne,GAAS,CAACA,EAAK,UAAU,CAAC,MACxC,OAAQ,CACN,YAAa,AAACA,GAAS,CAAC,CAAC,iBAAkB,SAAU,OAAO,CAAC,QAAQ,CAACA,EACxE,CACF,CACF,EA8mCA,SAz+BsB,CACpB,GAAI,WACJ,MAAMmtB,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EACzB,IAAMgT,EAAQ,IAAI8nE,GAAM,CACtB,IAAKhpD,EAAM,GAAG,CACd9xB,QAAAA,EACA8xB,MAAAA,CACF,GACAwzC,GAAQ,SAAS,CAACxzC,EAAO9e,EAAOhT,GAChCslE,GAAQ,MAAM,CAACxzC,EAAO9e,GACtB0F,GAAI,GAAG,CAACoZ,EAAO9e,EACjB,EACA,KAAK8e,CAAK,EACRwzC,GAAQ,SAAS,CAACxzC,EAAOpZ,GAAI,GAAG,CAACoZ,IACjCpZ,GAAI,MAAM,CAACoZ,EACb,EACA,aAAaA,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EAChC,IAAMgT,EAAQ0F,GAAI,GAAG,CAACoZ,GACtBwzC,GAAQ,SAAS,CAACxzC,EAAO9e,EAAOhT,GAChCgT,EAAM,OAAO,CAAGhT,CAClB,EACA,SAAU,CACR,MAAO,SACP,QAAS,GACT,KAAM,CACJ,OAAQ,QACV,EACA,SAAU,GACV,QAAS,EACT,SAAU,MACV,KAAM,GACN,OAAQ,IACV,EACA,cAAe,CACb,MAAO,OACT,EACA,YAAa,CACX,YAAa,GACb,WAAY,EACd,CACF,EAk8BA,MAhhCmB,CACjB,GAAI,QACJ,SAAU86E,GACV,MAAMhpD,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,GACzByiF,AAdJ,SAAqB3wD,CAAK,CAAE6pC,CAAS,EACnC,IAAM3oD,EAAQ,IAAI8nE,GAAM,CACtB,IAAKhpD,EAAM,GAAG,CACd,QAAS6pC,EACT7pC,MAAAA,CACF,GACAwzC,GAAQ,SAAS,CAACxzC,EAAO9e,EAAO2oD,GAChC2J,GAAQ,MAAM,CAACxzC,EAAO9e,GACtB8e,EAAM,UAAU,CAAG9e,CACrB,EAKgB8e,EAAO9xB,EACrB,EACA,KAAK8xB,CAAK,EACR,IAAM4wD,EAAa5wD,EAAM,UAAU,CACnCwzC,GAAQ,SAAS,CAACxzC,EAAO4wD,GACzB,OAAO5wD,EAAM,UAAU,AACzB,EACA,aAAaA,CAAK,CAAEouD,CAAK,CAAElgF,CAAO,EAChC,IAAMgT,EAAQ8e,EAAM,UAAU,CAC9BwzC,GAAQ,SAAS,CAACxzC,EAAO9e,EAAOhT,GAChCgT,EAAM,OAAO,CAAGhT,CAClB,EACA,SAAU,CACR,MAAO,SACP,QAAS,GACT,KAAM,CACJ,OAAQ,MACV,EACA,SAAU,GACV,QAAS,GACT,SAAU,MACV,KAAM,GACN,OAAQ,GACV,EACA,cAAe,CACb,MAAO,OACT,EACA,YAAa,CACX,YAAa,GACb,WAAY,EACd,CACF,EA8+BA,QAASigF,EACT,GAEA,IAAM0C,GAAc,CAACzpE,EAAQvI,EAAKvhB,EAAOwzF,KACnC,AAAe,UAAf,OAAOjyE,GACTvhB,EAAQ8pB,EAAO,IAAI,CAACvI,GAAO,EAC3BiyE,EAAY,OAAO,CAAC,CAACxzF,MAAAA,EAAO,MAAOuhB,CAAG,IAC7Bi1B,MAAMj1B,IACfvhB,CAAAA,EAAQ,IAAG,EAENA,GAUH6vE,GAAa,CAAC7vE,EAAOugC,IAAQvgC,AAAU,OAAVA,EAAiB,KAAO,QAAYxB,KAAK,KAAK,CAACwB,GAAQ,EAAGugC,EAC7F,OAAMkzD,WAAsB5xC,EAC1B,YAAYte,CAAG,CAAE,CACf,KAAK,CAACA,GACN,IAAI,CAAC,WAAW,CAAGtkC,KAAAA,EACnB,IAAI,CAAC,WAAW,CAAG,EACnB,IAAI,CAAC,YAAY,CAAG,EAAE,AACxB,CACA,KAAKo7E,CAAY,CAAE,CACjB,IAAMqZ,EAAQ,IAAI,CAAC,YAAY,CAC/B,GAAIA,EAAM,MAAM,CAAE,CAChB,IAAM5pE,EAAS,IAAI,CAAC,SAAS,GAC7B,IAAK,GAAM,CAAC9pB,MAAAA,CAAK,CAAEkP,MAAAA,CAAK,CAAC,GAAIwkF,EACvB5pE,CAAM,CAAC9pB,EAAM,GAAKkP,GACpB4a,EAAO,MAAM,CAAC9pB,EAAO,EAGzB,KAAI,CAAC,YAAY,CAAG,EAAE,AACxB,CACA,KAAK,CAAC,KAAKq6E,EACb,CACA,MAAM94D,CAAG,CAAEvhB,CAAK,CAAE,CAChB,GAAI,QAAcuhB,GAChB,OAAO,KAET,IAAMuI,EAAS,IAAI,CAAC,SAAS,GAG7B,OAAO+lD,GAFP7vE,EAAQ2rC,SAAS3rC,IAAU8pB,CAAM,CAAC9pB,EAAM,GAAKuhB,EAAMvhB,EAC/C2zF,AAnCR,SAAwB7pE,CAAM,CAAEvI,CAAG,CAAEvhB,CAAK,CAAEwzF,CAAW,EACrD,IAAMn4E,EAAQyO,EAAO,OAAO,CAACvI,UAC7B,AAAIlG,AAAU,KAAVA,EACKk4E,GAAYzpE,EAAQvI,EAAKvhB,EAAOwzF,GAGlCn4E,IADMyO,EAAO,WAAW,CAACvI,GACRvhB,EAAQqb,CAClC,EA4BuByO,EAAQvI,EAAK,QAAevhB,EAAOuhB,GAAM,IAAI,CAAC,YAAY,EACpDuI,EAAO,MAAM,CAAG,EAC3C,CACA,qBAAsB,CACpB,GAAM,CAACg3C,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAC,CAAG,IAAI,CAAC,aAAa,GAC/C,CAACzgC,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAC,CAAG,IAAI,CAAC,SAAS,CAAC,GACJ,WAAxB,IAAI,CAAC,OAAO,CAAC,MAAM,GACjB,CAACugC,GACHxgC,CAAAA,EAAM,GAEJ,CAACygC,GACHxgC,CAAAA,EAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAG,IAGpC,IAAI,CAAC,GAAG,CAAGD,EACX,IAAI,CAAC,GAAG,CAAGC,CACb,CACA,YAAa,CACX,IAAMD,EAAM,IAAI,CAAC,GAAG,CACdC,EAAM,IAAI,CAAC,GAAG,CACd/uB,EAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAC5Bu3D,EAAQ,EAAE,CACZj/C,EAAS,IAAI,CAAC,SAAS,GAC3BA,EAAS,AAACwW,AAAQ,IAARA,GAAaC,IAAQzW,EAAO,MAAM,CAAG,EAAKA,EAASA,EAAO,KAAK,CAACwW,EAAKC,EAAM,GACrF,IAAI,CAAC,WAAW,CAAG/hC,KAAK,GAAG,CAACsrB,EAAO,MAAM,CAAItY,CAAAA,EAAS,EAAI,GAAI,GAC9D,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,GAAG,CAAIA,CAAAA,EAAS,GAAM,GAC9C,IAAK,IAAItR,EAAQogC,EAAKpgC,GAASqgC,EAAKrgC,IAClC6oE,EAAM,IAAI,CAAC,CAAC7oE,MAAAA,CAAK,GAEnB,OAAO6oE,CACT,CACA,iBAAiB7oE,CAAK,CAAE,CACtB,IAAM4pB,EAAS,IAAI,CAAC,SAAS,UAC7B,AAAI5pB,GAAS,GAAKA,EAAQ4pB,EAAO,MAAM,CAC9BA,CAAM,CAAC5pB,EAAM,CAEfA,CACT,CACA,WAAY,CACV,KAAK,CAAC,YACF,CAAC,IAAI,CAAC,YAAY,IACpB,KAAI,CAAC,cAAc,CAAG,CAAC,IAAI,CAAC,cAAc,AAAD,CAE7C,CACA,iBAAiBA,CAAK,CAAE,CAItB,MAHqB,UAAjB,OAAOA,GACTA,CAAAA,EAAQ,IAAI,CAAC,KAAK,CAACA,EAAK,EAEnBA,AAAU,OAAVA,EAAiB+1C,IAAM,IAAI,CAAC,kBAAkB,CAAC,AAAC/1C,CAAAA,EAAQ,IAAI,CAAC,WAAW,AAAD,EAAK,IAAI,CAAC,WAAW,CACrG,CACA,gBAAgBF,CAAK,CAAE,CACrB,IAAM+oE,EAAQ,IAAI,CAAC,KAAK,QACxB,AAAI/oE,EAAQ,GAAKA,EAAQ+oE,EAAM,MAAM,CAAG,EAC/B,KAEF,IAAI,CAAC,gBAAgB,CAACA,CAAK,CAAC/oE,EAAM,CAAC,KAAK,CACjD,CACA,iBAAiBoiC,CAAK,CAAE,CACtB,OAAO5jC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,kBAAkB,CAAC4jC,GAAS,IAAI,CAAC,WAAW,CACxF,CACA,cAAe,CACb,OAAO,IAAI,CAAC,MAAM,AACpB,CACF,CACAqxD,GAAc,EAAE,CAAG,WACnBA,GAAc,QAAQ,CAAG,CACvB,MAAO,CACL,SAAUA,GAAc,SAAS,CAAC,gBAAgB,AACpD,CACF,EAsFA,SAASG,GAAkB1zF,CAAK,CAAE2zF,CAAU,CAAE,CAACvwB,WAAAA,CAAU,CAAE2I,YAAAA,CAAW,CAAC,EACrE,IAAMrqB,EAAM,QAAUqqB,GAChBlmE,EAAQ,AAACu9D,CAAAA,EAAa9kE,KAAK,GAAG,CAACojD,GAAOpjD,KAAK,GAAG,CAACojD,EAAG,GAAM,KACxD/0C,EAAS,IAAOgnF,EAAa,AAAC,IAAK3zF,CAAI,EAAG,MAAM,CACtD,OAAO1B,KAAK,GAAG,CAACq1F,EAAa9tF,EAAO8G,EACtC,CACA,MAAMinF,WAAwBjyC,EAC5B,YAAYte,CAAG,CAAE,CACf,KAAK,CAACA,GACN,IAAI,CAAC,KAAK,CAAGtkC,KAAAA,EACb,IAAI,CAAC,GAAG,CAAGA,KAAAA,EACX,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,SAAS,CAAGA,KAAAA,EACjB,IAAI,CAAC,WAAW,CAAG,CACrB,CACA,MAAMsiB,CAAG,CAAEvhB,CAAK,CAAE,OAChB,AAAI,QAAcuhB,IAGd,AAAC,CAAe,UAAf,OAAOA,GAAoBA,aAAemiB,MAAK,GAAM,CAACiI,SAAS,CAACpqB,GAF5D,KAKF,CAACA,CACV,CACA,wBAAyB,CACvB,GAAM,CAACmpD,YAAAA,CAAW,CAAC,CAAG,IAAI,CAAC,OAAO,CAC5B,CAAC5J,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAC,CAAG,IAAI,CAAC,aAAa,GAC/C,CAACzgC,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAC,CAAG,IAAI,CACfwzD,EAAShxF,GAAMu9B,EAAMwgC,EAAaxgC,EAAMv9B,EACxCixF,EAASjxF,GAAMw9B,EAAMwgC,EAAaxgC,EAAMx9B,EAC9C,GAAI2nE,EAAa,CACf,IAAMupB,EAAU,QAAK3zD,GACf4zD,EAAU,QAAK3zD,EACjB0zD,CAAAA,EAAU,GAAKC,EAAU,EAC3BF,EAAO,GACEC,EAAU,GAAKC,EAAU,GAClCH,EAAO,EAEX,CACA,GAAIzzD,IAAQC,EAAK,CACf,IAAI/uB,EAAS,EACT+uB,CAAAA,GAAOmD,OAAO,gBAAgB,EAAIpD,GAAOoD,OAAO,gBAAgB,AAAD,GACjElyB,CAAAA,EAAShT,KAAK,GAAG,CAAC+hC,AAAM,IAANA,EAAU,EAE9ByzD,EAAOzzD,EAAM/uB,GACT,CAACk5D,GACHqpB,EAAOzzD,EAAM9uB,EAEjB,CACA,IAAI,CAAC,GAAG,CAAG8uB,EACX,IAAI,CAAC,GAAG,CAAGC,CACb,CACA,cAAe,KAGT4zD,EADJ,GAAI,CAACC,cAAAA,CAAa,CAAEC,SAAAA,CAAQ,CAAC,CADZ,IAAI,CAAC,OAAO,CAAC,KAAK,CAgBnC,OAbIA,EACFF,CAAAA,EAAW31F,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAG61F,GAAY71F,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAG61F,GAAY,GAC/D,MACblpE,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAEkpE,EAAS,+BAA+B,EAAEF,EAAS,yBAAyB,CAAC,EAC/HA,EAAW,MAGbA,EAAW,IAAI,CAAC,gBAAgB,GAChCC,EAAgBA,GAAiB,IAE/BA,GACFD,CAAAA,EAAW31F,KAAK,GAAG,CAAC41F,EAAeD,EAAQ,EAEtCA,CACT,CACA,kBAAmB,CACjB,OAAOzwD,OAAO,iBAAiB,AACjC,CACA,YAAa,CACX,IAAM+4B,EAAO,IAAI,CAAC,OAAO,CACnBmO,EAAWnO,EAAK,KAAK,CACvB03B,EAAW,IAAI,CAAC,YAAY,GAE1BG,EAA0B,CAC9BH,SAFFA,EAAW31F,KAAK,GAAG,CAAC,EAAG21F,GAGrB,OAAQ13B,EAAK,MAAM,CACnB,IAAKA,EAAK,GAAG,CACb,IAAKA,EAAK,GAAG,CACb,UAAWmO,EAAS,SAAS,CAC7B,KAAMA,EAAS,QAAQ,CACvB,MAAOA,EAAS,KAAK,CACrB,UAAW,IAAI,CAAC,UAAU,GAC1B,WAAY,IAAI,CAAC,YAAY,GAC7B,YAAaA,EAAS,WAAW,EAAI,EACrC,cAAeA,AAA2B,KAA3BA,EAAS,aAAa,AACvC,EAEM7B,EAAQwrB,AAjLlB,SAAyBC,CAAiB,CAAEC,CAAS,MAY/Cz5B,EAAQ05B,EAASC,EAASC,EAX9B,IAAM7rB,EAAQ,EAAE,CAEV,CAAC35D,OAAAA,CAAM,CAAEslD,KAAAA,CAAI,CAAEp0B,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAEyM,UAAAA,CAAS,CAAEtuC,MAAAA,CAAK,CAAEy1F,SAAAA,CAAQ,CAAEU,UAAAA,CAAS,CAAEC,cAAAA,CAAa,CAAC,CAAGN,EACjF5hB,EAAOle,GAAQ,EACfqgC,EAAYZ,EAAW,EACvB,CAAC,IAAKa,CAAI,CAAE,IAAKC,CAAI,CAAC,CAAGR,EACzB3zB,EAAa,CAAC,QAAcxgC,GAC5BygC,EAAa,CAAC,QAAcxgC,GAC5B20D,EAAe,CAAC,QAAcx2F,GAC9Bm1F,EAAa,AAACoB,CAAAA,EAAOD,CAAG,EAAMH,CAAAA,EAAY,GAC5ChvB,EAAU,SAAQ,AAACovB,CAAAA,EAAOD,CAAG,EAAKD,EAAYniB,GAAQA,EAE1D,GAAI/M,EAXgB,OAWS,CAAC/E,GAAc,CAACC,EAC3C,MAAO,CAAC,CAAC,MAAOi0B,CAAI,EAAG,CAAC,MAAOC,CAAI,EAAE,CAEvCL,CAAAA,EAAYp2F,KAAK,IAAI,CAACy2F,EAAOpvB,GAAWrnE,KAAK,KAAK,CAACw2F,EAAOnvB,EAAO,EACjDkvB,GACdlvB,CAAAA,EAAU,SAAQ+uB,EAAY/uB,EAAUkvB,EAAYniB,GAAQA,CAAG,EAE7D,CAAC,QAAc5lC,IAEjB64B,CAAAA,EAAUrnE,KAAK,IAAI,CAACqnE,EADpB7K,CAAAA,EAASx8D,KAAK,GAAG,CAAC,GAAIwuC,EAAS,GACSguB,CAAK,EAE3C5rD,AAAW,UAAXA,GACFslF,EAAUl2F,KAAK,KAAK,CAACw2F,EAAOnvB,GAAWA,EACvC8uB,EAAUn2F,KAAK,IAAI,CAACy2F,EAAOpvB,GAAWA,IAEtC6uB,EAAUM,EACVL,EAAUM,GAERn0B,GAAcC,GAAcrM,GAAQ,SAAY,AAACn0B,CAAAA,EAAMD,CAAE,EAAKo0B,EAAMmR,EAAU,MAChF+uB,EAAYp2F,KAAK,KAAK,CAACA,KAAK,GAAG,CAAC,AAAC+hC,CAAAA,EAAMD,CAAE,EAAKulC,EAASsuB,IACvDtuB,EAAU,AAACtlC,CAAAA,EAAMD,CAAE,EAAKs0D,EACxBF,EAAUp0D,EACVq0D,EAAUp0D,GACD20D,GACTR,EAAU5zB,EAAaxgC,EAAMo0D,EAG7B7uB,EAAU,AAAC8uB,CAAAA,AAFXA,CAAAA,EAAU5zB,EAAaxgC,EAAMo0D,CAAM,EAEdD,CAAM,EAD3BE,CAAAA,EAAYl2F,EAAQ,KAGpBk2F,EAAY,AAACD,CAAAA,EAAUD,CAAM,EAAK7uB,EAEhC+uB,EADE,SAAaA,EAAWp2F,KAAK,KAAK,CAACo2F,GAAY/uB,EAAU,KAC/CrnE,KAAK,KAAK,CAACo2F,GAEXp2F,KAAK,IAAI,CAACo2F,IAG1B,IAAMO,EAAgB32F,KAAK,GAAG,CAC5B,SAAeqnE,GACf,SAAe6uB,IAGjBA,EAAUl2F,KAAK,KAAK,CAACk2F,EADrB15B,CAAAA,EAASx8D,KAAK,GAAG,CAAC,GAAI,QAAcwuC,GAAamoD,EAAgBnoD,EAAS,GACjCguB,EACzC25B,EAAUn2F,KAAK,KAAK,CAACm2F,EAAU35B,GAAUA,EACzC,IAAI71D,EAAI,EAcR,IAbI27D,IACEg0B,GAAiBJ,IAAYp0D,GAC/ByoC,EAAM,IAAI,CAAC,CAAC,MAAOzoC,CAAG,GAClBo0D,EAAUp0D,GACZn7B,IAEE,SAAa3G,KAAK,KAAK,CAAC,AAACk2F,CAAAA,EAAUvvF,EAAI0gE,CAAM,EAAK7K,GAAUA,EAAQ16B,EAAKszD,GAAkBtzD,EAAKuzD,EAAYW,KAC9GrvF,KAEOuvF,EAAUp0D,GACnBn7B,KAGGA,EAAIyvF,EAAW,EAAEzvF,EACtB4jE,EAAM,IAAI,CAAC,CAAC,MAAOvqE,KAAK,KAAK,CAAC,AAACk2F,CAAAA,EAAUvvF,EAAI0gE,CAAM,EAAK7K,GAAUA,CAAM,GAW1E,OATI+F,GAAc+zB,GAAiBH,IAAYp0D,EACzCwoC,EAAM,MAAM,EAAI,SAAaA,CAAK,CAACA,EAAM,MAAM,CAAG,EAAE,CAAC,KAAK,CAAExoC,EAAKqzD,GAAkBrzD,EAAKszD,EAAYW,IACtGzrB,CAAK,CAACA,EAAM,MAAM,CAAG,EAAE,CAAC,KAAK,CAAGxoC,EAEhCwoC,EAAM,IAAI,CAAC,CAAC,MAAOxoC,CAAG,GAEf,EAACwgC,GAAc4zB,IAAYp0D,CAAE,GACtCwoC,EAAM,IAAI,CAAC,CAAC,MAAO4rB,CAAO,GAErB5rB,CACT,EA8FkCurB,EADZ,IAAI,CAAC,MAAM,EAAI,IAAI,EAarC,MAXoB,UAAhB73B,EAAK,MAAM,EACb,SAAmBsM,EAAO,IAAI,CAAE,SAE9BtM,EAAK,OAAO,EACdsM,EAAM,OAAO,GACb,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,GAEnB,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,EAEdA,CACT,CACA,WAAY,CACV,IAAMA,EAAQ,IAAI,CAAC,KAAK,CACpB1oE,EAAQ,IAAI,CAAC,GAAG,CAChBD,EAAM,IAAI,CAAC,GAAG,CAElB,GADA,KAAK,CAAC,YACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAI2oE,EAAM,MAAM,CAAE,CACvC,IAAMv3D,EAAS,AAACpR,CAAAA,EAAMC,CAAI,EAAK7B,KAAK,GAAG,CAACuqE,EAAM,MAAM,CAAG,EAAG,GAAK,EAC/D1oE,GAASmR,EACTpR,GAAOoR,CACT,CACA,IAAI,CAAC,WAAW,CAAGnR,EACnB,IAAI,CAAC,SAAS,CAAGD,EACjB,IAAI,CAAC,WAAW,CAAGA,EAAMC,CAC3B,CACA,iBAAiBH,CAAK,CAAE,CACtB,MAAO,QAAaA,EAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CACjF,CACF,CAEA,MAAMk1F,WAAoBtB,GACxB,qBAAsB,CACpB,GAAM,CAACxzD,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAC,CAAG,IAAI,CAAC,SAAS,CAAC,GAClC,KAAI,CAAC,GAAG,CAAG,QAAeD,GAAOA,EAAM,EACvC,IAAI,CAAC,GAAG,CAAG,QAAeC,GAAOA,EAAM,EACvC,IAAI,CAAC,sBAAsB,EAC7B,CACA,kBAAmB,CACjB,IAAM+iC,EAAa,IAAI,CAAC,YAAY,GAC9Bz2D,EAASy2D,EAAa,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,MAAM,CAC9C2I,EAAc,QAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EACtDlmE,EAAQ,AAACu9D,CAAAA,EAAa9kE,KAAK,GAAG,CAACytE,GAAeztE,KAAK,GAAG,CAACytE,EAAW,GAAM,KAE9E,OAAOztE,KAAK,IAAI,CAACqO,EAASrO,KAAK,GAAG,CAAC,GAAI8uE,AADtB,IAAI,CAAC,uBAAuB,CAAC,GACE,UAAU,CAAGvnE,GAC/D,CACA,iBAAiB7F,CAAK,CAAE,CACtB,OAAOA,AAAU,OAAVA,EAAiB+1C,IAAM,IAAI,CAAC,kBAAkB,CAAC,AAAC/1C,CAAAA,EAAQ,IAAI,CAAC,WAAW,AAAD,EAAK,IAAI,CAAC,WAAW,CACrG,CACA,iBAAiBkiC,CAAK,CAAE,CACtB,OAAO,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,kBAAkB,CAACA,GAAS,IAAI,CAAC,WAAW,AAC7E,CACF,CAQA,SAASizD,GAAQC,CAAO,EAEtB,OAAOh6B,AAAW,GADHg6B,EAAW92F,KAAK,GAAG,CAAC,GAAIA,KAAK,KAAK,CAAC,QAAM82F,IAE1D,CAVAF,GAAY,EAAE,CAAG,SACjBA,GAAY,QAAQ,CAAG,CACrB,MAAO,CACL,SAAU9rB,EAAiB,OAAO,AACpC,CACF,CA4BA,OAAMisB,WAAyB1zC,EAC7B,YAAYte,CAAG,CAAE,CACf,KAAK,CAACA,GACN,IAAI,CAAC,KAAK,CAAGtkC,KAAAA,EACb,IAAI,CAAC,GAAG,CAAGA,KAAAA,EACX,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,WAAW,CAAG,CACrB,CACA,MAAMsiB,CAAG,CAAEvhB,CAAK,CAAE,CAChB,IAAME,EAAQ4zF,GAAgB,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAE,CAACvyE,EAAKvhB,EAAM,EACtE,GAAIE,AAAU,IAAVA,EAAa,CACf,IAAI,CAAC,KAAK,CAAG,GACb,MACF,CACA,MAAO,QAAeA,IAAUA,EAAQ,EAAIA,EAAQ,IACtD,CACA,qBAAsB,CACpB,GAAM,CAACogC,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAC,CAAG,IAAI,CAAC,SAAS,CAAC,GAClC,KAAI,CAAC,GAAG,CAAG,QAAeD,GAAO9hC,KAAK,GAAG,CAAC,EAAG8hC,GAAO,KACpD,IAAI,CAAC,GAAG,CAAG,QAAeC,GAAO/hC,KAAK,GAAG,CAAC,EAAG+hC,GAAO,KAChD,IAAI,CAAC,OAAO,CAAC,WAAW,EAC1B,KAAI,CAAC,KAAK,CAAG,EAAG,EAElB,IAAI,CAAC,sBAAsB,EAC7B,CACA,wBAAyB,CACvB,GAAM,CAACugC,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAC,CAAG,IAAI,CAAC,aAAa,GAC/CzgC,EAAM,IAAI,CAAC,GAAG,CACdC,EAAM,IAAI,CAAC,GAAG,CACZwzD,EAAShxF,GAAMu9B,EAAMwgC,EAAaxgC,EAAMv9B,EACxCixF,EAASjxF,GAAMw9B,EAAMwgC,EAAaxgC,EAAMx9B,EACxCyyF,EAAM,CAACzyF,EAAGxE,IAAMC,KAAK,GAAG,CAAC,GAAIA,KAAK,KAAK,CAAC,QAAMuE,IAAMxE,GACtD+hC,IAAQC,IACND,GAAO,GACTyzD,EAAO,GACPC,EAAO,MAEPD,EAAOyB,EAAIl1D,EAAK,KAChB0zD,EAAOwB,EAAIj1D,EAAK,MAGhBD,GAAO,GACTyzD,EAAOyB,EAAIj1D,EAAK,KAEdA,GAAO,GACTyzD,EAAOwB,EAAIl1D,EAAK,IAEd,IAAI,CAAC,KAAK,EAAI,IAAI,CAAC,GAAG,GAAK,IAAI,CAAC,aAAa,EAAIA,IAAQk1D,EAAI,IAAI,CAAC,GAAG,CAAE,IACzEzB,EAAOyB,EAAIl1D,EAAK,KAElB,IAAI,CAAC,GAAG,CAAGA,EACX,IAAI,CAAC,GAAG,CAAGC,CACb,CACA,YAAa,CACX,IAAMk8B,EAAO,IAAI,CAAC,OAAO,CAKnBsM,EAAQ0sB,AAjFlB,SAAuBjB,CAAiB,CAAEC,CAAS,EACjD,IAAMiB,EAASl3F,KAAK,KAAK,CAAC,QAAMi2F,EAAU,GAAG,GACvCkB,EAAiBn3F,KAAK,IAAI,CAACi2F,EAAU,GAAG,CAAGj2F,KAAK,GAAG,CAAC,GAAIk3F,IACxD3sB,EAAQ,EAAE,CACZusB,EAAU,QAAgBd,EAAkB,GAAG,CAAEh2F,KAAK,GAAG,CAAC,GAAIA,KAAK,KAAK,CAAC,QAAMi2F,EAAU,GAAG,KAC5Fe,EAAMh3F,KAAK,KAAK,CAAC,QAAM82F,IACvBM,EAAcp3F,KAAK,KAAK,CAAC82F,EAAU92F,KAAK,GAAG,CAAC,GAAIg3F,IAChDxoD,EAAYwoD,EAAM,EAAIh3F,KAAK,GAAG,CAAC,GAAIA,KAAK,GAAG,CAACg3F,IAAQ,EACxD,GACEzsB,EAAM,IAAI,CAAC,CAAC,MAAOusB,EAAS,MAAOD,GAAQC,EAAQ,GAE/B,MAAhBM,IACFA,EAAc,EAEd5oD,EAAYwoD,EAAAA,GAAO,EAAI,EAAIxoD,GAE7BsoD,EAAU92F,KAAK,KAAK,CAACo3F,EAAcp3F,KAAK,GAAG,CAAC,GAAIg3F,GAAOxoD,GAAaA,QAC7DwoD,EAAME,GAAWF,IAAQE,GAAUE,EAAcD,EAAiB,CAC3E,IAAME,EAAW,QAAgBrB,EAAkB,GAAG,CAAEc,GAExD,OADAvsB,EAAM,IAAI,CAAC,CAAC,MAAO8sB,EAAU,MAAOR,GAAQC,EAAQ,GAC7CvsB,CACT,EAwD8B,CACxB,IAAK,IAAI,CAAC,QAAQ,CAClB,IAAK,IAAI,CAAC,QAAQ,AACpB,EAC+C,IAAI,EAYnD,MAXoB,UAAhBtM,EAAK,MAAM,EACb,SAAmBsM,EAAO,IAAI,CAAE,SAE9BtM,EAAK,OAAO,EACdsM,EAAM,OAAO,GACb,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,GAEnB,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,EAEdA,CACT,CACA,iBAAiB7oE,CAAK,CAAE,CACtB,OAAOA,AAAUjB,KAAAA,IAAViB,EACH,IACA,QAAaA,EAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAC9E,CACA,WAAY,CACV,IAAMG,EAAQ,IAAI,CAAC,GAAG,CACtB,KAAK,CAAC,YACN,IAAI,CAAC,WAAW,CAAG,QAAMA,GACzB,IAAI,CAAC,WAAW,CAAG,QAAM,IAAI,CAAC,GAAG,EAAI,QAAMA,EAC7C,CACA,iBAAiBH,CAAK,CAAE,OAItB,CAHIA,CAAAA,AAAUjB,KAAAA,IAAViB,GAAuBA,AAAU,IAAVA,CAAU,GACnCA,CAAAA,EAAQ,IAAI,CAAC,GAAG,AAAD,EAEbA,AAAU,OAAVA,GAAkBs2C,MAAMt2C,IACnB+1C,IAEF,IAAI,CAAC,kBAAkB,CAAC/1C,IAAU,IAAI,CAAC,GAAG,CAC7C,EACA,AAAC,SAAMA,GAAS,IAAI,CAAC,WAAW,AAAD,EAAK,IAAI,CAAC,WAAW,CAC1D,CACA,iBAAiBkiC,CAAK,CAAE,CACtB,IAAM4rC,EAAU,IAAI,CAAC,kBAAkB,CAAC5rC,GACxC,OAAO5jC,KAAK,GAAG,CAAC,GAAI,IAAI,CAAC,WAAW,CAAGwvE,EAAU,IAAI,CAAC,WAAW,CACnE,CACF,CAWA,SAAS8nB,GAAsBr5B,CAAI,EACjC,IAAMmO,EAAWnO,EAAK,KAAK,CAC3B,GAAImO,EAAS,OAAO,EAAInO,EAAK,OAAO,CAAE,CACpC,IAAM1zD,EAAU,QAAU6hE,EAAS,eAAe,EAClD,MAAO,QAAeA,EAAS,IAAI,EAAIA,EAAS,IAAI,CAAC,IAAI,CAAE,aAAkB,EAAI7hE,EAAQ,MAAM,AACjG,CACA,OAAO,CACT,CAjBAwsF,GAAiB,EAAE,CAAG,cACtBA,GAAiB,QAAQ,CAAG,CAC1B,MAAO,CACL,SAAUjsB,EAAiB,WAAW,CACtC,MAAO,CACL,QAAS,EACX,CACF,CACF,EAiBA,SAASysB,GAAgBvmF,CAAK,CAAE+lE,CAAG,CAAEp6D,CAAI,CAAEmlB,CAAG,CAAEC,CAAG,SACjD,AAAI/wB,IAAU8wB,GAAO9wB,IAAU+wB,EACtB,CACL,MAAOg1C,EAAOp6D,EAAO,EACrB,IAAKo6D,EAAOp6D,EAAO,CACrB,EACS3L,EAAQ8wB,GAAO9wB,EAAQ+wB,EACzB,CACL,MAAOg1C,EAAMp6D,EACb,IAAKo6D,CACP,EAEK,CACL,MAAOA,EACP,IAAKA,EAAMp6D,CACb,CACF,CAoJA,SAAS66E,GAAepmF,CAAK,CAAE9G,CAAM,CAAEy3E,CAAQ,CAAEwQ,CAAU,EACzD,GAAM,CAACr9D,IAAAA,CAAG,CAAC,CAAG9jB,EACd,GAAI2wE,EACF7sD,EAAI,GAAG,CAAC9jB,EAAM,OAAO,CAAEA,EAAM,OAAO,CAAE9G,EAAQ,EAAG,GAAG,MAC/C,CACL,IAAI2/D,EAAgB74D,EAAM,gBAAgB,CAAC,EAAG9G,GAC9C4qB,EAAI,MAAM,CAAC+0C,EAAc,CAAC,CAAEA,EAAc,CAAC,EAC3C,IAAK,IAAInqE,EAAI,EAAGA,EAAIyyF,EAAYzyF,IAC9BmqE,EAAgB74D,EAAM,gBAAgB,CAACtR,EAAGwK,GAC1C4qB,EAAI,MAAM,CAAC+0C,EAAc,CAAC,CAAEA,EAAc,CAAC,CAE/C,CACF,CA0BA,MAAMwtB,WAA0BnC,GAC9B,YAAYvwD,CAAG,CAAE,CACf,KAAK,CAACA,GACN,IAAI,CAAC,OAAO,CAAGtkC,KAAAA,EACf,IAAI,CAAC,OAAO,CAAGA,KAAAA,EACf,IAAI,CAAC,WAAW,CAAGA,KAAAA,EACnB,IAAI,CAAC,YAAY,CAAG,EAAE,CACtB,IAAI,CAAC,gBAAgB,CAAG,EAAE,AAC5B,CACA,eAAgB,CACd,IAAM8J,EAAU,IAAI,CAAC,QAAQ,CAAG,QAAU+sF,GAAsB,IAAI,CAAC,OAAO,EAAI,GAC1EhyF,EAAI,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,QAAQ,CAAGiF,EAAQ,KAAK,CAC9Cg6B,EAAI,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,SAAS,CAAGh6B,EAAQ,MAAM,AACvD,KAAI,CAAC,OAAO,CAAGvK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAGsF,EAAI,EAAIiF,EAAQ,IAAI,EAC1D,IAAI,CAAC,OAAO,CAAGvK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAGukC,EAAI,EAAIh6B,EAAQ,GAAG,EACxD,IAAI,CAAC,WAAW,CAAGvK,KAAK,KAAK,CAACA,KAAK,GAAG,CAACsF,EAAGi/B,GAAK,EACjD,CACA,qBAAsB,CACpB,GAAM,CAACzC,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAC,CAAG,IAAI,CAAC,SAAS,CAAC,GAClC,KAAI,CAAC,GAAG,CAAG,QAAeD,IAAQ,CAACkW,MAAMlW,GAAOA,EAAM,EACtD,IAAI,CAAC,GAAG,CAAG,QAAeC,IAAQ,CAACiW,MAAMjW,GAAOA,EAAM,EACtD,IAAI,CAAC,sBAAsB,EAC7B,CACA,kBAAmB,CACjB,OAAO/hC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAGs3F,GAAsB,IAAI,CAAC,OAAO,EACxE,CACA,mBAAmB/sB,CAAK,CAAE,CACxB+qB,GAAgB,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAE/qB,GACxD,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,SAAS,GAC/B,GAAG,CAAC,CAAC7oE,EAAOF,KACX,IAAMkP,EAAQ,QAAS,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAE,CAAChP,EAAOF,EAAM,CAAE,IAAI,EAC9E,OAAOkP,GAASA,AAAU,IAAVA,EAAcA,EAAQ,EACxC,GACC,MAAM,CAAC,CAACnM,EAAGzE,IAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAACA,GACnD,CACA,KAAM,CACJ,IAAMm+D,EAAO,IAAI,CAAC,OAAO,AACrBA,CAAAA,EAAK,OAAO,EAAIA,EAAK,WAAW,CAAC,OAAO,EAC1Cy5B,AA/NN,SAA4BtmF,CAAK,EAC/B,IAAMozD,EAAO,CACX,EAAGpzD,EAAM,IAAI,CAAGA,EAAM,QAAQ,CAAC,IAAI,CACnC,EAAGA,EAAM,KAAK,CAAGA,EAAM,QAAQ,CAAC,KAAK,CACrC,EAAGA,EAAM,GAAG,CAAGA,EAAM,QAAQ,CAAC,GAAG,CACjC,EAAGA,EAAM,MAAM,CAAGA,EAAM,QAAQ,CAAC,MAAM,AACzC,EACMumF,EAASjzF,OAAO,MAAM,CAAC,CAAC,EAAG8/D,GAC3BoJ,EAAa,EAAE,CACfrjE,EAAU,EAAE,CACZqtF,EAAaxmF,EAAM,YAAY,CAAC,MAAM,CACtCymF,EAAiBzmF,EAAM,OAAO,CAAC,WAAW,CAC1C0mF,EAAkBD,EAAe,iBAAiB,CAAG,GAAE,CAAGD,EAAa,EAC7E,IAAK,IAAI93F,EAAI,EAAGA,EAAI83F,EAAY93F,IAAK,KArCbo1B,EAAKwM,EAAMhxB,EAsCjC,IAAMutD,EAAO45B,EAAe,UAAU,CAACzmF,EAAM,oBAAoB,CAACtR,GAClEyK,CAAAA,CAAO,CAACzK,EAAE,CAAGm+D,EAAK,OAAO,CACzB,IAAMgM,EAAgB74D,EAAM,gBAAgB,CAACtR,EAAGsR,EAAM,WAAW,CAAG7G,CAAO,CAACzK,EAAE,CAAEg4F,GAC1EC,EAAS,QAAO95B,EAAK,IAAI,EAC/B,IAAMp1B,GA1CgB3T,EA0CY9jB,EAAM,GAAG,CA1ChBswB,EA0CkBq2D,EA1CZrnF,EA0CoBU,EAAM,YAAY,CAACtR,EAAE,CAzC5E4Q,EAAQ,QAAQA,GAASA,EAAQ,CAACA,EAAM,CACjC,CACL,EAAG,SAAawkB,EAAKwM,EAAK,MAAM,CAAEhxB,GAClC,EAAGA,EAAM,MAAM,CAAGgxB,EAAK,UAAU,AACnC,EAsCEksC,CAAAA,CAAU,CAAC9tE,EAAE,CAAG+oC,EAChB,IAAMylC,EAAe,SAAgBl9D,EAAM,aAAa,CAACtR,GAAKg4F,GACxD9mF,EAAQhR,KAAK,KAAK,CAAC,QAAUsuE,IAC7B0pB,EAAUT,GAAgBvmF,EAAOi5D,EAAc,CAAC,CAAEphC,EAAS,CAAC,CAAE,EAAG,KAEvEovD,AAUJ,UAAsBN,CAAM,CAAEnzB,CAAI,CAAExzD,CAAK,CAAEgnF,CAAO,CAAEE,CAAO,EACzD,IAAM5yD,EAAMtlC,KAAK,GAAG,CAACA,KAAK,GAAG,CAACgR,IACxBq0B,EAAMrlC,KAAK,GAAG,CAACA,KAAK,GAAG,CAACgR,IAC1BvR,EAAI,EACJoD,EAAI,CACJm1F,CAAAA,EAAQ,KAAK,CAAGxzB,EAAK,CAAC,EACxB/kE,EAAI,AAAC+kE,CAAAA,EAAK,CAAC,CAAGwzB,EAAQ,KAAK,AAAD,EAAK1yD,EAC/BqyD,EAAO,CAAC,CAAG33F,KAAK,GAAG,CAAC23F,EAAO,CAAC,CAAEnzB,EAAK,CAAC,CAAG/kE,IAC9Bu4F,EAAQ,GAAG,CAAGxzB,EAAK,CAAC,GAC7B/kE,EAAI,AAACu4F,CAAAA,EAAQ,GAAG,CAAGxzB,EAAK,CAAC,AAAD,EAAKl/B,EAC7BqyD,EAAO,CAAC,CAAG33F,KAAK,GAAG,CAAC23F,EAAO,CAAC,CAAEnzB,EAAK,CAAC,CAAG/kE,IAErCy4F,EAAQ,KAAK,CAAG1zB,EAAK,CAAC,EACxB3hE,EAAI,AAAC2hE,CAAAA,EAAK,CAAC,CAAG0zB,EAAQ,KAAK,AAAD,EAAK7yD,EAC/BsyD,EAAO,CAAC,CAAG33F,KAAK,GAAG,CAAC23F,EAAO,CAAC,CAAEnzB,EAAK,CAAC,CAAG3hE,IAC9Bq1F,EAAQ,GAAG,CAAG1zB,EAAK,CAAC,GAC7B3hE,EAAI,AAACq1F,CAAAA,EAAQ,GAAG,CAAG1zB,EAAK,CAAC,AAAD,EAAKn/B,EAC7BsyD,EAAO,CAAC,CAAG33F,KAAK,GAAG,CAAC23F,EAAO,CAAC,CAAEnzB,EAAK,CAAC,CAAG3hE,GAE3C,GA7BiB80F,EAAQnzB,EAAM8J,EAAc0pB,EADzBT,GAAgBvmF,EAAOi5D,EAAc,CAAC,CAAEphC,EAAS,CAAC,CAAE,GAAI,KAE1E,CACAz3B,EAAM,cAAc,CAClBozD,EAAK,CAAC,CAAGmzB,EAAO,CAAC,CACjBA,EAAO,CAAC,CAAGnzB,EAAK,CAAC,CACjBA,EAAK,CAAC,CAAGmzB,EAAO,CAAC,CACjBA,EAAO,CAAC,CAAGnzB,EAAK,CAAC,EAEnBpzD,EAAM,gBAAgB,CAAG+mF,AAsB3B,SAA8B/mF,CAAK,CAAEw8D,CAAU,CAAErjE,CAAO,EACtD,IAAMo3B,EAAQ,EAAE,CACVi2D,EAAaxmF,EAAM,YAAY,CAAC,MAAM,CACtC6sD,EAAO7sD,EAAM,OAAO,CACpBgnF,EAAQd,GAAsBr5B,GAAQ,EACtCo6B,EAAgBjnF,EAAM,WAAW,CACjC0mF,EAAkB75B,EAAK,WAAW,CAAC,iBAAiB,CAAG,GAAE,CAAG25B,EAAa,EAC/E,IAAK,IAAI93F,EAAI,EAAGA,EAAI83F,EAAY93F,IAAK,CACnC,IAAMw4F,EAAqBlnF,EAAM,gBAAgB,CAACtR,EAAGu4F,EAAgBD,EAAQ7tF,CAAO,CAACzK,EAAE,CAAEg4F,GACnF9mF,EAAQhR,KAAK,KAAK,CAAC,QAAU,SAAgBs4F,EAAmB,KAAK,CAAG,GAAO,IAC/E37E,EAAOixD,CAAU,CAAC9tE,EAAE,CACpB+C,EAAI01F,AA+Bd,SAAmB11F,CAAC,CAAE0hC,CAAC,CAAEvzB,CAAK,EAM5B,OALIA,AAAU,KAAVA,GAAgBA,AAAU,MAAVA,EAClBnO,GAAM0hC,EAAI,EACDvzB,CAAAA,EAAQ,KAAOA,EAAQ,EAAC,GACjCnO,CAAAA,GAAK0hC,CAAAA,EAEA1hC,CACT,EAtCwBy1F,EAAmB,CAAC,CAAE37E,EAAK,CAAC,CAAE3L,GAC5CsgE,EAAYknB,AActB,SAA8BxnF,CAAK,SACjC,AAAIA,AAAU,IAAVA,GAAeA,AAAU,MAAVA,EACV,SACEA,EAAQ,IACV,OAEF,OACT,EArB2CA,GACjC5N,EAAOq1F,AAqBjB,SAA0Bh5F,CAAC,CAAE6F,CAAC,CAAEkP,CAAK,EAMnC,MALIA,AAAU,UAAVA,EACF/U,GAAK6F,EACc,WAAVkP,GACT/U,CAAAA,GAAM6F,EAAI,CAAC,EAEN7F,CACT,EA5BkC64F,EAAmB,CAAC,CAAE37E,EAAK,CAAC,CAAE20D,GAC5D3vC,EAAM,IAAI,CAAC,CACT,EAAG22D,EAAmB,CAAC,CACvBz1F,EAAAA,EACAyuE,UAAAA,EACAluE,KAAAA,EACA,IAAKP,EACL,MAAOO,EAAOuZ,EAAK,CAAC,CACpB,OAAQ9Z,EAAI8Z,EAAK,CAAC,AACpB,EACF,CACA,OAAOglB,CACT,EA/CgDvwB,EAAOw8D,EAAYrjE,EACnE,EA8LyB,IAAI,EAEvB,IAAI,CAAC,cAAc,CAAC,EAAG,EAAG,EAAG,EAEjC,CACA,eAAemuF,CAAY,CAAEC,CAAa,CAAEC,CAAW,CAAEC,CAAc,CAAE,CACvE,IAAI,CAAC,OAAO,EAAI74F,KAAK,KAAK,CAAC,AAAC04F,CAAAA,EAAeC,CAAY,EAAK,GAC5D,IAAI,CAAC,OAAO,EAAI34F,KAAK,KAAK,CAAC,AAAC44F,CAAAA,EAAcC,CAAa,EAAK,GAC5D,IAAI,CAAC,WAAW,EAAI74F,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAG,EAAGA,KAAK,GAAG,CAAC04F,EAAcC,EAAeC,EAAaC,GACxG,CACA,cAAcr3F,CAAK,CAAE,CACnB,IAAMs3F,EAAkB,GAAG,CAAI,KAAI,CAAC,YAAY,CAAC,MAAM,EAAI,GACrDjxB,EAAa,IAAI,CAAC,OAAO,CAAC,UAAU,EAAI,EAC9C,MAAO,SAAgBrmE,EAAQs3F,EAAkB,QAAUjxB,GAC7D,CACA,8BAA8BnmE,CAAK,CAAE,CACnC,GAAI,QAAcA,GAChB,OAAO+1C,IAET,IAAMshD,EAAgB,IAAI,CAAC,WAAW,CAAI,KAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,AAAD,SAC5D,AAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CACf,AAAC,KAAI,CAAC,GAAG,CAAGr3F,CAAI,EAAKq3F,EAEvB,AAACr3F,CAAAA,EAAQ,IAAI,CAAC,GAAG,AAAD,EAAKq3F,CAC9B,CACA,8BAA8BxjC,CAAQ,CAAE,CACtC,GAAI,QAAcA,GAChB,OAAO9d,IAET,IAAMuhD,EAAiBzjC,EAAY,KAAI,CAAC,WAAW,CAAI,KAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,AAAD,CAAC,EAC1E,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAG,IAAI,CAAC,GAAG,CAAGyjC,EAAiB,IAAI,CAAC,GAAG,CAAGA,CACvE,CACA,qBAAqBx3F,CAAK,CAAE,CAC1B,IAAMy3F,EAAc,IAAI,CAAC,YAAY,EAAI,EAAE,CAC3C,GAAIz3F,GAAS,GAAKA,EAAQy3F,EAAY,MAAM,CAAE,KA/EjB/0F,EAAQ1C,EAAOkP,EAgF1C,IAAMwoF,EAAaD,CAAW,CAACz3F,EAAM,CACrC,OAjF2B0C,EAiFI,IAAI,CAAC,UAAU,GAjFX1C,EAiFeA,EAjFRkP,EAiFewoF,EAhFtD,QAAch1F,EAAQ,CAC3BwM,MAAAA,EACAlP,MAAAA,EACA,KAAM,YACR,EA6EE,CACF,CACA,iBAAiBA,CAAK,CAAE23F,CAAkB,CAAErB,EAAkB,CAAC,CAAE,CAC/D,IAAM9mF,EAAQ,IAAI,CAAC,aAAa,CAACxP,GAAS,GAAO,CAAGs2F,EACpD,MAAO,CACL,EAAG93F,KAAK,GAAG,CAACgR,GAASmoF,EAAqB,IAAI,CAAC,OAAO,CACtD,EAAGn5F,KAAK,GAAG,CAACgR,GAASmoF,EAAqB,IAAI,CAAC,OAAO,CACtDnoF,MAAAA,CACF,CACF,CACA,yBAAyBxP,CAAK,CAAEE,CAAK,CAAE,CACrC,OAAO,IAAI,CAAC,gBAAgB,CAACF,EAAO,IAAI,CAAC,6BAA6B,CAACE,GACzE,CACA,gBAAgBF,CAAK,CAAE,CACrB,OAAO,IAAI,CAAC,wBAAwB,CAACA,GAAS,EAAG,IAAI,CAAC,YAAY,GACpE,CACA,sBAAsBA,CAAK,CAAE,CAC3B,GAAM,CAAC4B,KAAAA,CAAI,CAAEuf,IAAAA,CAAG,CAAErf,MAAAA,CAAK,CAAE0B,OAAAA,CAAM,CAAC,CAAG,IAAI,CAAC,gBAAgB,CAACxD,EAAM,CAC/D,MAAO,CACL4B,KAAAA,EACAuf,IAAAA,EACArf,MAAAA,EACA0B,OAAAA,CACF,CACF,CACA,gBAAiB,CACf,GAAM,CAACitE,gBAAAA,CAAe,CAAE,KAAM,CAAC8P,SAAAA,CAAQ,CAAC,CAAC,CAAG,IAAI,CAAC,OAAO,CACxD,GAAI9P,EAAiB,CACnB,IAAM/8C,EAAM,IAAI,CAAC,GAAG,CACpBA,EAAI,IAAI,GACRA,EAAI,SAAS,GACbsiE,GAAe,IAAI,CAAE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,EAAGzV,EAAU,IAAI,CAAC,YAAY,CAAC,MAAM,EAC3G7sD,EAAI,SAAS,GACbA,EAAI,SAAS,CAAG+8C,EAChB/8C,EAAI,IAAI,GACRA,EAAI,OAAO,EACb,CACF,CACA,UAAW,KAKLp1B,EAAGkT,EAAQ+J,EAJf,IAAMmY,EAAM,IAAI,CAAC,GAAG,CACd+oC,EAAO,IAAI,CAAC,OAAO,CACnB,CAACm7B,WAAAA,CAAU,CAAElpB,KAAAA,CAAI,CAAC,CAAGjS,EACrBs0B,EAAa,IAAI,CAAC,YAAY,CAAC,MAAM,CAc3C,GAZIt0B,EAAK,WAAW,CAAC,OAAO,GAC1Bo7B,AAzMN,SAAyBjoF,CAAK,CAAEmhF,CAAU,EACxC,GAAM,CAACr9D,IAAAA,CAAG,CAAE,QAAS,CAAC+jE,YAAAA,CAAW,CAAC,CAAC,CAAG7nF,EACtC,IAAK,IAAItR,EAAIyyF,EAAa,EAAGzyF,GAAK,EAAGA,IAAK,CACxC,IAAM6wE,EAAcsoB,EAAY,UAAU,CAAC7nF,EAAM,oBAAoB,CAACtR,IAChEi4F,EAAS,QAAOpnB,EAAY,IAAI,EAChC,CAAClxE,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAEyuE,UAAAA,CAAS,CAAEluE,KAAAA,CAAI,CAAEuf,IAAAA,CAAG,CAAErf,MAAAA,CAAK,CAAE0B,OAAAA,CAAM,CAAC,CAAGoM,EAAM,gBAAgB,CAACtR,EAAE,CACvE,CAACw5F,cAAAA,CAAa,CAAC,CAAG3oB,EACxB,GAAI,CAAC,QAAc2oB,GAAgB,CACjC,IAAM1hF,EAAe,SAAc+4D,EAAY,YAAY,EACrDpmE,EAAU,QAAUomE,EAAY,eAAe,CACrDz7C,CAAAA,EAAI,SAAS,CAAGokE,EAChB,IAAMC,EAAen2F,EAAOmH,EAAQ,IAAI,CAClCivF,EAAc72E,EAAMpY,EAAQ,GAAG,CAC/BkvF,EAAgBn2F,EAAQF,EAAOmH,EAAQ,KAAK,CAC5CmvF,EAAiB10F,EAAS2d,EAAMpY,EAAQ,MAAM,CAChD7F,OAAO,MAAM,CAACkT,GAAc,IAAI,CAACrT,GAAKA,AAAM,IAANA,IACxC2wB,EAAI,SAAS,GACb,SAAmBA,EAAK,CACtB,EAAGqkE,EACH,EAAGC,EACH,EAAGC,EACH,EAAGC,EACH,OAAQ9hF,CACV,GACAsd,EAAI,IAAI,IAERA,EAAI,QAAQ,CAACqkE,EAAcC,EAAaC,EAAeC,EAE3D,CACA,QACExkE,EACA9jB,EAAM,YAAY,CAACtR,EAAE,CACrBL,EACAoD,EAAKk1F,EAAO,UAAU,CAAG,EACzBA,EACA,CACE,MAAOpnB,EAAY,KAAK,CACxB,UAAWW,EACX,aAAc,QAChB,EAEJ,CACF,EA+JsB,IAAI,CAAEihB,GAEpBriB,EAAK,OAAO,EACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC3uB,EAAM//C,KACV,IAAVA,IACFwR,EAAS,IAAI,CAAC,6BAA6B,CAACuuC,EAAK,KAAK,GAEtDo4C,AAxJV,SAAwBvoF,CAAK,CAAEwoF,CAAY,CAAEtvF,CAAM,CAAEioF,CAAU,EAC7D,IAAMr9D,EAAM9jB,EAAM,GAAG,CACf2wE,EAAW6X,EAAa,QAAQ,CAChC,CAACl2D,MAAAA,CAAK,CAAEktC,UAAAA,CAAS,CAAC,CAAGgpB,EAC3B,GAAI,AAAC,GAAC7X,IAAY,CAACwQ,CAAS,IAAM,CAAC7uD,IAAS,CAACktC,IAAatmE,CAAAA,EAAS,GAGnE4qB,EAAI,IAAI,GACRA,EAAI,WAAW,CAAGwO,EAClBxO,EAAI,SAAS,CAAG07C,EAChB17C,EAAI,WAAW,CAAC0kE,EAAa,UAAU,EACvC1kE,EAAI,cAAc,CAAG0kE,EAAa,gBAAgB,CAClD1kE,EAAI,SAAS,GACbsiE,GAAepmF,EAAO9G,EAAQy3E,EAAUwQ,GACxCr9D,EAAI,SAAS,GACbA,EAAI,MAAM,GACVA,EAAI,OAAO,EACb,EAuIyB,IAAI,CADCg7C,EAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC1uE,EAAQ,IAC1BwR,EAAQu/E,GAE9C,GAEE6G,EAAW,OAAO,CAAE,CAEtB,IADAlkE,EAAI,IAAI,GACHp1B,EAAIyyF,EAAa,EAAGzyF,GAAK,EAAGA,IAAK,CACpC,IAAM6wE,EAAcyoB,EAAW,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAACt5F,IAC9D,CAAC4jC,MAAAA,CAAK,CAAEktC,UAAAA,CAAS,CAAC,CAAGD,EAC3B,GAAI,EAACC,IAAa,CAACltC,EAGnBxO,EAAI,SAAS,CAAG07C,EAChB17C,EAAI,WAAW,CAAGwO,EAClBxO,EAAI,WAAW,CAACy7C,EAAY,UAAU,EACtCz7C,EAAI,cAAc,CAAGy7C,EAAY,gBAAgB,CACjD39D,EAAS,IAAI,CAAC,6BAA6B,CAACirD,EAAK,KAAK,CAAC,OAAO,CAAG,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,EACpFlhD,EAAW,IAAI,CAAC,gBAAgB,CAACjd,EAAGkT,GACpCkiB,EAAI,SAAS,GACbA,EAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,OAAO,EACrCA,EAAI,MAAM,CAACnY,EAAS,CAAC,CAAEA,EAAS,CAAC,EACjCmY,EAAI,MAAM,EACZ,CACAA,EAAI,OAAO,EACb,CACF,CACA,YAAa,CAAC,CACd,YAAa,KAQPliB,EAAQD,EAPZ,IAAMmiB,EAAM,IAAI,CAAC,GAAG,CACd+oC,EAAO,IAAI,CAAC,OAAO,CACnBmO,EAAWnO,EAAK,KAAK,CAC3B,GAAI,CAACmO,EAAS,OAAO,CACnB,OAEF,IAAMvE,EAAa,IAAI,CAAC,aAAa,CAAC,GAEtC3yC,EAAI,IAAI,GACRA,EAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,OAAO,EACxCA,EAAI,MAAM,CAAC2yC,GACX3yC,EAAI,SAAS,CAAG,SAChBA,EAAI,YAAY,CAAG,SACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAACqsB,EAAM//C,KACxB,GAAIA,AAAU,IAAVA,GAAe,CAACy8D,EAAK,OAAO,CAC9B,OAEF,IAAM0S,EAAcvE,EAAS,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC5qE,IAClDstE,EAAW,QAAO6B,EAAY,IAAI,EAExC,GADA39D,EAAS,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAACxR,EAAM,CAAC,KAAK,EAC/DmvE,EAAY,iBAAiB,CAAE,CACjCz7C,EAAI,IAAI,CAAG45C,EAAS,MAAM,CAC1B/7D,EAAQmiB,EAAI,WAAW,CAACqsB,EAAK,KAAK,EAAE,KAAK,CACzCrsB,EAAI,SAAS,CAAGy7C,EAAY,aAAa,CACzC,IAAMpmE,EAAU,QAAUomE,EAAY,eAAe,EACrDz7C,EAAI,QAAQ,CACV,CAACniB,EAAQ,EAAIxI,EAAQ,IAAI,CACzB,CAACyI,EAAS87D,EAAS,IAAI,CAAG,EAAIvkE,EAAQ,GAAG,CACzCwI,EAAQxI,EAAQ,KAAK,CACrBukE,EAAS,IAAI,CAAGvkE,EAAQ,MAAM,CAElC,CACA,QAAW2qB,EAAKqsB,EAAK,KAAK,CAAE,EAAG,CAACvuC,EAAQ87D,EAAU,CAChD,MAAO6B,EAAY,KAAK,AAC1B,EACF,GACAz7C,EAAI,OAAO,EACb,CACA,WAAY,CAAC,CACf,CACAuiE,GAAkB,EAAE,CAAG,eACvBA,GAAkB,QAAQ,CAAG,CAC3B,QAAS,GACT,QAAS,GACT,SAAU,YACV,WAAY,CACV,QAAS,GACT,UAAW,EACX,WAAY,EAAE,CACd,iBAAkB,CACpB,EACA,KAAM,CACJ,SAAU,EACZ,EACA,WAAY,EACZ,MAAO,CACL,kBAAmB,GACnB,SAAU3sB,EAAiB,OAAO,AACpC,EACA,YAAa,CACX,cAAerqE,KAAAA,EACf,gBAAiB,EACjB,QAAS,GACT,KAAM,CACJ,KAAM,EACR,EACA,SAASiQ,GACAA,EAET,QAAS,EACT,kBAAmB,EACrB,CACF,EACA+mF,GAAkB,aAAa,CAAG,CAChC,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,OACjB,EACAA,GAAkB,WAAW,CAAG,CAC9B,WAAY,CACV,UAAW,MACb,CACF,EAEA,IAAMoC,GAAY,CAChB,YAAa,CAAC,OAAQ,GAAM,KAAM,EAAG,MAAO,GAAI,EAChD,OAAQ,CAAC,OAAQ,GAAM,KAAM,IAAM,MAAO,EAAE,EAC5C,OAAQ,CAAC,OAAQ,GAAM,KAAM,IAAO,MAAO,EAAE,EAC7C,KAAM,CAAC,OAAQ,GAAM,KAAM,KAAS,MAAO,EAAE,EAC7C,IAAK,CAAC,OAAQ,GAAM,KAAM,MAAU,MAAO,EAAE,EAC7C,KAAM,CAAC,OAAQ,GAAO,KAAM,OAAW,MAAO,CAAC,EAC/C,MAAO,CAAC,OAAQ,GAAM,KAAM,OAAS,MAAO,EAAE,EAC9C,QAAS,CAAC,OAAQ,GAAO,KAAM,OAAS,MAAO,CAAC,EAChD,KAAM,CAAC,OAAQ,GAAM,KAAM,MAAQ,CACrC,EACMC,GAASp1F,OAAO,IAAI,CAACm1F,IAC3B,SAASE,GAAO/3F,CAAC,CAAEC,CAAC,EAClB,OAAOD,EAAIC,CACb,CACA,SAAS+3F,GAAM5oF,CAAK,CAAEqwB,CAAK,EACzB,GAAI,QAAcA,GAChB,OAAO,KAET,IAAMw4D,EAAU7oF,EAAM,QAAQ,CACxB,CAACwiB,OAAAA,CAAM,CAAEvoB,MAAAA,CAAK,CAAE6uF,WAAAA,CAAU,CAAC,CAAG9oF,EAAM,UAAU,CAChD1P,EAAQ+/B,QASZ,CARsB,YAAlB,OAAO7N,GACTlyB,CAAAA,EAAQkyB,EAAOlyB,EAAK,EAElB,CAAC,QAAeA,IAClBA,CAAAA,EAAQ,AAAkB,UAAlB,OAAOkyB,EACXqmE,EAAQ,KAAK,CAACv4F,EAAOkyB,GACrBqmE,EAAQ,KAAK,CAACv4F,EAAK,EAErBA,AAAU,OAAVA,GACK,MAEL2J,GACF3J,CAAAA,EAAQ2J,AAAU,SAAVA,GAAqB,SAAS6uF,IAAeA,AAAe,KAAfA,CAAkB,EACnED,EAAQ,OAAO,CAACv4F,EAAO,UAAWw4F,GAClCD,EAAQ,OAAO,CAACv4F,EAAO2J,EAAK,EAE3B,CAAC3J,EACV,CACA,SAASy4F,GAA0BC,CAAO,CAAEt4D,CAAG,CAAEC,CAAG,CAAEs4D,CAAQ,EAC5D,IAAMz4D,EAAOk4D,GAAM,MAAM,CACzB,IAAK,IAAIh6F,EAAIg6F,GAAM,OAAO,CAACM,GAAUt6F,EAAI8hC,EAAO,EAAG,EAAE9hC,EAAG,CACtD,IAAM4wC,EAAWmpD,EAAS,CAACC,EAAK,CAACh6F,EAAE,CAAC,CAC9B08D,EAAS9rB,EAAS,KAAK,CAAGA,EAAS,KAAK,CAAGxL,OAAO,gBAAgB,CACxE,GAAIwL,EAAS,MAAM,EAAI1wC,KAAK,IAAI,CAAC,AAAC+hC,CAAAA,EAAMD,CAAE,EAAM06B,CAAAA,EAAS9rB,EAAS,IAAI,AAAD,IAAO2pD,EAC1E,OAAOP,EAAK,CAACh6F,EAAE,AAEnB,CACA,OAAOg6F,EAAK,CAACl4D,EAAO,EAAE,AACxB,CAiBA,SAAS04D,GAAQ/vB,CAAK,CAAEh3B,CAAI,CAAEgnD,CAAU,EACtC,GAAKA,EAEE,IAAIA,EAAW,MAAM,CAAE,CAC5B,GAAM,CAAC9lB,GAAAA,CAAE,CAAE3tE,GAAAA,CAAE,CAAC,CAAG,SAAQyzF,EAAYhnD,EAErCg3B,CAAAA,CAAK,CADagwB,CAAU,CAAC9lB,EAAG,EAAIlhC,EAAOgnD,CAAU,CAAC9lB,EAAG,CAAG8lB,CAAU,CAACzzF,EAAG,CAC1D,CAAG,EACrB,OALEyjE,CAAK,CAACh3B,EAAK,CAAG,EAMlB,CAcA,SAASinD,GAAoBppF,CAAK,CAAE6iB,CAAM,CAAEwmE,CAAS,MAI/C36F,EAAG4B,EAHP,IAAM6oE,EAAQ,EAAE,CACVz/C,EAAM,CAAC,EACP8W,EAAO3N,EAAO,MAAM,CAE1B,IAAKn0B,EAAI,EAAGA,EAAI8hC,EAAM,EAAE9hC,EAEtBgrB,CAAG,CADHppB,EAAQuyB,CAAM,CAACn0B,EAAE,CACP,CAAGA,EACbyqE,EAAM,IAAI,CAAC,CACT7oE,MAAAA,EACA,MAAO,EACT,GAEF,OAAO,AAACkgC,AAAS,IAATA,GAAe64D,EAAqBC,AA1B9C,SAAuBtpF,CAAK,CAAEm5D,CAAK,CAAEz/C,CAAG,CAAE2vE,CAAS,MAI7CE,EAAOn5F,EAHX,IAAMy4F,EAAU7oF,EAAM,QAAQ,CACxByL,EAAQ,CAACo9E,EAAQ,OAAO,CAAC1vB,CAAK,CAAC,EAAE,CAAC,KAAK,CAAEkwB,GACzC9gF,EAAO4wD,CAAK,CAACA,EAAM,MAAM,CAAG,EAAE,CAAC,KAAK,CAE1C,IAAKowB,EAAQ99E,EAAO89E,GAAShhF,EAAMghF,EAAQ,CAACV,EAAQ,GAAG,CAACU,EAAO,EAAGF,GAChEj5F,CAAAA,EAAQspB,CAAG,CAAC6vE,EAAM,AAAD,GACJ,GACXpwB,CAAAA,CAAK,CAAC/oE,EAAM,CAAC,KAAK,CAAG,EAAG,EAG5B,OAAO+oE,CACT,EAc4Dn5D,EAAOm5D,EAAOz/C,EAAK2vE,GAAzClwB,CACtC,CACA,MAAMqwB,WAAkBv3C,EACtB,YAAYj1B,CAAK,CAAE,CACjB,KAAK,CAACA,GACN,IAAI,CAAC,MAAM,CAAG,CACZ,KAAM,EAAE,CACR,OAAQ,EAAE,CACV,IAAK,EAAE,AACT,EACA,IAAI,CAAC,KAAK,CAAG,MACb,IAAI,CAAC,UAAU,CAAG3tB,KAAAA,EAClB,IAAI,CAAC,QAAQ,CAAG,CAAC,EACjB,IAAI,CAAC,WAAW,CAAG,GACnB,IAAI,CAAC,UAAU,CAAGA,KAAAA,CACpB,CACA,KAAKy+E,CAAS,CAAEjhB,CAAI,CAAE,CACpB,IAAM1qB,EAAO2rC,EAAU,IAAI,EAAKA,CAAAA,EAAU,IAAI,CAAG,CAAC,GAC5C+a,EAAU,IAAI,CAAC,QAAQ,CAAG,MAAmB/a,EAAU,QAAQ,CAAC,IAAI,EAC1E+a,EAAQ,IAAI,CAACh8B,GACb,SAAQ1qB,EAAK,cAAc,CAAE0mD,EAAQ,OAAO,IAC5C,IAAI,CAAC,UAAU,CAAG,CAChB,OAAQ1mD,EAAK,MAAM,CACnB,MAAOA,EAAK,KAAK,CACjB,WAAYA,EAAK,UAAU,AAC7B,EACA,KAAK,CAAC,KAAK2rC,GACX,IAAI,CAAC,WAAW,CAAGjhB,EAAK,UAAU,AACpC,CACA,MAAMl7C,CAAG,CAAEvhB,CAAK,CAAE,QAChB,AAAIuhB,AAAQtiB,KAAAA,IAARsiB,EACK,KAEFi3E,GAAM,IAAI,CAAEj3E,EACrB,CACA,cAAe,CACb,KAAK,CAAC,eACN,IAAI,CAAC,MAAM,CAAG,CACZ,KAAM,EAAE,CACR,OAAQ,EAAE,CACV,IAAK,EAAE,AACT,CACF,CACA,qBAAsB,CACpB,IAAM3Q,EAAU,IAAI,CAAC,OAAO,CACtB6nF,EAAU,IAAI,CAAC,QAAQ,CACvB7lB,EAAOhiE,EAAQ,IAAI,CAAC,IAAI,EAAI,MAC9B,CAAC0vB,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAEugC,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAC,CAAG,IAAI,CAAC,aAAa,GAC3D,SAASs4B,EAAajqF,CAAM,EACtB,CAAC0xD,GAAc,CAACtqB,MAAMpnC,EAAO,GAAG,GAClCkxB,CAAAA,EAAM9hC,KAAK,GAAG,CAAC8hC,EAAKlxB,EAAO,GAAG,GAE5B,CAAC2xD,GAAc,CAACvqB,MAAMpnC,EAAO,GAAG,GAClCmxB,CAAAA,EAAM/hC,KAAK,GAAG,CAAC+hC,EAAKnxB,EAAO,GAAG,EAElC,CACI,EAAC0xD,GAAc,CAACC,CAAS,IAC3Bs4B,EAAa,IAAI,CAAC,eAAe,IAC7BzoF,CAAAA,AAAmB,UAAnBA,EAAQ,MAAM,EAAgBA,AAAyB,WAAzBA,EAAQ,KAAK,CAAC,MAAM,AAAY,GAChEyoF,EAAa,IAAI,CAAC,SAAS,CAAC,MAGhC/4D,EAAM,QAAeA,IAAQ,CAACkW,MAAMlW,GAAOA,EAAM,CAACm4D,EAAQ,OAAO,CAAClnD,KAAK,GAAG,GAAIqhC,GAC9EryC,EAAM,QAAeA,IAAQ,CAACiW,MAAMjW,GAAOA,EAAM,CAACk4D,EAAQ,KAAK,CAAClnD,KAAK,GAAG,GAAIqhC,GAAQ,EACpF,IAAI,CAAC,GAAG,CAAGp0E,KAAK,GAAG,CAAC8hC,EAAKC,EAAM,GAC/B,IAAI,CAAC,GAAG,CAAG/hC,KAAK,GAAG,CAAC8hC,EAAM,EAAGC,EAC/B,CACA,iBAAkB,CAChB,IAAMwK,EAAM,IAAI,CAAC,kBAAkB,GAC/BzK,EAAMoD,OAAO,iBAAiB,CAC9BnD,EAAMmD,OAAO,iBAAiB,CAKlC,OAJIqH,EAAI,MAAM,GACZzK,EAAMyK,CAAG,CAAC,EAAE,CACZxK,EAAMwK,CAAG,CAACA,EAAI,MAAM,CAAG,EAAE,EAEpB,CAACzK,IAAAA,EAAKC,IAAAA,CAAG,CAClB,CACA,YAAa,CACX,IAAM3vB,EAAU,IAAI,CAAC,OAAO,CACtB0oF,EAAW1oF,EAAQ,IAAI,CACvBg6D,EAAWh6D,EAAQ,KAAK,CACxBmoF,EAAanuB,AAAoB,WAApBA,EAAS,MAAM,CAAgB,IAAI,CAAC,kBAAkB,GAAK,IAAI,CAAC,SAAS,EACrE,WAAnBh6D,EAAQ,MAAM,EAAgBmoF,EAAW,MAAM,GACjD,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,QAAQ,EAAIA,CAAU,CAAC,EAAE,CACzC,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,QAAQ,EAAIA,CAAU,CAACA,EAAW,MAAM,CAAG,EAAE,EAE/D,IAAMz4D,EAAM,IAAI,CAAC,GAAG,CACdC,EAAM,IAAI,CAAC,GAAG,CACdwoC,EAAQ,SAAegwB,EAAYz4D,EAAKC,GAU9C,OATA,IAAI,CAAC,KAAK,CAAG+4D,EAAS,IAAI,EAAK1uB,CAAAA,EAAS,QAAQ,CAC5C+tB,GAA0BW,EAAS,OAAO,CAAE,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,iBAAiB,CAACh5D,IACvFi5D,AA9IR,SAAoC3pF,CAAK,CAAEo8D,CAAQ,CAAE4sB,CAAO,CAAEt4D,CAAG,CAAEC,CAAG,EACpE,IAAK,IAAIjiC,EAAIg6F,GAAM,MAAM,CAAG,EAAGh6F,GAAKg6F,GAAM,OAAO,CAACM,GAAUt6F,IAAK,CAC/D,IAAMs0E,EAAO0lB,EAAK,CAACh6F,EAAE,CACrB,GAAI+5F,EAAS,CAACzlB,EAAK,CAAC,MAAM,EAAIhjE,EAAM,QAAQ,CAAC,IAAI,CAAC2wB,EAAKD,EAAKsyC,IAAS5G,EAAW,EAC9E,OAAO4G,CAEX,CACA,OAAO0lB,EAAK,CAACM,EAAUN,GAAM,OAAO,CAACM,GAAW,EAAE,AACpD,EAsImC,IAAI,CAAE7vB,EAAM,MAAM,CAAEuwB,EAAS,OAAO,CAAE,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,GAAG,GACvF,IAAI,CAAC,UAAU,CAAG,AAAC1uB,EAAS,KAAK,CAAC,OAAO,EAAI,AAAe,SAAf,IAAI,CAAC,KAAK,CACnD4uB,AAvIR,SAA4B5mB,CAAI,EAC9B,IAAK,IAAIt0E,EAAIg6F,GAAM,OAAO,CAAC1lB,GAAQ,EAAGxyC,EAAOk4D,GAAM,MAAM,CAAEh6F,EAAI8hC,EAAM,EAAE9hC,EACrE,GAAI+5F,EAAS,CAACC,EAAK,CAACh6F,EAAE,CAAC,CAAC,MAAM,CAC5B,OAAOg6F,EAAK,CAACh6F,EAAE,AAGrB,EAiI2B,IAAI,CAAC,KAAK,EADoCW,KAAAA,EAErE,IAAI,CAAC,WAAW,CAAC85F,GACbnoF,EAAQ,OAAO,EACjBm4D,EAAM,OAAO,GAERiwB,GAAoB,IAAI,CAAEjwB,EAAO,IAAI,CAAC,UAAU,CACzD,CACA,eAAgB,CACV,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAChpB,GAAQ,CAACA,EAAK,KAAK,EAEvD,CACA,YAAYg5C,CAAU,CAAE,CACtB,IAEI19E,EAAOlD,EAFP9X,EAAQ,EACRD,EAAM,CAEN,KAAI,CAAC,OAAO,CAAC,MAAM,EAAI24F,EAAW,MAAM,GAC1C19E,EAAQ,IAAI,CAAC,kBAAkB,CAAC09E,CAAU,CAAC,EAAE,EAE3C14F,EADE04F,AAAsB,IAAtBA,EAAW,MAAM,CACX,EAAI19E,EAEJ,AAAC,KAAI,CAAC,kBAAkB,CAAC09E,CAAU,CAAC,EAAE,EAAI19E,CAAI,EAAK,EAE7DlD,EAAO,IAAI,CAAC,kBAAkB,CAAC4gF,CAAU,CAACA,EAAW,MAAM,CAAG,EAAE,EAE9D34F,EADE24F,AAAsB,IAAtBA,EAAW,MAAM,CACb5gF,EAEA,AAACA,CAAAA,EAAO,IAAI,CAAC,kBAAkB,CAAC4gF,CAAU,CAACA,EAAW,MAAM,CAAG,EAAE,GAAK,GAGhF,IAAM7pB,EAAQ6pB,EAAW,MAAM,CAAG,EAAI,GAAM,IAC5C14F,EAAQ,QAAYA,EAAO,EAAG6uE,GAC9B9uE,EAAM,QAAYA,EAAK,EAAG8uE,GAC1B,IAAI,CAAC,QAAQ,CAAG,CAAC7uE,MAAAA,EAAOD,IAAAA,EAAK,OAAQ,EAAKC,CAAAA,EAAQ,EAAID,CAAE,CAAE,CAC5D,CACA,WAAY,KAYN2xC,EAAMrzC,EAXV,IAAM+5F,EAAU,IAAI,CAAC,QAAQ,CACvBn4D,EAAM,IAAI,CAAC,GAAG,CACdC,EAAM,IAAI,CAAC,GAAG,CACd3vB,EAAU,IAAI,CAAC,OAAO,CACtB0oF,EAAW1oF,EAAQ,IAAI,CACvB6oF,EAAQH,EAAS,IAAI,EAAIX,GAA0BW,EAAS,OAAO,CAAEh5D,EAAKC,EAAK,IAAI,CAAC,iBAAiB,CAACD,IACtG+zD,EAAW,QAAeiF,EAAS,QAAQ,CAAE,GAC7CzmB,EAAU4mB,AAAU,SAAVA,GAAmBH,EAAS,UAAU,CAChDI,EAAa,QAAS7mB,IAAYA,AAAY,KAAZA,EAClC9J,EAAQ,CAAC,EACX1tD,EAAQilB,EAMZ,GAJIo5D,GACFr+E,CAAAA,EAAQ,CAACo9E,EAAQ,OAAO,CAACp9E,EAAO,UAAWw3D,EAAO,EAEpDx3D,EAAQ,CAACo9E,EAAQ,OAAO,CAACp9E,EAAOq+E,EAAa,MAAQD,GACjDhB,EAAQ,IAAI,CAACl4D,EAAKD,EAAKm5D,GAAS,IAASpF,EAC3C,MAAM,AAAIr2F,MAAMsiC,EAAM,QAAUC,EAAM,uCAAyC8zD,EAAW,IAAMoF,GAElG,IAAMV,EAAanoF,AAAyB,SAAzBA,EAAQ,KAAK,CAAC,MAAM,EAAe,IAAI,CAAC,iBAAiB,GAC5E,IAAKmhC,EAAO12B,EAAO3c,EAAQ,EAAGqzC,EAAOxR,EAAKwR,EAAO,CAAC0mD,EAAQ,GAAG,CAAC1mD,EAAMsiD,EAAUoF,GAAQ/6F,IACpFo6F,GAAQ/vB,EAAOh3B,EAAMgnD,GAKvB,MAHIhnD,CAAAA,IAASxR,GAAO3vB,AAAmB,UAAnBA,EAAQ,MAAM,EAAgBlS,AAAU,IAAVA,CAAU,GAC1Do6F,GAAQ/vB,EAAOh3B,EAAMgnD,GAEhB71F,OAAO,IAAI,CAAC6lE,GAAO,IAAI,CAAC,CAACvoE,EAAGC,IAAMD,EAAIC,GAAG,GAAG,CAACxC,GAAK,CAACA,EAC5D,CACA,iBAAiBiC,CAAK,CAAE,CACtB,IAAMu4F,EAAU,IAAI,CAAC,QAAQ,CACvBa,EAAW,IAAI,CAAC,OAAO,CAAC,IAAI,QAClC,AAAIA,EAAS,aAAa,CACjBb,EAAQ,MAAM,CAACv4F,EAAOo5F,EAAS,aAAa,EAE9Cb,EAAQ,MAAM,CAACv4F,EAAOo5F,EAAS,cAAc,CAAC,QAAQ,CAC/D,CACA,oBAAoBvnD,CAAI,CAAE/xC,CAAK,CAAE+oE,CAAK,CAAEryC,CAAM,CAAE,CAC9C,IAAM9lB,EAAU,IAAI,CAAC,OAAO,CACtB+oF,EAAU/oF,EAAQ,IAAI,CAAC,cAAc,CACrCgiE,EAAO,IAAI,CAAC,KAAK,CACjBqmB,EAAY,IAAI,CAAC,UAAU,CAC3BW,EAAchnB,GAAQ+mB,CAAO,CAAC/mB,EAAK,CACnCinB,EAAcZ,GAAaU,CAAO,CAACV,EAAU,CAC7Cl5C,EAAOgpB,CAAK,CAAC/oE,EAAM,CACnBm5F,EAAQF,GAAaY,GAAe95C,GAAQA,EAAK,KAAK,CACtD7wC,EAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC6iC,EAAMrb,GAAWyiE,CAAAA,EAAQU,EAAcD,CAAU,GAC9EE,EAAYlpF,EAAQ,KAAK,CAAC,QAAQ,CACxC,OAAOkpF,EAAY,QAASA,EAAW,CAAC5qF,EAAOlP,EAAO+oE,EAAM,CAAE,IAAI,EAAI75D,CACxE,CACA,mBAAmB65D,CAAK,CAAE,CACxB,IAAIzqE,EAAG8hC,EAAM2f,EACb,IAAKzhD,EAAI,EAAG8hC,EAAO2oC,EAAM,MAAM,CAAEzqE,EAAI8hC,EAAM,EAAE9hC,EAE3CyhD,AADAA,CAAAA,EAAOgpB,CAAK,CAACzqE,EAAE,AAAD,EACT,KAAK,CAAG,IAAI,CAAC,mBAAmB,CAACyhD,EAAK,KAAK,CAAEzhD,EAAGyqE,EAEzD,CACA,mBAAmB7oE,CAAK,CAAE,CACxB,OAAOA,AAAU,OAAVA,EAAiB+1C,IAAM,AAAC/1C,CAAAA,EAAQ,IAAI,CAAC,GAAG,AAAD,EAAM,KAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,AAAD,CACxE,CACA,iBAAiBA,CAAK,CAAE,CACtB,IAAM65F,EAAU,IAAI,CAAC,QAAQ,CACvBxkB,EAAM,IAAI,CAAC,kBAAkB,CAACr1E,GACpC,OAAO,IAAI,CAAC,kBAAkB,CAAC,AAAC65F,CAAAA,EAAQ,KAAK,CAAGxkB,CAAE,EAAKwkB,EAAQ,MAAM,CACvE,CACA,iBAAiB33D,CAAK,CAAE,CACtB,IAAM23D,EAAU,IAAI,CAAC,QAAQ,CACvBxkB,EAAM,IAAI,CAAC,kBAAkB,CAACnzC,GAAS23D,EAAQ,MAAM,CAAGA,EAAQ,GAAG,CACzE,OAAO,IAAI,CAAC,GAAG,CAAGxkB,EAAO,KAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,AAAD,CAC7C,CACA,cAAcrmE,CAAK,CAAE,CACnB,IAAM8qF,EAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAC9BC,EAAiB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC/qF,GAAO,KAAK,CAClDM,EAAQ,QAAU,IAAI,CAAC,YAAY,GAAKwqF,EAAU,WAAW,CAAGA,EAAU,WAAW,EACrFE,EAAc17F,KAAK,GAAG,CAACgR,GACvB2qF,EAAc37F,KAAK,GAAG,CAACgR,GACvB4qF,EAAe,IAAI,CAAC,uBAAuB,CAAC,GAAG,IAAI,CACzD,MAAO,CACL,EAAG,AAACH,EAAiBC,EAAgBE,EAAeD,EACpD,EAAG,AAACF,EAAiBE,EAAgBC,EAAeF,CACtD,CACF,CACA,kBAAkBG,CAAW,CAAE,CAC7B,IAAMf,EAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAC5BgB,EAAiBhB,EAAS,cAAc,CACxC5iE,EAAS4jE,CAAc,CAAChB,EAAS,IAAI,CAAC,EAAIgB,EAAe,WAAW,CACpEC,EAAe,IAAI,CAAC,mBAAmB,CAACF,EAAa,EAAGrB,GAAoB,IAAI,CAAE,CAACqB,EAAY,CAAE,IAAI,CAAC,UAAU,EAAG3jE,GACnHvb,EAAO,IAAI,CAAC,aAAa,CAACo/E,GAC1B1B,EAAWr6F,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,GAAK,IAAI,CAAC,KAAK,CAAG2c,EAAK,CAAC,CAAG,IAAI,CAAC,MAAM,CAAGA,EAAK,CAAC,EAAI,EAChG,OAAO09E,EAAW,EAAIA,EAAW,CACnC,CACA,mBAAoB,CAClB,IACIv6F,EAAG8hC,EADH24D,EAAa,IAAI,CAAC,MAAM,CAAC,IAAI,EAAI,EAAE,CAEvC,GAAIA,EAAW,MAAM,CACnB,OAAOA,EAET,IAAMxuB,EAAQ,IAAI,CAAC,uBAAuB,GAC1C,GAAI,IAAI,CAAC,WAAW,EAAIA,EAAM,MAAM,CAClC,OAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAGA,CAAK,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,EAExE,IAAKjsE,EAAI,EAAG8hC,EAAOmqC,EAAM,MAAM,CAAEjsE,EAAI8hC,EAAM,EAAE9hC,EAC3Cy6F,EAAaA,EAAW,MAAM,CAACxuB,CAAK,CAACjsE,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,GAE5E,OAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAG,IAAI,CAAC,SAAS,CAACy6F,EAC5C,CACA,oBAAqB,KAEfz6F,EAAG8hC,EADP,IAAM24D,EAAa,IAAI,CAAC,MAAM,CAAC,MAAM,EAAI,EAAE,CAE3C,GAAIA,EAAW,MAAM,CACnB,OAAOA,EAET,IAAMjvE,EAAS,IAAI,CAAC,SAAS,GAC7B,IAAKxrB,EAAI,EAAG8hC,EAAOtW,EAAO,MAAM,CAAExrB,EAAI8hC,EAAM,EAAE9hC,EAC5Cy6F,EAAW,IAAI,CAACP,GAAM,IAAI,CAAE1uE,CAAM,CAACxrB,EAAE,GAEvC,OAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAG,IAAI,CAAC,WAAW,CAAGy6F,EAAa,IAAI,CAAC,SAAS,CAACA,EAC9E,CACA,UAAUtmE,CAAM,CAAE,CAChB,MAAO,QAAaA,EAAO,IAAI,CAAC8lE,IAClC,CACF,CAqBA,SAASiC,GAAYC,CAAK,CAAE59E,CAAG,CAAE6/C,CAAO,EACtC,IAEIg+B,EAAYC,EAAYC,EAAYC,EAFpC5nB,EAAK,EACL3tE,EAAKm1F,EAAM,MAAM,CAAG,EAEpB/9B,GACE7/C,GAAO49E,CAAK,CAACxnB,EAAG,CAAC,GAAG,EAAIp2D,GAAO49E,CAAK,CAACn1F,EAAG,CAAC,GAAG,EAC7C,EAAC2tE,GAAAA,CAAE,CAAE3tE,GAAAA,CAAE,CAAC,CAAG,QAAam1F,EAAO,MAAO59E,EAAG,EAE3C,CAAC,IAAK69E,CAAU,CAAE,KAAME,CAAU,CAAC,CAAGH,CAAK,CAACxnB,EAAG,CAC/C,CAAC,IAAK0nB,CAAU,CAAE,KAAME,CAAU,CAAC,CAAGJ,CAAK,CAACn1F,EAAG,GAE5CuX,GAAO49E,CAAK,CAACxnB,EAAG,CAAC,IAAI,EAAIp2D,GAAO49E,CAAK,CAACn1F,EAAG,CAAC,IAAI,EAC/C,EAAC2tE,GAAAA,CAAE,CAAE3tE,GAAAA,CAAE,CAAC,CAAG,QAAam1F,EAAO,OAAQ59E,EAAG,EAE5C,CAAC,KAAM69E,CAAU,CAAE,IAAKE,CAAU,CAAC,CAAGH,CAAK,CAACxnB,EAAG,CAC/C,CAAC,KAAM0nB,CAAU,CAAE,IAAKE,CAAU,CAAC,CAAGJ,CAAK,CAACn1F,EAAG,EAElD,IAAMw1F,EAAOH,EAAaD,EAC1B,OAAOI,EAAOF,EAAa,AAACC,CAAAA,EAAaD,CAAS,EAAM/9E,CAAAA,EAAM69E,CAAS,EAAKI,EAAOF,CACrF,CAvCAxB,GAAU,EAAE,CAAG,OACfA,GAAU,QAAQ,CAAG,CACnB,OAAQ,OACR,SAAU,CAAC,EACX,KAAM,CACJ,OAAQ,GACR,KAAM,GACN,MAAO,GACP,WAAY,GACZ,QAAS,cACT,eAAgB,CAAC,CACnB,EACA,MAAO,CACL,OAAQ,OACR,MAAO,CACL,QAAS,EACX,CACF,CACF,CAsBA,OAAM2B,WAAwB3B,GAC5B,YAAYxsE,CAAK,CAAE,CACjB,KAAK,CAACA,GACN,IAAI,CAAC,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC,OAAO,CAAG3tB,KAAAA,EACf,IAAI,CAAC,WAAW,CAAGA,KAAAA,CACrB,CACA,aAAc,CACZ,IAAM85F,EAAa,IAAI,CAAC,sBAAsB,GACxC0B,EAAQ,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,gBAAgB,CAAC1B,EAClD,KAAI,CAAC,OAAO,CAAGyB,GAAYC,EAAO,IAAI,CAAC,GAAG,EAC1C,IAAI,CAAC,WAAW,CAAGD,GAAYC,EAAO,IAAI,CAAC,GAAG,EAAI,IAAI,CAAC,OAAO,CAC9D,KAAK,CAAC,YAAY1B,EACpB,CACA,iBAAiBA,CAAU,CAAE,KAIvBz6F,EAAG8hC,EAAMC,EAAM6jC,EAAMjkE,EAHzB,GAAM,CAACqgC,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAC,CAAG,IAAI,CACjBJ,EAAQ,EAAE,CACVs6D,EAAQ,EAAE,CAEhB,IAAKn8F,EAAI,EAAG8hC,EAAO24D,EAAW,MAAM,CAAEz6F,EAAI8hC,EAAM,EAAE9hC,EAChD4lE,CAAAA,EAAO60B,CAAU,CAACz6F,EAAE,AAAD,GACPgiC,GAAO4jC,GAAQ3jC,GACzBJ,EAAM,IAAI,CAAC+jC,GAGf,GAAI/jC,EAAM,MAAM,CAAG,EACjB,MAAO,CACL,CAAC,KAAMG,EAAK,IAAK,CAAC,EAClB,CAAC,KAAMC,EAAK,IAAK,CAAC,EACnB,CAEH,IAAKjiC,EAAI,EAAG8hC,EAAOD,EAAM,MAAM,CAAE7hC,EAAI8hC,EAAM,EAAE9hC,EAC3C2B,EAAOkgC,CAAK,CAAC7hC,EAAI,EAAE,CACnB+hC,EAAOF,CAAK,CAAC7hC,EAAI,EAAE,CAEfE,KAAK,KAAK,CAAC,AAACyB,CAAAA,EAAOogC,CAAG,EAAK,KAD/B6jC,CAAAA,EAAO/jC,CAAK,CAAC7hC,EAAE,AAAD,GAEZm8F,EAAM,IAAI,CAAC,CAAC,KAAMv2B,EAAM,IAAK5lE,EAAK8hC,CAAAA,EAAO,EAAE,GAG/C,OAAOq6D,CACT,CACA,wBAAyB,CACvB,IAAI1B,EAAa,IAAI,CAAC,MAAM,CAAC,GAAG,EAAI,EAAE,CACtC,GAAIA,EAAW,MAAM,CACnB,OAAOA,EAET,IAAMh6F,EAAO,IAAI,CAAC,iBAAiB,GAC7BmQ,EAAQ,IAAI,CAAC,kBAAkB,GAOrC,OALE6pF,EADEh6F,EAAK,MAAM,EAAImQ,EAAM,MAAM,CAChB,IAAI,CAAC,SAAS,CAACnQ,EAAK,MAAM,CAACmQ,IAE3BnQ,EAAK,MAAM,CAAGA,EAAOmQ,EAEpC6pF,EAAa,IAAI,CAAC,MAAM,CAAC,GAAG,CAAGA,CAEjC,CACA,mBAAmB74F,CAAK,CAAE,CACxB,MAAO,AAACs6F,CAAAA,GAAY,IAAI,CAAC,MAAM,CAAEt6F,GAAS,IAAI,CAAC,OAAO,AAAD,EAAK,IAAI,CAAC,WAAW,AAC5E,CACA,iBAAiBkiC,CAAK,CAAE,CACtB,IAAM23D,EAAU,IAAI,CAAC,QAAQ,CACvB/rB,EAAU,IAAI,CAAC,kBAAkB,CAAC5rC,GAAS23D,EAAQ,MAAM,CAAGA,EAAQ,GAAG,CAC7E,OAAOS,GAAY,IAAI,CAAC,MAAM,CAAExsB,EAAU,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,OAAO,CAAE,GAC7E,CACF,CACA+sB,GAAgB,EAAE,CAAG,aACrBA,GAAgB,QAAQ,CAAG3B,GAAU,QAAQ,CAY7C,IAAMzmD,GAAgB,CACpB4/B,EACA9lE,GACAgnC,GAbwBvwC,OAAO,MAAM,CAAC,CACxC,UAAW,KACX,cAAeuwF,GACf,YAAa2B,GACb,iBAAkBG,GAClB,kBAAmBU,GACnB,UAAWmD,GACX,gBAAiB2B,EACjB,GAOC,yCCpkTGx5B,EA17BEh/D,EAFN,SAASm1D,IAAQ,wgFACjB,IAAMsjC,GACAz4F,EAAK,EACF,WACL,OAAOA,GACT,GAEF,SAAS04F,EAAc/6F,CAAK,EAC1B,OAAOA,MAAAA,CACT,CACA,SAASg7F,EAAQh7F,CAAK,EACpB,GAAIhC,MAAM,OAAO,EAAIA,MAAM,OAAO,CAACgC,GACjC,MAAO,GAET,IAAMwL,EAAOxI,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAChD,SAC5C,AAAyB,YAArBwL,EAAK,KAAK,CAAC,EAAG,IAAoBA,AAAmB,WAAnBA,EAAK,KAAK,CAAC,KAG1C,EACT,CACA,SAASyvF,EAASj7F,CAAK,EACrB,OAAOA,AAAU,OAAVA,GAAkBgD,AAA0C,oBAA1CA,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAChD,EAC1D,CACA,IAAMk7F,EAAiB,AAACl7F,GAAU,AAAC,CAAiB,UAAjB,OAAOA,GAAsBA,aAAiBwjC,MAAK,GAAMiI,SAAS,CAACzrC,GACtG,SAASm7F,EAAgBn7F,CAAK,CAAEk8C,CAAY,EAC1C,OAAOg/C,EAAel7F,GAASA,EAAQk8C,CACzC,CACA,SAASk/C,EAAep7F,CAAK,CAAEk8C,CAAY,EACzC,OAAO,AAAiB,SAAVl8C,EAAwBk8C,EAAel8C,CACvD,CACA,IAAMq7F,EAAe,CAACr7F,EAAOs7F,IAC3B,AAAiB,UAAjB,OAAOt7F,GAAsBA,EAAM,QAAQ,CAAC,KAC1C+sB,WAAW/sB,GAAS,IAClBA,EAAQs7F,EACRC,EAAc,CAACv7F,EAAOs7F,IAC1B,AAAiB,UAAjB,OAAOt7F,GAAsBA,EAAM,QAAQ,CAAC,KAC1C+sB,WAAW/sB,GAAS,IAAMs7F,EACxB,CAACt7F,EACP,SAASJ,EAASijB,CAAE,CAAE6H,CAAI,CAAE8wE,CAAO,EACjC,GAAI34E,GAAM,AAAmB,YAAnB,OAAOA,EAAG,IAAI,CACtB,OAAOA,EAAG,KAAK,CAAC24E,EAAS9wE,EAE7B,CACA,SAAS+wE,EAAKC,CAAQ,CAAE74E,CAAE,CAAE24E,CAAO,CAAEh/B,CAAO,EAC1C,IAAIp+D,EAAGy9C,EAAKjmC,EACZ,GAAIolF,EAAQU,IAEV,GADA7/C,EAAM6/C,EAAS,MAAM,CACjBl/B,EACF,IAAKp+D,EAAIy9C,EAAM,EAAGz9C,GAAK,EAAGA,IACxBykB,EAAG,IAAI,CAAC24E,EAASE,CAAQ,CAACt9F,EAAE,CAAEA,QAGhC,IAAKA,EAAI,EAAGA,EAAIy9C,EAAKz9C,IACnBykB,EAAG,IAAI,CAAC24E,EAASE,CAAQ,CAACt9F,EAAE,CAAEA,QAG7B,GAAI68F,EAASS,GAGlB,IAAKt9F,EAAI,EADTy9C,EAAMjmC,AADNA,CAAAA,EAAO5S,OAAO,IAAI,CAAC04F,EAAQ,EAChB,MAAM,CACLt9F,EAAIy9C,EAAKz9C,IACnBykB,EAAG,IAAI,CAAC24E,EAASE,CAAQ,CAAC9lF,CAAI,CAACxX,EAAE,CAAC,CAAEwX,CAAI,CAACxX,EAAE,CAGjD,CACA,SAASu9F,EAAer7D,CAAE,CAAEC,CAAE,EAC5B,IAAIniC,EAAG8hC,EAAM6W,EAAIC,EACjB,GAAI,CAAC1W,GAAM,CAACC,GAAMD,EAAG,MAAM,GAAKC,EAAG,MAAM,CACvC,MAAO,GAET,IAAKniC,EAAI,EAAG8hC,EAAOI,EAAG,MAAM,CAAEliC,EAAI8hC,EAAM,EAAE9hC,EAGxC,GAFA24C,EAAKzW,CAAE,CAACliC,EAAE,CACV44C,EAAKzW,CAAE,CAACniC,EAAE,CACN24C,EAAG,YAAY,GAAKC,EAAG,YAAY,EAAID,EAAG,KAAK,GAAKC,EAAG,KAAK,CAC9D,MAAO,GAGX,MAAO,EACT,CACA,SAAS4kD,EAAQtmF,CAAM,EACrB,GAAI0lF,EAAQ1lF,GACV,OAAOA,EAAO,GAAG,CAACsmF,GAEpB,GAAIX,EAAS3lF,GAAS,CACpB,IAAMoF,EAAS1X,OAAO,MAAM,CAAC,MACvB4S,EAAO5S,OAAO,IAAI,CAACsS,GACnB4wB,EAAOtwB,EAAK,MAAM,CACpBjV,EAAI,EACR,KAAOA,EAAIulC,EAAM,EAAEvlC,EACjB+Z,CAAM,CAAC9E,CAAI,CAACjV,EAAE,CAAC,CAAGi7F,EAAQtmF,CAAM,CAACM,CAAI,CAACjV,EAAE,CAAC,EAE3C,OAAO+Z,CACT,CACA,OAAOpF,CACT,CACA,SAASumF,EAAW/lF,CAAG,EACrB,OAAO,AAA2D,KAA3D,CAAC,YAAa,YAAa,cAAc,CAAC,OAAO,CAACA,EAC3D,CACA,SAASgmF,EAAQhmF,CAAG,CAAE4E,CAAM,CAAEpF,CAAM,CAAE5E,CAAO,EAC3C,GAAI,CAACmrF,EAAW/lF,GACd,OAEF,IAAMimF,EAAOrhF,CAAM,CAAC5E,EAAI,CAClBkmF,EAAO1mF,CAAM,CAACQ,EAAI,AACpBmlF,CAAAA,EAASc,IAASd,EAASe,GAC7BC,EAAMF,EAAMC,EAAMtrF,GAElBgK,CAAM,CAAC5E,EAAI,CAAG8lF,EAAQI,EAE1B,CACA,SAASC,EAAMvhF,CAAM,CAAEpF,CAAM,CAAE5E,CAAO,EACpC,IAAM+hF,EAAUuI,EAAQ1lF,GAAUA,EAAS,CAACA,EAAO,CAC7C4qB,EAAOuyD,EAAQ,MAAM,CAC3B,GAAI,CAACwI,EAASvgF,GACZ,OAAOA,EAGT,IAAMwhF,EAASxrF,AADfA,CAAAA,EAAUA,GAAW,CAAC,GACC,MAAM,EAAIorF,EACjC,IAAK,IAAI19F,EAAI,EAAGA,EAAI8hC,EAAM,EAAE9hC,EAAG,CAE7B,GAAI,CAAC68F,EADL3lF,EAASm9E,CAAO,CAACr0F,EAAE,EAEjB,SAEF,IAAMwX,EAAO5S,OAAO,IAAI,CAACsS,GACzB,IAAK,IAAI3U,EAAI,EAAGulC,EAAOtwB,EAAK,MAAM,CAAEjV,EAAIulC,EAAM,EAAEvlC,EAC9Cu7F,EAAOtmF,CAAI,CAACjV,EAAE,CAAE+Z,EAAQpF,EAAQ5E,EAEpC,CACA,OAAOgK,CACT,CACA,SAASyhF,EAAQzhF,CAAM,CAAEpF,CAAM,EAC7B,OAAO2mF,EAAMvhF,EAAQpF,EAAQ,CAAC,OAAQ8mF,CAAS,EACjD,CACA,SAASA,EAAUtmF,CAAG,CAAE4E,CAAM,CAAEpF,CAAM,EACpC,GAAI,CAACumF,EAAW/lF,GACd,OAEF,IAAMimF,EAAOrhF,CAAM,CAAC5E,EAAI,CAClBkmF,EAAO1mF,CAAM,CAACQ,EAAI,AACpBmlF,CAAAA,EAASc,IAASd,EAASe,GAC7BG,EAAQJ,EAAMC,GACL,CAACh5F,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC0X,EAAQ5E,IACvD4E,CAAAA,CAAM,CAAC5E,EAAI,CAAG8lF,EAAQI,EAAI,CAE9B,CAOA,IAAMK,EAAe,CACnB,GAAIx5F,GAAKA,EACT,EAAGof,GAAKA,EAAE,CAAC,CACX,EAAGA,GAAKA,EAAE,CAAC,AACb,EACA,SAASq6E,EAAiBtoE,CAAG,CAAEle,CAAG,EAEhC,MAAO4lE,AADU2gB,CAAAA,CAAY,CAACvmF,EAAI,EAAKumF,CAAAA,CAAY,CAACvmF,EAAI,CAAGymF,AAG7D,SAAyBzmF,CAAG,EAC1B,IAAMF,EAAO4mF,AAWf,SAAmB1mF,CAAG,EACpB,IAAMQ,EAAQR,EAAI,KAAK,CAAC,KAClBF,EAAO,EAAE,CACX6mF,EAAM,GACV,IAAK,IAAM1kF,KAAQzB,EAEbmmF,AADJA,CAAAA,GAAO1kF,CAAG,EACF,QAAQ,CAAC,MACf0kF,EAAMA,EAAI,KAAK,CAAC,EAAG,IAAM,KAEzB7mF,EAAK,IAAI,CAAC6mF,GACVA,EAAM,IAGV,OAAO7mF,CACT,EAzByBE,GACvB,OAAOke,IACL,IAAK,IAAMrzB,KAAKiV,EAAM,CACpB,GAAIjV,AAAM,KAANA,EACF,MAEFqzB,EAAMA,GAAOA,CAAG,CAACrzB,EAAE,AACrB,CACA,OAAOqzB,CACT,CACF,EAd6Ele,EAAG,CAAC,EAC/Dke,EAClB,CA4BA,SAAS0oE,EAAY3rF,CAAG,EACtB,OAAOA,EAAI,MAAM,CAAC,GAAG,WAAW,GAAKA,EAAI,KAAK,CAAC,EACjD,CACA,IAAM4rF,EAAU,AAAC38F,GAAU,AAAiB,SAAVA,EAC5B48F,EAAa,AAAC58F,GAAU,AAAiB,YAAjB,OAAOA,EAC/B68F,EAAY,CAACv8F,EAAGC,KACpB,GAAID,EAAE,IAAI,GAAKC,EAAE,IAAI,CACnB,MAAO,GAET,IAAK,IAAMk6D,KAAQn6D,EACjB,GAAI,CAACC,EAAE,GAAG,CAACk6D,GACT,MAAO,GAGX,MAAO,EACT,EACA,SAASqiC,EAAc12F,CAAC,EACtB,MAAOA,AAAW,YAAXA,EAAE,IAAI,EAAkBA,AAAW,UAAXA,EAAE,IAAI,EAAgBA,AAAW,gBAAXA,EAAE,IAAI,AAC7D,CAEA,IAAM22F,EAAKz+F,KAAK,EAAE,CACZ0+F,EAAM,EAAID,EACVE,EAAQD,EAAMD,EACdG,EAAW15D,OAAO,iBAAiB,CACnC25D,EAAcJ,EAAK,IACnBj6D,EAAUi6D,EAAK,EACfK,EAAaL,EAAK,EAClBM,EAAgBN,AAAK,EAALA,EAAS,EACzBO,EAAQh/F,KAAK,KAAK,CAClBi/F,EAAOj/F,KAAK,IAAI,CACtB,SAASk/F,EAAQ18D,CAAK,EACpB,IAAM28D,EAAen/F,KAAK,KAAK,CAACwiC,GAE1B48D,EAAYp/F,KAAK,GAAG,CAAC,GAAIA,KAAK,KAAK,CAACg/F,EAD1Cx8D,EAAQ68D,EAAa78D,EAAO28D,EAAc38D,EAAQ,KAAQ28D,EAAe38D,KAEnE88D,EAAW98D,EAAQ48D,EAEzB,MAAOG,AADcD,CAAAA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAI,EAAC,EAC5DF,CACxB,CACA,SAASI,EAAW99F,CAAK,MAGnB5B,EAFJ,IAAMqsB,EAAS,EAAE,CACXszE,EAAOz/F,KAAK,IAAI,CAAC0B,GAEvB,IAAK5B,EAAI,EAAGA,EAAI2/F,EAAM3/F,IAChB4B,EAAQ5B,GAAM,IAChBqsB,EAAO,IAAI,CAACrsB,GACZqsB,EAAO,IAAI,CAACzqB,EAAQ5B,IAOxB,OAJI2/F,IAAUA,CAAAA,AAAO,EAAPA,CAAO,GACnBtzE,EAAO,IAAI,CAACszE,GAEdtzE,EAAO,IAAI,CAAC,CAACnqB,EAAGC,IAAMD,EAAIC,GAAG,GAAG,GACzBkqB,CACT,CACA,SAASuzE,EAAS5+F,CAAC,EACjB,MAAO,CAACk3C,MAAMvpB,WAAW3tB,KAAOqsC,SAASrsC,EAC3C,CACA,SAASu+F,EAAa5/F,CAAC,CAAEoD,CAAC,CAAE88F,CAAO,EACjC,OAAO3/F,KAAK,GAAG,CAACP,EAAIoD,GAAK88F,CAC3B,CACA,SAASC,EAAYngG,CAAC,CAAEkgG,CAAO,EAC7B,IAAME,EAAU7/F,KAAK,KAAK,CAACP,GAC3B,OAAO,AAAEogG,EAAUF,GAAYlgG,GAAO,AAACogG,EAAUF,GAAYlgG,CAC/D,CACA,SAASqgG,EAAmBlgG,CAAK,CAAEwc,CAAM,CAAEX,CAAQ,EACjD,IAAI3b,EAAG8hC,EAAMlgC,EACb,IAAK5B,EAAI,EAAG8hC,EAAOhiC,EAAM,MAAM,CAAEE,EAAI8hC,EAAM9hC,IAErC,CAACk4C,MADLt2C,EAAQ9B,CAAK,CAACE,EAAE,CAAC2b,EAAS,IAExBW,EAAO,GAAG,CAAGpc,KAAK,GAAG,CAACoc,EAAO,GAAG,CAAE1a,GAClC0a,EAAO,GAAG,CAAGpc,KAAK,GAAG,CAACoc,EAAO,GAAG,CAAE1a,GAGxC,CACA,SAASq+F,EAAUC,CAAO,EACxB,OAAOA,AAAWvB,EAAK,IAAhBuB,CACT,CACA,SAASC,EAAUC,CAAO,EACxB,OAAOA,AAAW,IAAMzB,EAAjByB,CACT,CACA,SAASC,EAAe1gG,CAAC,EACvB,GAAI,CAACm9F,EAAen9F,GAClB,OAEF,IAAIqI,EAAI,EACJD,EAAI,EACR,KAAO7H,KAAK,KAAK,CAACP,EAAIqI,GAAKA,IAAMrI,GAC/BqI,GAAK,GACLD,IAEF,OAAOA,CACT,CACA,SAASu4F,EAAkBC,CAAW,CAAEC,CAAU,EAChD,IAAMC,EAAsBD,EAAW,CAAC,CAAGD,EAAY,CAAC,CAClDG,EAAsBF,EAAW,CAAC,CAAGD,EAAY,CAAC,CAClDI,EAA2BzgG,KAAK,IAAI,CAACugG,EAAsBA,EAAsBC,EAAsBA,GACzGxvF,EAAQhR,KAAK,KAAK,CAACwgG,EAAqBD,GAI5C,OAHIvvF,EAAS,IAAOytF,GAClBztF,CAAAA,GAAS0tF,CAAE,EAEN,CACL1tF,MAAAA,EACA,SAAUyvF,CACZ,CACF,CACA,SAASC,EAAsBprB,CAAG,CAAEC,CAAG,EACrC,OAAOv1E,KAAK,IAAI,CAACA,KAAK,GAAG,CAACu1E,EAAI,CAAC,CAAGD,EAAI,CAAC,CAAE,GAAKt1E,KAAK,GAAG,CAACu1E,EAAI,CAAC,CAAGD,EAAI,CAAC,CAAE,GACxE,CACA,SAASqrB,EAAW3+F,CAAC,CAAEC,CAAC,EACtB,MAAO,AAACD,CAAAA,EAAIC,EAAI08F,CAAI,EAAKD,EAAMD,CACjC,CACA,SAASmC,EAAgB5+F,CAAC,EACxB,MAAO,AAACA,CAAAA,EAAI08F,EAAMA,CAAE,EAAKA,CAC3B,CACA,SAASmC,GAAc7vF,CAAK,CAAEnP,CAAK,CAAED,CAAG,CAAEk/F,CAAqB,EAC7D,IAAM9+F,EAAI4+F,EAAgB5vF,GACpB/L,EAAI27F,EAAgB/+F,GACpBiG,EAAI84F,EAAgBh/F,GACpBm/F,EAAeH,EAAgB37F,EAAIjD,GACnCg/F,EAAaJ,EAAgB94F,EAAI9F,GACjCi/F,EAAeL,EAAgB5+F,EAAIiD,GACnCi8F,EAAaN,EAAgB5+F,EAAI8F,GACvC,OAAO9F,IAAMiD,GAAKjD,IAAM8F,GAAMg5F,GAAyB77F,IAAM6C,GACvDi5F,EAAeC,GAAcC,EAAeC,CACpD,CACA,SAASC,GAAYz/F,CAAK,CAAEogC,CAAG,CAAEC,CAAG,EAClC,OAAO/hC,KAAK,GAAG,CAAC8hC,EAAK9hC,KAAK,GAAG,CAAC+hC,EAAKrgC,GACrC,CACA,SAAS0/F,GAAY1/F,CAAK,EACxB,OAAOy/F,GAAYz/F,EAAO,OAAQ,MACpC,CACA,SAAS2/F,GAAW3/F,CAAK,CAAEG,CAAK,CAAED,CAAG,CAAE+9F,EAAU,IAAI,EACnD,OAAOj+F,GAAS1B,KAAK,GAAG,CAAC6B,EAAOD,GAAO+9F,GAAWj+F,GAAS1B,KAAK,GAAG,CAAC6B,EAAOD,GAAO+9F,CACpF,CAEA,SAAS2B,GAAQrF,CAAK,CAAEv6F,CAAK,CAAE6/F,CAAG,MAI5Bx6F,EAHJw6F,EAAMA,GAAQ,CAAC//F,GAAUy6F,CAAK,CAACz6F,EAAM,CAAGE,CAAI,EAC5C,IAAIoF,EAAKm1F,EAAM,MAAM,CAAG,EACpBxnB,EAAK,EAET,KAAO3tE,EAAK2tE,EAAK,GAEX8sB,EADJx6F,EAAM,AAAC0tE,EAAK3tE,GAAO,GAEjB2tE,EAAK1tE,EAELD,EAAKC,EAGT,MAAO,CAAC0tE,GAAAA,EAAI3tE,GAAAA,CAAE,CAChB,CACA,IAAM06F,GAAe,CAACvF,EAAOzkF,EAAK9V,EAAOiY,IACvC2nF,GAAQrF,EAAOv6F,EAAOiY,EAClBnY,GAASy6F,CAAK,CAACz6F,EAAM,CAACgW,EAAI,EAAI9V,EAC9BF,GAASy6F,CAAK,CAACz6F,EAAM,CAACgW,EAAI,CAAG9V,GAC7B+/F,GAAgB,CAACxF,EAAOzkF,EAAK9V,IACjC4/F,GAAQrF,EAAOv6F,EAAOF,GAASy6F,CAAK,CAACz6F,EAAM,CAACgW,EAAI,EAAI9V,GACtD,SAASggG,GAAeztE,CAAM,CAAE6N,CAAG,CAAEC,CAAG,EACtC,IAAIlgC,EAAQ,EACRD,EAAMqyB,EAAO,MAAM,CACvB,KAAOpyB,EAAQD,GAAOqyB,CAAM,CAACpyB,EAAM,CAAGigC,GACpCjgC,IAEF,KAAOD,EAAMC,GAASoyB,CAAM,CAACryB,EAAM,EAAE,CAAGmgC,GACtCngC,IAEF,OAAOC,EAAQ,GAAKD,EAAMqyB,EAAO,MAAM,CACnCA,EAAO,KAAK,CAACpyB,EAAOD,GACpBqyB,CACN,CACA,IAAM0tE,GAAc,CAAC,OAAQ,MAAO,QAAS,SAAU,UAAU,CACjE,SAASC,GAAkBhiG,CAAK,CAAE6sB,CAAQ,EACxC,GAAI7sB,EAAM,QAAQ,CAAE,CAClBA,EAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC6sB,GAC9B,MACF,CACA/nB,OAAO,cAAc,CAAC9E,EAAO,WAAY,CACvC,aAAc,GACd,WAAY,GACZ,MAAO,CACL,UAAW,CAAC6sB,EAAS,AACvB,CACF,GACAk1E,GAAY,OAAO,CAAC,AAACnqF,IACnB,IAAM4lD,EAAS,UAAYghC,EAAY5mF,GACjC+5B,EAAO3xC,CAAK,CAAC4X,EAAI,CACvB9S,OAAO,cAAc,CAAC9E,EAAO4X,EAAK,CAChC,aAAc,GACd,WAAY,GACZ,MAAM,GAAG4U,CAAI,EACX,IAAM4U,EAAMuQ,EAAK,KAAK,CAAC,IAAI,CAAEnlB,GAM7B,OALAxsB,EAAM,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,AAACwyD,IACF,YAA1B,OAAOA,CAAM,CAACgL,EAAO,EACvBhL,CAAM,CAACgL,EAAO,IAAIhxC,EAEtB,GACO4U,CACT,CACF,EACF,EACF,CACA,SAAS6gE,GAAoBjiG,CAAK,CAAE6sB,CAAQ,EAC1C,IAAMq1E,EAAOliG,EAAM,QAAQ,CAC3B,GAAI,CAACkiG,EACH,OAEF,IAAMr6D,EAAYq6D,EAAK,SAAS,CAC1BtgG,EAAQimC,EAAU,OAAO,CAAChb,GAIhC,GAHc,KAAVjrB,GACFimC,EAAU,MAAM,CAACjmC,EAAO,IAEtBimC,CAAAA,EAAU,MAAM,CAAG,GAGvBk6D,GAAY,OAAO,CAAC,AAACnqF,IACnB,OAAO5X,CAAK,CAAC4X,EAAI,AACnB,GACA,OAAO5X,EAAM,QAAQ,AACvB,CACA,SAASmiG,GAAapgE,CAAK,MAErB7hC,EAAG8hC,EADP,IAAMukB,EAAM,IAAIu2B,IAEhB,IAAK58E,EAAI,EAAG8hC,EAAOD,EAAM,MAAM,CAAE7hC,EAAI8hC,EAAM,EAAE9hC,EAC3CqmD,EAAI,GAAG,CAACxkB,CAAK,CAAC7hC,EAAE,SAElB,AAAIqmD,EAAI,IAAI,GAAKvkB,EACRD,EAEFjiC,MAAM,IAAI,CAACymD,EACpB,CAKA,IAAM67C,GACJ,AAAI,AAAkB,aAAlB,OAAO3gE,OACF,SAAS//B,CAAQ,EACtB,OAAOA,GACT,EAEK+/B,OAAO,qBAAqB,CAErC,SAAS4gE,GAAU19E,CAAE,CAAE24E,CAAO,CAAEgF,CAAQ,EACtC,IAAMC,EAAaD,GAAa,CAAC91E,GAAS1sB,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC0sB,EAAI,EACrEg2E,EAAU,GACVh2E,EAAO,EAAE,CACb,OAAO,SAAS,GAAGi2E,CAAI,EACrBj2E,EAAO+1E,EAAWE,GACd,CAACD,IACHA,EAAU,GACVJ,GAAiB,IAAI,CAAC3gE,OAAQ,KAC5B+gE,EAAU,GACV79E,EAAG,KAAK,CAAC24E,EAAS9wE,EACpB,GAEJ,CACF,CACA,SAASk2E,GAAS/9E,CAAE,CAAE+uB,CAAK,EACzB,IAAIb,EACJ,OAAO,SAAS,GAAGrmB,CAAI,EAOrB,OANIknB,GACFU,aAAavB,GACbA,EAAUQ,WAAW1uB,EAAI+uB,EAAOlnB,IAEhC7H,EAAG,KAAK,CAAC,IAAI,CAAE6H,GAEVknB,CACT,CACF,CACA,IAAMivD,GAAqB,AAAC/tF,GAAUA,AAAU,UAAVA,EAAoB,OAASA,AAAU,QAAVA,EAAkB,QAAU,SACzFguF,GAAiB,CAAChuF,EAAO3S,EAAOD,IAAQ4S,AAAU,UAAVA,EAAoB3S,EAAQ2S,AAAU,QAAVA,EAAkB5S,EAAM,AAACC,CAAAA,EAAQD,CAAE,EAAK,EAC5G6gG,GAAS,CAACjuF,EAAOpR,EAAME,EAAOyoF,IAE3Bv3E,IADOu3E,CAAAA,EAAM,OAAS,OAAM,EACVzoF,EAAQkR,AAAU,WAAVA,EAAqB,AAACpR,CAAAA,EAAOE,CAAI,EAAK,EAAIF,EAE7E,SAASs/F,GAAiC/jC,CAAI,CAAEhwD,CAAM,CAAEw6D,CAAkB,EACxE,IAAM75D,EAAaX,EAAO,MAAM,CAC5B9M,EAAQ,EACR3B,EAAQoP,EACZ,GAAIqvD,EAAK,OAAO,CAAE,CAChB,GAAM,CAACW,OAAAA,CAAM,CAAE2C,QAAAA,CAAO,CAAC,CAAGtD,EACpBn5B,EAAO85B,EAAO,IAAI,CAClB,CAACx9B,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAEugC,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAC,CAAGjD,EAAO,aAAa,GAC3DgD,GACFzgE,CAAAA,EAAQs/F,GAAYnhG,KAAK,GAAG,CAC1BwhG,GAAav/B,EAAS3C,EAAO,IAAI,CAAEx9B,GAAK,EAAE,CAC1CqnC,EAAqB75D,EAAakyF,GAAa7yF,EAAQ62B,EAAM85B,EAAO,gBAAgB,CAACx9B,IAAM,EAAE,EAC/F,EAAGxyB,EAAa,EAAC,EAGjBpP,EADEqiE,EACM4+B,GAAYnhG,KAAK,GAAG,CAC1BwhG,GAAav/B,EAAS3C,EAAO,IAAI,CAAEv9B,EAAK,IAAM,EAAE,CAAG,EACnDonC,EAAqB,EAAIq4B,GAAa7yF,EAAQ62B,EAAM85B,EAAO,gBAAgB,CAACv9B,GAAM,IAAM,EAAE,CAAG,GAC/FlgC,EAAOyN,GAAczN,EAEbyN,EAAazN,CAEzB,CACA,MAAO,CAACA,MAAAA,EAAO3B,MAAAA,CAAK,CACtB,CACA,SAASyiG,GAAoBhkC,CAAI,EAC/B,GAAM,CAACiD,OAAAA,CAAM,CAAEC,OAAAA,CAAM,CAAE+gC,aAAAA,CAAY,CAAC,CAAGjkC,EACjCkkC,EAAY,CAChB,KAAMjhC,EAAO,GAAG,CAChB,KAAMA,EAAO,GAAG,CAChB,KAAMC,EAAO,GAAG,CAChB,KAAMA,EAAO,GAAG,AAClB,EACA,GAAI,CAAC+gC,EAEH,OADAjkC,EAAK,YAAY,CAAGkkC,EACb,GAET,IAAMnsB,EAAUksB,EAAa,IAAI,GAAKhhC,EAAO,GAAG,EAC7CghC,EAAa,IAAI,GAAKhhC,EAAO,GAAG,EAChCghC,EAAa,IAAI,GAAK/gC,EAAO,GAAG,EAChC+gC,EAAa,IAAI,GAAK/gC,EAAO,GAAG,CAEnC,OADAn9D,OAAO,MAAM,CAACk+F,EAAcC,GACrBnsB,CACT,CAEA,IAAMosB,GAAS,AAACjjG,GAAMA,AAAM,IAANA,GAAWA,AAAM,IAANA,EAC3BmsC,GAAY,CAACnsC,EAAGoF,EAAG4C,IAAM,CAAE7H,CAAAA,KAAK,GAAG,CAAC,EAAG,GAAMH,CAAAA,GAAK,IAAMG,KAAK,GAAG,CAAC,AAACH,CAAAA,EAAIoF,CAAAA,EAAKy5F,EAAM72F,EAAC,EAClFokC,GAAa,CAACpsC,EAAGoF,EAAG4C,IAAM7H,KAAK,GAAG,CAAC,EAAG,IAAMH,GAAKG,KAAK,GAAG,CAAC,AAACH,CAAAA,EAAIoF,CAAAA,EAAKy5F,EAAM72F,GAAK,EAC/Ek7F,GAAU,CACd,OAAQljG,GAAKA,EACb,WAAYA,GAAKA,EAAIA,EACrB,YAAaA,GAAK,CAACA,EAAKA,CAAAA,EAAI,GAC5B,cAAeA,GAAK,AAAC,AAACA,CAAAA,GAAK,EAAE,EAAK,EAC9B,GAAMA,EAAIA,EACV,IAAQ,CAAC,EAAEA,EAAMA,CAAAA,EAAI,GAAK,GAC9B,YAAaA,GAAKA,EAAIA,EAAIA,EAC1B,aAAcA,GAAK,AAACA,CAAAA,GAAK,GAAKA,EAAIA,EAAI,EACtC,eAAgBA,GAAK,AAAC,AAACA,CAAAA,GAAK,EAAE,EAAK,EAC/B,GAAMA,EAAIA,EAAIA,EACd,GAAO,CAACA,CAAAA,GAAK,GAAKA,EAAIA,EAAI,GAC9B,YAAaA,GAAKA,EAAIA,EAAIA,EAAIA,EAC9B,aAAcA,GAAK,CAAE,CAACA,CAAAA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC5C,eAAgBA,GAAK,AAAC,AAACA,CAAAA,GAAK,EAAE,EAAK,EAC/B,GAAMA,EAAIA,EAAIA,EAAIA,EAClB,IAAQ,CAACA,CAAAA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GACnC,YAAaA,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAClC,aAAcA,GAAK,AAACA,CAAAA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAC9C,eAAgBA,GAAK,AAAC,AAACA,CAAAA,GAAK,EAAE,EAAK,EAC/B,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EACtB,GAAO,CAACA,CAAAA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GACtC,WAAYA,GAAK,CAACG,KAAK,GAAG,CAACH,EAAI2kC,GAAW,EAC1C,YAAa3kC,GAAKG,KAAK,GAAG,CAACH,EAAI2kC,GAC/B,cAAe3kC,GAAK,IAAQG,CAAAA,KAAK,GAAG,CAACy+F,EAAK5+F,GAAK,GAC/C,WAAYA,GAAK,AAACA,AAAM,IAANA,EAAW,EAAIG,KAAK,GAAG,CAAC,EAAG,GAAMH,CAAAA,EAAI,IACvD,YAAaA,GAAK,AAACA,AAAM,IAANA,EAAW,EAAI,CAACG,KAAK,GAAG,CAAC,EAAG,IAAMH,GAAK,EAC1D,cAAeA,GAAKijG,GAAOjjG,GAAKA,EAAIA,EAAI,GACpC,GAAMG,KAAK,GAAG,CAAC,EAAG,GAAMH,CAAAA,AAAI,EAAJA,EAAQ,IAChC,GAAO,EAACG,KAAK,GAAG,CAAC,EAAG,IAAOH,CAAAA,AAAI,EAAJA,EAAQ,IAAM,GAC7C,WAAYA,GAAK,AAACA,GAAK,EAAKA,EAAI,CAAEG,CAAAA,KAAK,IAAI,CAAC,EAAIH,EAAIA,GAAK,GACzD,YAAaA,GAAKG,KAAK,IAAI,CAAC,EAAI,AAACH,CAAAA,GAAK,GAAKA,GAC3C,cAAeA,GAAK,AAAC,AAACA,CAAAA,GAAK,EAAE,EAAK,EAC9B,IAAQG,CAAAA,KAAK,IAAI,CAAC,EAAIH,EAAIA,GAAK,GAC/B,GAAOG,CAAAA,KAAK,IAAI,CAAC,EAAI,AAACH,CAAAA,GAAK,GAAKA,GAAK,GACzC,cAAeA,GAAKijG,GAAOjjG,GAAKA,EAAImsC,GAAUnsC,EAAG,KAAO,IACxD,eAAgBA,GAAKijG,GAAOjjG,GAAKA,EAAIosC,GAAWpsC,EAAG,KAAO,IAC1D,iBAAiBA,GAGRijG,GAAOjjG,GAAKA,EACjBA,EAAI,GACA,GAAMmsC,GAAUnsC,AAAI,EAAJA,EAJZ,MACA,KAIJ,GAAM,GAAMosC,GAAWpsC,AAAI,EAAJA,EAAQ,EAL3B,MACA,KAMZ,WAAWA,GAEFA,EAAIA,EAAK,CAACoF,QAASpF,EADhB,OACoBoF,EAEhC,YAAYpF,GAEH,AAACA,CAAAA,GAAK,GAAKA,EAAK,CAACoF,QAASpF,EADvB,OAC2BoF,EAAK,EAE5C,cAAcpF,CAAC,EACb,IAAIoF,EAAI,cACR,AAAI,AAACpF,CAAAA,GAAK,EAAE,EAAK,EACR,GAAOA,CAAAA,EAAIA,EAAK,CAAC,CAACoF,CAAAA,GAAM,KAAK,EAAK,GAAKpF,EAAIoF,CAAAA,CAAC,EAE9C,GAAO,CAACpF,CAAAA,GAAK,GAAKA,EAAK,CAAC,CAACoF,CAAAA,GAAM,KAAK,EAAK,GAAKpF,EAAIoF,CAAAA,EAAK,EAChE,EACA,aAAcpF,GAAK,EAAIkjG,GAAQ,aAAa,CAAC,EAAIljG,GACjD,cAAcA,GAGZ,AAAIA,EAAK,mBACAE,AAHC,OAGGF,EAAIA,EAEbA,EAAK,kBACAE,AANC,OAMIF,CAAAA,GAAM,iBAAO,EAAKA,EAAI,IAEhCA,EAAK,kBACAE,AATC,OASIF,CAAAA,GAAM,iBAAQ,EAAKA,EAAI,MAE9BE,AAXG,OAWEF,CAAAA,GAAM,iBAAS,EAAKA,EAAI,QAEtC,gBAAiBA,GAAK,AAACA,EAAI,GACvBkjG,AAA8B,GAA9BA,GAAQ,YAAY,CAACljG,AAAI,EAAJA,GACrBkjG,AAAmC,GAAnCA,GAAQ,aAAa,CAACljG,AAAI,EAAJA,EAAQ,GAAW,EAC/C,EAQA,SAASwL,GAAM9G,CAAC,EACd,OAAOA,EAAI,GAAM,CACnB,CACA,IAAMy+F,GAAM,CAACz+F,EAAGyE,EAAGu7B,IAAMvkC,KAAK,GAAG,CAACA,KAAK,GAAG,CAACuE,EAAGggC,GAAIv7B,GAClD,SAASi6F,GAAI1+F,CAAC,EACZ,OAAOy+F,GAAI33F,GAAM9G,AAAI,KAAJA,GAAW,EAAG,IACjC,CACA,SAAS2+F,GAAI3+F,CAAC,EACZ,OAAOy+F,GAAI33F,GAAM9G,AAAI,IAAJA,GAAU,EAAG,IAChC,CACA,SAAS4+F,GAAI5+F,CAAC,EACZ,OAAOy+F,GAAI33F,GAAM9G,EAAI,MAAQ,IAAK,EAAG,EACvC,CACA,SAAS6+F,GAAI7+F,CAAC,EACZ,OAAOy+F,GAAI33F,GAAM9G,AAAI,IAAJA,GAAU,EAAG,IAChC,CACA,IAAM8+F,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAE,EACvJxrD,GAAM,IAAI,mBAAmB,CAC7BxQ,GAAKplC,GAAK41C,EAAG,CAAC51C,AAAI,GAAJA,EAAQ,CACtBqhG,GAAKrhG,GAAK41C,EAAG,CAAC,AAAC51C,CAAAA,AAAI,IAAJA,CAAO,GAAM,EAAE,CAAG41C,EAAG,CAAC51C,AAAI,GAAJA,EAAQ,CAC7CshG,GAAKthG,GAAK,AAAEA,CAAAA,AAAI,IAAJA,CAAO,GAAM,GAAQA,CAAAA,AAAI,GAAJA,CAAM,EACvCuhG,GAAUj/F,GAAKg/F,GAAGh/F,EAAE,CAAC,GAAKg/F,GAAGh/F,EAAE,CAAC,GAAKg/F,GAAGh/F,EAAE,CAAC,GAAKg/F,GAAGh/F,EAAE,CAAC,EAuBtDgI,GAAQ,CAACvK,EAAG1C,IAAM0C,EAAI,IAAM1C,EAAE0C,GAAK,GAOnCyhG,GAAS,+GACf,SAASC,GAASn/D,CAAC,CAAEt/B,CAAC,CAAE+D,CAAC,EACvB,IAAMhH,EAAIiD,EAAIjF,KAAK,GAAG,CAACgJ,EAAG,EAAIA,GACxB1J,EAAI,CAACwB,EAAGuB,EAAI,AAACvB,CAAAA,EAAIyjC,EAAI,EAAC,EAAK,EAAE,GAAKv7B,EAAIhH,EAAIhC,KAAK,GAAG,CAACA,KAAK,GAAG,CAACqC,EAAI,EAAG,EAAIA,EAAG,GAAI,IACpF,MAAO,CAAC/C,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAG,AAC3B,CACA,SAASqkG,GAASp/D,CAAC,CAAEt/B,CAAC,CAAEV,CAAC,EACvB,IAAMjF,EAAI,CAACwB,EAAGuB,EAAI,AAACvB,CAAAA,EAAIyjC,EAAI,EAAC,EAAK,CAAC,GAAKhgC,EAAIA,EAAIU,EAAIjF,KAAK,GAAG,CAACA,KAAK,GAAG,CAACqC,EAAG,EAAIA,EAAG,GAAI,GACnF,MAAO,CAAC/C,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAG,AAC3B,CACA,SAASskG,GAASr/D,CAAC,CAAEj/B,CAAC,CAAErD,CAAC,MAEnBnC,EADJ,IAAMk5C,EAAM0qD,GAASn/D,EAAG,EAAG,IAO3B,IALIj/B,EAAIrD,EAAI,IACVnC,EAAI,EAAKwF,CAAAA,EAAIrD,CAAAA,EACbqD,GAAKxF,EACLmC,GAAKnC,GAEFA,EAAI,EAAGA,EAAI,EAAGA,IACjBk5C,CAAG,CAACl5C,EAAE,EAAI,EAAIwF,EAAIrD,EAClB+2C,CAAG,CAACl5C,EAAE,EAAIwF,EAEZ,OAAO0zC,CACT,CAUA,SAAS6qD,GAAQt/F,CAAC,MAQZggC,EAAGt/B,EAAG9D,EANV,IAAMiJ,EAAI7F,EAAE,CAAC,CADC,IAERmzC,EAAInzC,EAAE,CAAC,CAFC,IAGRtC,EAAIsC,EAAE,CAAC,CAHC,IAIRw9B,EAAM/hC,KAAK,GAAG,CAACoK,EAAGstC,EAAGz1C,GACrB6/B,EAAM9hC,KAAK,GAAG,CAACoK,EAAGstC,EAAGz1C,GACrB+G,EAAI,AAAC+4B,CAAAA,EAAMD,CAAE,EAAK,EAExB,GAAIC,IAAQD,EAAK,KAlBD13B,EAAGstC,EAAGz1C,EAAGd,EAAG4gC,EAmB1B5gC,EAAI4gC,EAAMD,EACV78B,EAAI+D,EAAI,GAAM7H,EAAK,GAAI4gC,EAAMD,CAAE,EAAK3gC,EAAK4gC,CAAAA,EAAMD,CAAE,EApBnC13B,EAqBDA,EArBIstC,EAqBDA,EArBIz1C,EAqBDA,EArBId,EAqBDA,EACtBojC,EAAIA,AAAI,GADRA,CAAAA,EApBF,AAAIn6B,KADwB23B,EAqBDA,GAnBlB,AAAE2V,CAAAA,EAAIz1C,CAAAA,EAAKd,EAAMu2C,CAAAA,EAAIz1C,EAAI,EAAI,GAElCy1C,IAAM3V,EACD,AAAC9/B,CAAAA,EAAImI,CAAAA,EAAKjJ,EAAI,EAEhB,AAACiJ,CAAAA,EAAIstC,CAAAA,EAAKv2C,EAAI,CAcS,EACf,EACf,CACA,MAAO,CAACojC,AAAI,EAAJA,EAAOt/B,GAAK,EAAG+D,EAAE,AAC3B,CACA,SAAS86F,GAAMxkG,CAAC,CAAE0C,CAAC,CAAEC,CAAC,CAAEG,CAAC,EACvB,MAAO,AACL1C,CAAAA,MAAM,OAAO,CAACsC,GACV1C,EAAE0C,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,EAClB1C,EAAE0C,EAAGC,EAAGG,EAAC,EACb,GAAG,CAAC8gG,GACR,CACA,SAAS7qD,GAAQ9T,CAAC,CAAEt/B,CAAC,CAAE+D,CAAC,EACtB,OAAO86F,GAAMJ,GAAUn/D,EAAGt/B,EAAG+D,EAC/B,CAOA,SAAS+6F,GAAIx/D,CAAC,EACZ,MAAO,AAACA,CAAAA,EAAI,IAAM,GAAE,EAAK,GAC3B,CAgDA,IAAMzZ,GAAM,CACV,EAAG,OACH,EAAG,QACH,EAAG,KACH,EAAG,MACH,EAAG,KACH,EAAG,SACH,EAAG,QACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,QACH,EAAG,QACH,EAAG,KACH,EAAG,WACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,QACH,EAAG,KACH,EAAG,KACH,EAAG,OACH,EAAG,KACH,EAAG,QACH,EAAG,IACL,EACMk5E,GAAU,CACd,OAAQ,SACR,YAAa,SACb,KAAM,OACN,UAAW,SACX,KAAM,SACN,MAAO,SACP,OAAQ,SACR,MAAO,IACP,aAAc,SACd,GAAI,KACJ,QAAS,SACT,KAAM,SACN,UAAW,SACX,OAAQ,SACR,SAAU,SACV,QAAS,SACT,IAAK,SACL,YAAa,SACb,QAAS,SACT,QAAS,SACT,KAAM,OACN,IAAK,KACL,MAAO,OACP,QAAS,SACT,KAAM,SACN,KAAM,OACN,KAAM,SACN,OAAQ,SACR,QAAS,SACT,SAAU,SACV,OAAQ,SACR,MAAO,SACP,IAAK,SACL,OAAQ,SACR,OAAQ,SACR,KAAM,SACN,MAAO,SACP,MAAO,SACP,IAAK,OACL,OAAQ,SACR,OAAQ,SACR,SAAU,OACV,OAAQ,SACR,OAAQ,SACR,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,OAAQ,SACR,QAAS,SACT,UAAW,SACX,IAAK,SACL,OAAQ,SACR,IAAK,SACL,IAAK,OACL,MAAO,SACP,IAAK,SACL,QAAS,SACT,OAAQ,SACR,QAAS,SACT,MAAO,SACP,KAAM,SACN,MAAO,SACP,OAAQ,SACR,UAAW,SACX,QAAS,SACT,WAAY,SACZ,IAAK,SACL,KAAM,SACN,MAAO,SACP,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,KAAM,SACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,MAAO,SACP,MAAO,SACP,QAAS,SACT,IAAK,SACL,KAAM,OACN,QAAS,SACT,IAAK,SACL,OAAQ,SACR,MAAO,SACP,WAAY,SACZ,IAAK,KACL,MAAO,SACP,OAAQ,SACR,OAAQ,SACR,KAAM,SACN,UAAW,OACX,IAAK,SACL,SAAU,SACV,WAAY,SACZ,QAAS,SACT,SAAU,SACV,QAAS,SACT,WAAY,SACZ,KAAM,KACN,OAAQ,SACR,KAAM,SACN,QAAS,SACT,MAAO,SACP,QAAS,SACT,KAAM,SACN,UAAW,SACX,OAAQ,SACR,MAAO,SACP,WAAY,SACZ,UAAW,SACX,QAAS,SACT,KAAM,SACN,IAAK,SACL,KAAM,SACN,QAAS,SACT,MAAO,SACP,YAAa,SACb,GAAI,SACJ,SAAU,SACV,MAAO,SACP,UAAW,SACX,MAAO,SACP,UAAW,SACX,MAAO,SACP,QAAS,SACT,MAAO,SACP,OAAQ,SACR,MAAO,SACP,IAAK,SACL,KAAM,SACN,KAAM,SACN,KAAM,SACN,SAAU,OACV,OAAQ,SACR,IAAK,SACL,IAAK,OACL,MAAO,SACP,OAAQ,SACR,GAAI,SACJ,MAAO,SACP,IAAK,SACL,KAAM,SACN,UAAW,SACX,GAAI,SACJ,MAAO,QACT,EA+BMC,GAAS,uGAgCThzC,GAAK1sD,GAAKA,GAAK,SAAYA,AAAI,MAAJA,EAAYvE,AAAyB,MAAzBA,KAAK,GAAG,CAACuE,EAAG,EAAM,KAAe,KACxEsjD,GAAOtjD,GAAKA,GAAK,OAAUA,EAAI,MAAQvE,KAAK,GAAG,CAAC,AAACuE,CAAAA,EAAI,IAAI,EAAK,MAAO,KAY3E,SAAS2/F,GAAO3/F,CAAC,CAAEzE,CAAC,CAAEyH,CAAK,EACzB,GAAIhD,EAAG,KA1TWU,EAAG+D,EA2TnB,IAAIm1F,EAAM0F,GAAQt/F,EAClB45F,CAAAA,CAAG,CAACr+F,EAAE,CAAGE,KAAK,GAAG,CAAC,EAAGA,KAAK,GAAG,CAACm+F,CAAG,CAACr+F,EAAE,CAAGq+F,CAAG,CAACr+F,EAAE,CAAGyH,EAAOzH,AAAM,IAANA,EAAU,IAAM,IACvEq+F,EA5TK2F,GAAMJ,GA4TGvF,EA7TEl5F,KAAAA,EAAG+D,KAAAA,GA8TnBzE,EAAE,CAAC,CAAG45F,CAAG,CAAC,EAAE,CACZ55F,EAAE,CAAC,CAAG45F,CAAG,CAAC,EAAE,CACZ55F,EAAE,CAAC,CAAG45F,CAAG,CAAC,EAAE,AACd,CACF,CACA,SAASgG,GAAM5/F,CAAC,CAAEquE,CAAK,EACrB,OAAOruE,EAAIG,OAAO,MAAM,CAACkuE,GAAS,CAAC,EAAGruE,GAAKA,CAC7C,CACA,SAAS6/F,GAAW3iE,CAAK,EACvB,IAAIl9B,EAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG,EAYjC,OAXI7E,MAAM,OAAO,CAAC+hC,GACZA,EAAM,MAAM,EAAI,IAClBl9B,EAAI,CAAC,EAAGk9B,CAAK,CAAC,EAAE,CAAE,EAAGA,CAAK,CAAC,EAAE,CAAE,EAAGA,CAAK,CAAC,EAAE,CAAE,EAAG,GAAG,EAC9CA,EAAM,MAAM,CAAG,GACjBl9B,CAAAA,EAAE,CAAC,CAAG2+F,GAAIzhE,CAAK,CAAC,EAAE,IAKtBl9B,AADAA,CAAAA,EAAI4/F,GAAM1iE,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAC,EACvC,CAAC,CAAGyhE,GAAI3+F,EAAE,CAAC,EAERA,CACT,CAOA,MAAM4xC,GACJ,YAAY1U,CAAK,CAAE,KAKbl9B,EAJJ,GAAIk9B,aAAiB0U,GACnB,OAAO1U,EAET,IAAMv0B,EAAO,OAAOu0B,EAEpB,GAAIv0B,AAAS,WAATA,EACF3I,EAAI6/F,GAAW3iE,QACV,GAAIv0B,AAAS,WAATA,EAAmB,KA1bhBuF,EAEZ23D,EADA7sB,EA0aiB9qC,EAgBjBlO,EAAI8/F,CAAAA,AA1bJ9mD,EAAM9qC,CADMA,EA2bCgvB,GA1bH,MAAM,CAEL,MAAXhvB,CAAG,CAAC,EAAE,GACJ8qC,AAAQ,IAARA,GAAaA,AAAQ,IAARA,EACf6sB,EAAM,CACJ,EAAG,IAAMi5B,AAAgB,GAAhBA,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,CACtB,EAAG,IAAM4wF,AAAgB,GAAhBA,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,CACtB,EAAG,IAAM4wF,AAAgB,GAAhBA,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,CACtB,EAAG8qC,AAAQ,IAARA,EAAY8lD,AAAgB,GAAhBA,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,CAAQ,GACtC,EACS8qC,CAAAA,AAAQ,IAARA,GAAaA,AAAQ,IAARA,CAAQ,GAC9B6sB,CAAAA,EAAM,CACJ,EAAGi5B,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,EAAI,EAAI4wF,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,CACrC,EAAG4wF,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,EAAI,EAAI4wF,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,CACrC,EAAG4wF,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,EAAI,EAAI4wF,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,CACrC,EAAG8qC,AAAQ,IAARA,EAAa8lD,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,EAAI,EAAI4wF,EAAK,CAAC5wF,CAAG,CAAC,EAAE,CAAC,CAAI,GACxD,IA0aI4xF,AAvaDj6B,GAuaoBk6B,AAtG7B,SAAmB7xF,CAAG,EAChB,CAACswD,GAEHA,CAAAA,AADAA,CAAAA,EAAQwhC,AAnBZ,eAIMzkG,EAAG6G,EAAGtE,EAAGmiG,EAAIC,EAHjB,IAAMC,EAAW,CAAC,EACZptF,EAAO5S,OAAO,IAAI,CAACs/F,IACnBW,EAAQjgG,OAAO,IAAI,CAAComB,IAE1B,IAAKhrB,EAAI,EAAGA,EAAIwX,EAAK,MAAM,CAAExX,IAAK,CAEhC,IAAK6G,EAAI,EADT69F,EAAKC,EAAKntF,CAAI,CAACxX,EAAE,CACL6G,EAAIg+F,EAAM,MAAM,CAAEh+F,IAC5BtE,EAAIsiG,CAAK,CAACh+F,EAAE,CACZ89F,EAAKA,EAAG,OAAO,CAACpiG,EAAGyoB,EAAG,CAACzoB,EAAE,EAE3BA,EAAI4M,SAAS+0F,EAAO,CAACQ,EAAG,CAAE,IAC1BE,CAAQ,CAACD,EAAG,CAAG,CAACpiG,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAMA,AAAI,IAAJA,EAAS,AAC1D,CACA,OAAOqiG,CACT,GAImB,EACT,WAAW,CAAG,CAAC,EAAG,EAAG,EAAG,EAAE,AAAD,EAEjC,IAAM1iG,EAAI+gE,CAAK,CAACtwD,EAAI,WAAW,GAAG,CAClC,OAAOzQ,GAAK,CACV,EAAGA,CAAC,CAAC,EAAE,CACP,EAAGA,CAAC,CAAC,EAAE,CACP,EAAGA,CAAC,CAAC,EAAE,CACP,EAAGA,AAAa,IAAbA,EAAE,MAAM,CAASA,CAAC,CAAC,EAAE,CAAG,GAC7B,CACF,EA0FuCy/B,IAfrC,CAAIhvB,AAAkB,MAAlBA,CADiBA,EAgBwCgvB,GAfrD,MAAM,CAAC,GACNmjE,AA1EX,SAAkBnyF,CAAG,MAGfrI,EAAGstC,EAAGz1C,EAFV,IAAMlC,EAAIkkG,GAAO,IAAI,CAACxxF,GAClBzQ,EAAI,IAER,IAAI,CAACjC,GAGL,GAAIA,CAAC,CAAC,EAAE,GAAKqK,EAAG,CACd,IAAM7F,EAAI,CAACxE,CAAC,CAAC,EAAE,CACfiC,EAAIjC,CAAC,CAAC,EAAE,CAAGkjG,GAAI1+F,GAAKy+F,GAAIz+F,AAAI,IAAJA,EAAS,EAAG,IACtC,CAOA,OANA6F,EAAI,CAACrK,CAAC,CAAC,EAAE,CACT23C,EAAI,CAAC33C,CAAC,CAAC,EAAE,CACTkC,EAAI,CAAClC,CAAC,CAAC,EAAE,CACTqK,EAAI,IAAOrK,CAAAA,CAAC,CAAC,EAAE,CAAGkjG,GAAI74F,GAAK44F,GAAI54F,EAAG,EAAG,IAAG,EACxCstC,EAAI,IAAO33C,CAAAA,CAAC,CAAC,EAAE,CAAGkjG,GAAIvrD,GAAKsrD,GAAItrD,EAAG,EAAG,IAAG,EAEjC,CACL,EAAGttC,EACH,EAAGstC,EACH,EAJFz1C,EAAI,IAAOlC,CAAAA,CAAC,CAAC,EAAE,CAAGkjG,GAAIhhG,GAAK+gG,GAAI/gG,EAAG,EAAG,IAAG,EAKtC,EAAGD,CACL,EACF,EAmDoByQ,GAEXoyF,AA7UT,SAAkBpyF,CAAG,MAGflO,EAFJ,IAAMxE,EAAI0jG,GAAO,IAAI,CAAChxF,GAClBzQ,EAAI,IAER,GAAI,CAACjC,EACH,MAEEA,CAAAA,CAAC,CAAC,EAAE,GAAKwE,GACXvC,CAAAA,EAAIjC,CAAC,CAAC,EAAE,CAAGkjG,GAAI,CAACljG,CAAC,CAAC,EAAE,EAAImjG,GAAI,CAACnjG,CAAC,CAAC,EAAE,GAEnC,IAAMwkC,EAAIw/D,GAAI,CAAChkG,CAAC,CAAC,EAAE,EACboP,EAAK,CAACpP,CAAC,CAAC,EAAE,CAAG,IACbqP,EAAK,CAACrP,CAAC,CAAC,EAAE,CAAG,IACnB,GAAIA,AAAS,QAATA,CAAC,CAAC,EAAE,CACNwE,EAtBKu/F,GAAMF,GAsBCr/D,EAAGp1B,EAAIC,QACd,GAAIrP,AAAS,QAATA,CAAC,CAAC,EAAE,CACbwE,EArBKu/F,GAAMH,GAqBCp/D,EAAGp1B,EAAIC,QAEnB7K,EA7BKu/F,GAAMJ,GA6BCn/D,EAAGp1B,EAAIC,GAErB,MAAO,CACL,EAAG7K,CAAC,CAAC,EAAE,CACP,EAAGA,CAAC,CAAC,EAAE,CACP,EAAGA,CAAC,CAAC,EAAE,CACP,EAAGvC,CACL,CACF,EAmTkByQ,EADhB,CAakE,CAChE,CACA,IAAI,CAAC,IAAI,CAAGlO,EACZ,IAAI,CAAC,MAAM,CAAG,CAAC,CAACA,CAClB,CACA,IAAI,OAAQ,CACV,OAAO,IAAI,CAAC,MAAM,AACpB,CACA,IAAI,KAAM,CACR,IAAIA,EAAI4/F,GAAM,IAAI,CAAC,IAAI,EAIvB,OAHI5/F,GACFA,CAAAA,EAAE,CAAC,CAAG4+F,GAAI5+F,EAAE,CAAC,GAERA,CACT,CACA,IAAI,IAAImxB,CAAG,CAAE,CACX,IAAI,CAAC,IAAI,CAAG0uE,GAAW1uE,EACzB,CACA,WAAY,KAlFKnxB,EAmFf,OAAO,IAAI,CAAC,MAAM,CAlFbA,CADUA,EAmFgB,IAAI,CAAC,IAAI,GAjFxCA,CAAAA,EAAE,CAAC,CAAG,IACF,CAAC,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE4+F,GAAI5+F,EAAE,CAAC,EAAE,CAAC,CAAC,CAC3C,CAAC,IAAI,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,AAAD,EA+EY9D,KAAAA,CAC9C,CACA,WAAY,KAzbK8D,EACbjF,EAybF,OAAO,IAAI,CAAC,MAAM,EAzbhBA,EAAIkkG,GADSj/F,EA0bgB,IAAI,CAAC,IAAI,EAzbrB8iC,GAAKi8D,GACnB/+F,EACH,IAAMjF,EAAEiF,EAAE,CAAC,EAAIjF,EAAEiF,EAAE,CAAC,EAAIjF,EAAEiF,EAAE,CAAC,EAAIgI,GAAMhI,EAAE,CAAC,CAAEjF,GAC5CmB,KAAAA,GAsb0CA,KAAAA,CAC9C,CACA,WAAY,CACV,OAAO,IAAI,CAAC,MAAM,CAAGqkG,AA/UzB,SAAmBvgG,CAAC,EAClB,GAAI,CAACA,EACH,OAEF,IAAMvC,EAAI6hG,GAAQt/F,GACZggC,EAAIviC,CAAC,CAAC,EAAE,CACRiD,EAAIm+F,GAAIphG,CAAC,CAAC,EAAE,EACZgH,EAAIo6F,GAAIphG,CAAC,CAAC,EAAE,EAClB,OAAOuC,EAAE,CAAC,CAAG,IACT,CAAC,KAAK,EAAEggC,EAAE,EAAE,EAAEt/B,EAAE,GAAG,EAAE+D,EAAE,GAAG,EAAEm6F,GAAI5+F,EAAE,CAAC,EAAE,CAAC,CAAC,CACvC,CAAC,IAAI,EAAEggC,EAAE,EAAE,EAAEt/B,EAAE,GAAG,EAAE+D,EAAE,EAAE,CAAC,AAC/B,EAoUmC,IAAI,CAAC,IAAI,EAAIvI,KAAAA,CAC9C,CACA,IAAIijC,CAAK,CAAE+zC,CAAM,CAAE,CACjB,GAAI/zC,EAAO,KAGLqhE,EAFJ,IAAMroC,EAAK,IAAI,CAAC,GAAG,CACblzD,EAAKk6B,EAAM,GAAG,CAEd77B,EAAI4vE,IAAWstB,EAAK,GAAMttB,EAC1BnyE,EAAI,EAAIuC,EAAI,EACZ7F,EAAI06D,EAAG,CAAC,CAAGlzD,EAAG,CAAC,CACfw7F,EAAK,AAAC,CAAC1/F,CAAAA,EAAItD,GAAM,GAAKsD,EAAI,AAACA,CAAAA,EAAItD,CAAAA,EAAM,GAAIsD,EAAItD,CAAAA,CAAC,EAAK,GAAK,EAC9D+iG,EAAK,EAAIC,EACTtoC,EAAG,CAAC,CAAG,IAAOsoC,EAAKtoC,EAAG,CAAC,CAAGqoC,EAAKv7F,EAAG,CAAC,CAAG,GACtCkzD,EAAG,CAAC,CAAG,IAAOsoC,EAAKtoC,EAAG,CAAC,CAAGqoC,EAAKv7F,EAAG,CAAC,CAAG,GACtCkzD,EAAG,CAAC,CAAG,IAAOsoC,EAAKtoC,EAAG,CAAC,CAAGqoC,EAAKv7F,EAAG,CAAC,CAAG,GACtCkzD,EAAG,CAAC,CAAG70D,EAAI60D,EAAG,CAAC,CAAG,AAAC,GAAI70D,CAAAA,EAAK2B,EAAG,CAAC,CAChC,IAAI,CAAC,GAAG,CAAGkzD,CACb,CACA,OAAO,IAAI,AACb,CACA,YAAYh5B,CAAK,CAAE7jC,CAAC,CAAE,CAIpB,OAHI6jC,GACF,KAAI,CAAC,IAAI,CAAGs4D,AAtGlB,SAAqBiJ,CAAI,CAAEC,CAAI,CAAErlG,CAAC,EAChC,IAAMuK,EAAIy9C,GAAKs7C,GAAI8B,EAAK,CAAC,GACnBvtD,EAAImQ,GAAKs7C,GAAI8B,EAAK,CAAC,GACnBhjG,EAAI4lD,GAAKs7C,GAAI8B,EAAK,CAAC,GACzB,MAAO,CACL,EAAG/B,GAAIjyC,GAAG7mD,EAAIvK,EAAKgoD,CAAAA,GAAKs7C,GAAI+B,EAAK,CAAC,GAAK96F,CAAAA,IACvC,EAAG84F,GAAIjyC,GAAGvZ,EAAI73C,EAAKgoD,CAAAA,GAAKs7C,GAAI+B,EAAK,CAAC,GAAKxtD,CAAAA,IACvC,EAAGwrD,GAAIjyC,GAAGhvD,EAAIpC,EAAKgoD,CAAAA,GAAKs7C,GAAI+B,EAAK,CAAC,GAAKjjG,CAAAA,IACvC,EAAGgjG,EAAK,CAAC,CAAGplG,EAAKqlG,CAAAA,EAAK,CAAC,CAAGD,EAAK,CAAC,AAAD,CACjC,CACF,EA4F8B,IAAI,CAAC,IAAI,CAAEvhE,EAAM,IAAI,CAAE7jC,EAAC,EAE3C,IAAI,AACb,CACA,OAAQ,CACN,OAAO,IAAIs2C,GAAM,IAAI,CAAC,GAAG,CAC3B,CACA,MAAMn0C,CAAC,CAAE,CAEP,OADA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAGkhG,GAAIlhG,GACX,IAAI,AACb,CACA,QAAQuF,CAAK,CAAE,CACb,IAAMyxC,EAAM,IAAI,CAAC,IAAI,CAErB,OADAA,EAAI,CAAC,EAAI,EAAIzxC,EACN,IAAI,AACb,CACA,WAAY,CACV,IAAMyxC,EAAM,IAAI,CAAC,IAAI,CACf36B,EAAMhT,GAAM2tC,AAAQ,GAARA,EAAI,CAAC,CAASA,AAAQ,IAARA,EAAI,CAAC,CAAUA,AAAQ,IAARA,EAAI,CAAC,EAEpD,OADAA,EAAI,CAAC,CAAGA,EAAI,CAAC,CAAGA,EAAI,CAAC,CAAG36B,EACjB,IAAI,AACb,CACA,QAAQ9W,CAAK,CAAE,CACb,IAAMyxC,EAAM,IAAI,CAAC,IAAI,CAErB,OADAA,EAAI,CAAC,EAAI,EAAIzxC,EACN,IAAI,AACb,CACA,QAAS,CACP,IAAMhD,EAAI,IAAI,CAAC,IAAI,CAInB,OAHAA,EAAE,CAAC,CAAG,IAAMA,EAAE,CAAC,CACfA,EAAE,CAAC,CAAG,IAAMA,EAAE,CAAC,CACfA,EAAE,CAAC,CAAG,IAAMA,EAAE,CAAC,CACR,IAAI,AACb,CACA,QAAQgD,CAAK,CAAE,CAEb,OADA28F,GAAO,IAAI,CAAC,IAAI,CAAE,EAAG38F,GACd,IAAI,AACb,CACA,OAAOA,CAAK,CAAE,CAEZ,OADA28F,GAAO,IAAI,CAAC,IAAI,CAAE,EAAG,CAAC38F,GACf,IAAI,AACb,CACA,SAASA,CAAK,CAAE,CAEd,OADA28F,GAAO,IAAI,CAAC,IAAI,CAAE,EAAG38F,GACd,IAAI,AACb,CACA,WAAWA,CAAK,CAAE,CAEhB,OADA28F,GAAO,IAAI,CAAC,IAAI,CAAE,EAAG,CAAC38F,GACf,IAAI,AACb,CACA,OAAO49F,CAAG,CAAE,KA/ZE5gG,EAAG4gG,EACb5gE,EAxCct/B,EAAG+D,EAwcnB,OAjaYzE,EAgaL,IAAI,CAAC,IAAI,CAhaD4gG,EAgaGA,EA9ZpB5gE,CADIA,EAAIs/D,GAAQt/F,GACf,CAAC,EAAE,CAAGw/F,GAAIx/D,CAAC,CAAC,EAAE,CAAG4gE,GAClB5gE,EAzCOu/D,GAAMJ,GAyCDn/D,EA1CMt/B,KAAAA,EAAG+D,KAAAA,GA2CrBzE,EAAE,CAAC,CAAGggC,CAAC,CAAC,EAAE,CACVhgC,EAAE,CAAC,CAAGggC,CAAC,CAAC,EAAE,CACVhgC,EAAE,CAAC,CAAGggC,CAAC,CAAC,EAAE,CA2ZD,IAAI,AACb,CACF,CACA,SAAS6gE,GAAU3jE,CAAK,EACtB,OAAO,IAAI0U,GAAM1U,EACnB,CAEA,SAAS4jE,GAAoB3jG,CAAK,EAChC,GAAIA,GAAS,AAAiB,UAAjB,OAAOA,EAAoB,CACtC,IAAMwL,EAAOxL,EAAM,QAAQ,GAC3B,MAAOwL,AAAS,2BAATA,GAAqCA,AAAS,4BAATA,CAC9C,CACA,MAAO,EACT,CACA,SAASw2B,GAAMhiC,CAAK,EAClB,OAAO2jG,GAAoB3jG,GAASA,EAX7B,IAAIy0C,GAW2Cz0C,EACxD,CACA,SAAS4jG,GAAc5jG,CAAK,EAC1B,OAAO2jG,GAAoB3jG,GACvBA,EACA0jG,AAhBG,IAAIjvD,GAgBGz0C,GAAO,QAAQ,CAAC,IAAK,MAAM,CAAC,IAAK,SAAS,EAC1D,CAEA,IAAMmP,GAAYnM,OAAO,MAAM,CAAC,MAC1Bw2E,GAAcx2E,OAAO,MAAM,CAAC,MAClC,SAAS6gG,GAAWplG,CAAI,CAAEqX,CAAG,EAC3B,GAAI,CAACA,EACH,OAAOrX,EAET,IAAMmX,EAAOE,EAAI,KAAK,CAAC,KACvB,IAAK,IAAI1X,EAAI,EAAGgB,EAAIwW,EAAK,MAAM,CAAExX,EAAIgB,EAAG,EAAEhB,EAAG,CAC3C,IAAMuC,EAAIiV,CAAI,CAACxX,EAAE,CACjBK,EAAOA,CAAI,CAACkC,EAAE,EAAKlC,CAAAA,CAAI,CAACkC,EAAE,CAAGqC,OAAO,MAAM,CAAC,KAAI,CACjD,CACA,OAAOvE,CACT,CACA,SAASgmD,GAAIplD,CAAI,CAAE2xE,CAAK,CAAEz+C,CAAM,QAC9B,AAAI,AAAiB,UAAjB,OAAOy+C,EACFirB,EAAM4H,GAAWxkG,EAAM2xE,GAAQz+C,GAEjC0pE,EAAM4H,GAAWxkG,EAAM,IAAK2xE,EACrC,CAoFA,IAAI/pC,GAAW,IAnFf,MAAM68D,EACJ,YAAYC,CAAY,CAAE,CACxB,IAAI,CAAC,SAAS,CAAGhlG,KAAAA,EACjB,IAAI,CAAC,eAAe,CAAG,kBACvB,IAAI,CAAC,WAAW,CAAG,kBACnB,IAAI,CAAC,KAAK,CAAG,OACb,IAAI,CAAC,QAAQ,CAAG,CAAC,EACjB,IAAI,CAAC,gBAAgB,CAAG,AAACwM,GAAYA,EAAQ,KAAK,CAAC,QAAQ,CAAC,mBAAmB,GAC/E,IAAI,CAAC,QAAQ,CAAG,CAAC,EACjB,IAAI,CAAC,MAAM,CAAG,CACZ,YACA,WACA,QACA,aACA,YACD,CACD,IAAI,CAAC,IAAI,CAAG,CACV,OAAQ,qDACR,KAAM,GACN,MAAO,SACP,WAAY,IACZ,OAAQ,IACV,EACA,IAAI,CAAC,KAAK,CAAG,CAAC,EACd,IAAI,CAAC,oBAAoB,CAAG,CAACioB,EAAK9iB,IAAYkzF,GAAclzF,EAAQ,eAAe,EACnF,IAAI,CAAC,gBAAgB,CAAG,CAAC8iB,EAAK9iB,IAAYkzF,GAAclzF,EAAQ,WAAW,EAC3E,IAAI,CAAC,UAAU,CAAG,CAAC8iB,EAAK9iB,IAAYkzF,GAAclzF,EAAQ,KAAK,EAC/D,IAAI,CAAC,SAAS,CAAG,IACjB,IAAI,CAAC,WAAW,CAAG,CACjB,KAAM,UACN,UAAW,GACX,iBAAkB,EACpB,EACA,IAAI,CAAC,mBAAmB,CAAG,GAC3B,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,OAAO,CAAG,GACf,IAAI,CAAC,OAAO,CAAG,CAAC,EAChB,IAAI,CAAC,UAAU,CAAG,GAClB,IAAI,CAAC,KAAK,CAAG3R,KAAAA,EACb,IAAI,CAAC,MAAM,CAAG,CAAC,EACf,IAAI,CAAC,QAAQ,CAAG,GAChB,IAAI,CAAC,uBAAuB,CAAG,GAC/B,IAAI,CAAC,QAAQ,CAACglG,EAChB,CACA,IAAI/yB,CAAK,CAAEz+C,CAAM,CAAE,CACjB,OAAOkyB,GAAI,IAAI,CAAEusB,EAAOz+C,EAC1B,CACA,IAAIy+C,CAAK,CAAE,CACT,OAAO6yB,GAAW,IAAI,CAAE7yB,EAC1B,CACA,SAASA,CAAK,CAAEz+C,CAAM,CAAE,CACtB,OAAOkyB,GAAI+0B,GAAaxI,EAAOz+C,EACjC,CACA,SAASy+C,CAAK,CAAEz+C,CAAM,CAAE,CACtB,OAAOkyB,GAAIt1C,GAAW6hE,EAAOz+C,EAC/B,CACA,MAAMy+C,CAAK,CAAE37D,CAAI,CAAEu8D,CAAW,CAAED,CAAU,CAAE,CAC1C,IAAMqyB,EAAcH,GAAW,IAAI,CAAE7yB,GAC/BizB,EAAoBJ,GAAW,IAAI,CAAEjyB,GACrCsyB,EAAc,IAAM7uF,EAC1BrS,OAAO,gBAAgB,CAACghG,EAAa,CACnC,CAACE,EAAY,CAAE,CACb,MAAOF,CAAW,CAAC3uF,EAAK,CACxB,SAAU,EACZ,EACA,CAACA,EAAK,CAAE,CACN,WAAY,GACZ,MACE,IAAMwiB,EAAQ,IAAI,CAACqsE,EAAY,CACzBxpF,EAASupF,CAAiB,CAACtyB,EAAW,QAC5C,AAAIspB,EAASpjE,GACJ70B,OAAO,MAAM,CAAC,CAAC,EAAG0X,EAAQmd,GAE5BujE,EAAevjE,EAAOnd,EAC/B,EACA,IAAI1a,CAAK,EACP,IAAI,CAACkkG,EAAY,CAAGlkG,CACtB,CACF,CACF,EACF,CACF,EAC4B,CAC1B,YAAa,AAACqV,GAAS,CAACA,EAAK,UAAU,CAAC,MACxC,WAAY,AAACA,GAASA,AAAS,WAATA,EACtB,MAAO,CACL,UAAW,aACb,EACA,YAAa,CACX,YAAa,GACb,WAAY,EACd,CACF,GAWA,SAAS8uF,GAAa3wE,CAAG,CAAE30B,CAAI,CAAE8uE,CAAE,CAAEy2B,CAAO,CAAEjtE,CAAM,EAClD,IAAIy7B,EAAY/zD,CAAI,CAACs4B,EAAO,CAQ5B,MAPI,CAACy7B,IACHA,EAAY/zD,CAAI,CAACs4B,EAAO,CAAG3D,EAAI,WAAW,CAAC2D,GAAQ,KAAK,CACxDw2C,EAAG,IAAI,CAACx2C,IAENy7B,EAAYwxC,GACdA,CAAAA,EAAUxxC,CAAQ,EAEbwxC,CACT,CACA,SAASC,GAAa7wE,CAAG,CAAEwM,CAAI,CAAEskE,CAAa,CAAE9zE,CAAK,MAa/CpyB,EAAG6G,EAAG6/B,EAAMy/D,EAAOC,EAXvB,IAAI3lG,EAAO2xB,AADXA,CAAAA,EAAQA,GAAS,CAAC,GACD,IAAI,CAAGA,EAAM,IAAI,EAAI,CAAC,EACnCm9C,EAAKn9C,EAAM,cAAc,CAAGA,EAAM,cAAc,EAAI,EAAE,AACtDA,CAAAA,EAAM,IAAI,GAAKwP,IACjBnhC,EAAO2xB,EAAM,IAAI,CAAG,CAAC,EACrBm9C,EAAKn9C,EAAM,cAAc,CAAG,EAAE,CAC9BA,EAAM,IAAI,CAAGwP,GAEfxM,EAAI,IAAI,GACRA,EAAI,IAAI,CAAGwM,EACX,IAAIokE,EAAU,EACRlkE,EAAOokE,EAAc,MAAM,CAEjC,IAAKlmG,EAAI,EAAGA,EAAI8hC,EAAM9hC,IAEpB,GAAImmG,MADJA,CAAAA,EAAQD,CAAa,CAAClmG,EAAE,AAAD,GACsB48F,AAAmB,KAAnBA,EAAQuJ,GACnDH,EAAUD,GAAa3wE,EAAK30B,EAAM8uE,EAAIy2B,EAASG,QAC1C,GAAIvJ,EAAQuJ,GACjB,IAAKt/F,EAAI,EAAG6/B,EAAOy/D,EAAM,MAAM,CAAEt/F,EAAI6/B,EAAM7/B,UACzCu/F,CAAAA,EAAcD,CAAK,CAACt/F,EAAE,AAAD,GACoC,CAAC+1F,EAAQwJ,IAChEJ,CAAAA,EAAUD,GAAa3wE,EAAK30B,EAAM8uE,EAAIy2B,EAASI,EAAW,EAKlEhxE,EAAI,OAAO,GACX,IAAMo6C,EAAQD,EAAG,MAAM,CAAG,EAC1B,GAAIC,EAAQ02B,EAAc,MAAM,CAAE,CAChC,IAAKlmG,EAAI,EAAGA,EAAIwvE,EAAOxvE,IACrB,OAAOS,CAAI,CAAC8uE,CAAE,CAACvvE,EAAE,CAAC,CAEpBuvE,EAAG,MAAM,CAAC,EAAGC,EACf,CACA,OAAOw2B,CACT,CACA,SAASK,GAAYjiE,CAAK,CAAEN,CAAK,CAAE7wB,CAAK,EACtC,IAAMquB,EAAmB8C,EAAM,uBAAuB,CAChDrsB,EAAY9E,AAAU,IAAVA,EAAc/S,KAAK,GAAG,CAAC+S,EAAQ,EAAG,IAAO,EAC3D,OAAO/S,KAAK,KAAK,CAAC,AAAC4jC,CAAAA,EAAQ/rB,CAAQ,EAAKupB,GAAoBA,EAAmBvpB,CACjF,CACA,SAASuuF,GAAY10F,CAAM,CAAEwjB,CAAG,EAE9BA,AADAA,CAAAA,EAAMA,GAAOxjB,EAAO,UAAU,CAAC,KAAI,EAC/B,IAAI,GACRwjB,EAAI,cAAc,GAClBA,EAAI,SAAS,CAAC,EAAG,EAAGxjB,EAAO,KAAK,CAAEA,EAAO,MAAM,EAC/CwjB,EAAI,OAAO,EACb,CACA,SAASmxE,GAAUnxE,CAAG,CAAE9iB,CAAO,CAAE3S,CAAC,CAAEoD,CAAC,EACnCyjG,GAAgBpxE,EAAK9iB,EAAS3S,EAAGoD,EAAG,KACtC,CACA,SAASyjG,GAAgBpxE,CAAG,CAAE9iB,CAAO,CAAE3S,CAAC,CAAEoD,CAAC,CAAEyC,CAAC,MACxC4H,EAAMq5F,EAASC,EAAS7pF,EAAM3N,EAAc+D,EAChD,IAAMmF,EAAQ9F,EAAQ,UAAU,CAC1B2zB,EAAW3zB,EAAQ,QAAQ,CAC3B9H,EAAS8H,EAAQ,MAAM,CACzBgxC,EAAM,AAACrd,CAAAA,GAAY,GAAK84D,EAC5B,GAAI3mF,GAAS,AAAiB,UAAjB,OAAOA,GAEdhL,CAAAA,AAAS,8BADbA,CAAAA,EAAOgL,EAAM,QAAQ,EAAC,GACsBhL,AAAS,+BAATA,CAAoC,EAAG,CACjFgoB,EAAI,IAAI,GACRA,EAAI,SAAS,CAACz1B,EAAGoD,GACjBqyB,EAAI,MAAM,CAACkuB,GACXluB,EAAI,SAAS,CAAChd,EAAO,CAACA,EAAM,KAAK,CAAG,EAAG,CAACA,EAAM,MAAM,CAAG,EAAGA,EAAM,KAAK,CAAEA,EAAM,MAAM,EACnFgd,EAAI,OAAO,GACX,MACF,CAEF,GAAI8iB,CAAAA,MAAM1tC,KAAWA,CAAAA,GAAU,IAI/B,OADA4qB,EAAI,SAAS,GACLhd,GACR,QACM5S,EACF4vB,EAAI,OAAO,CAACz1B,EAAGoD,EAAGyC,EAAI,EAAGgF,EAAQ,EAAG,EAAGo0F,GAEvCxpE,EAAI,GAAG,CAACz1B,EAAGoD,EAAGyH,EAAQ,EAAGo0F,GAE3BxpE,EAAI,SAAS,GACb,KACF,KAAK,WACHA,EAAI,MAAM,CAACz1B,EAAIO,KAAK,GAAG,CAACojD,GAAO94C,EAAQzH,EAAI7C,KAAK,GAAG,CAACojD,GAAO94C,GAC3D84C,GAAO27C,EACP7pE,EAAI,MAAM,CAACz1B,EAAIO,KAAK,GAAG,CAACojD,GAAO94C,EAAQzH,EAAI7C,KAAK,GAAG,CAACojD,GAAO94C,GAC3D84C,GAAO27C,EACP7pE,EAAI,MAAM,CAACz1B,EAAIO,KAAK,GAAG,CAACojD,GAAO94C,EAAQzH,EAAI7C,KAAK,GAAG,CAACojD,GAAO94C,GAC3D4qB,EAAI,SAAS,GACb,KACF,KAAK,cACHlmB,EAAe1E,AAAS,KAATA,EAEfi8F,EAAUvmG,KAAK,GAAG,CAACojD,EAAM07C,GADzBniF,CAAAA,EAAOrS,EAAS0E,CAAW,EAE3Bw3F,EAAUxmG,KAAK,GAAG,CAACojD,EAAM07C,GAAcniF,EACvCuY,EAAI,GAAG,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,EAASx3F,EAAco0C,EAAMq7C,EAAIr7C,EAAM5e,GAChEtP,EAAI,GAAG,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,EAASv3F,EAAco0C,EAAM5e,EAAS4e,GAC/DluB,EAAI,GAAG,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,EAASx3F,EAAco0C,EAAKA,EAAM5e,GAC3DtP,EAAI,GAAG,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,EAASv3F,EAAco0C,EAAM5e,EAAS4e,EAAMq7C,GACrEvpE,EAAI,SAAS,GACb,KACF,KAAK,OACH,GAAI,CAAC6Q,EAAU,CACbppB,EAAO3c,KAAK,OAAO,CAAGsK,EACtByI,EAAQzN,EAAIA,EAAI,EAAIqX,EACpBuY,EAAI,IAAI,CAACz1B,EAAIsT,EAAOlQ,EAAI8Z,EAAM,EAAI5J,EAAO,EAAI4J,GAC7C,KACF,CACAymC,GAAO07C,CACT,KAAK,UACHyH,EAAUvmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1Bk8F,EAAUxmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1B4qB,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,GAC5BrxE,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,GAC5BrxE,EAAI,SAAS,GACb,KACF,KAAK,WACHkuB,GAAO07C,CACT,KAAK,QACHyH,EAAUvmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1Bk8F,EAAUxmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1B4qB,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,GAC5BrxE,EAAI,MAAM,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,GAC5B,KACF,KAAK,OACHA,EAAUvmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1Bk8F,EAAUxmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1B4qB,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,GAC5BrxE,EAAI,MAAM,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,GAC5BnjD,GAAO07C,EACPyH,EAAUvmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1Bk8F,EAAUxmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1B4qB,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,GAC5BrxE,EAAI,MAAM,CAACz1B,EAAI+mG,EAAS3jG,EAAI0jG,GAC5B,KACF,KAAK,OACHA,EAAUjhG,EAAIA,EAAI,EAAItF,KAAK,GAAG,CAACojD,GAAO94C,EACtCk8F,EAAUxmG,KAAK,GAAG,CAACojD,GAAO94C,EAC1B4qB,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5BtxE,EAAI,MAAM,CAACz1B,EAAI8mG,EAAS1jG,EAAI2jG,GAC5B,KACF,KAAK,OACHtxE,EAAI,MAAM,CAACz1B,EAAGoD,GACdqyB,EAAI,MAAM,CAACz1B,EAAIO,KAAK,GAAG,CAACojD,GAAO94C,EAAQzH,EAAI7C,KAAK,GAAG,CAACojD,GAAO94C,EAE7D,CACA4qB,EAAI,IAAI,GACJ9iB,EAAQ,WAAW,CAAG,GACxB8iB,EAAI,MAAM,GAEd,CACA,SAASuxE,GAAet4F,CAAK,CAAEy0B,CAAI,CAAEqD,CAAM,EAEzC,OADAA,EAASA,GAAU,GACZ,CAACrD,GAASz0B,GAASA,EAAM,CAAC,CAAGy0B,EAAK,IAAI,CAAGqD,GAAU93B,EAAM,CAAC,CAAGy0B,EAAK,KAAK,CAAGqD,GACjF93B,EAAM,CAAC,CAAGy0B,EAAK,GAAG,CAAGqD,GAAU93B,EAAM,CAAC,CAAGy0B,EAAK,MAAM,CAAGqD,CACzD,CACA,SAASygE,GAASxxE,CAAG,CAAE0N,CAAI,EACzB1N,EAAI,IAAI,GACRA,EAAI,SAAS,GACbA,EAAI,IAAI,CAAC0N,EAAK,IAAI,CAAEA,EAAK,GAAG,CAAEA,EAAK,KAAK,CAAGA,EAAK,IAAI,CAAEA,EAAK,MAAM,CAAGA,EAAK,GAAG,EAC5E1N,EAAI,IAAI,EACV,CACA,SAASyxE,GAAWzxE,CAAG,EACrBA,EAAI,OAAO,EACb,CACA,SAAS0xE,GAAe1xE,CAAG,CAAEiT,CAAQ,CAAE/rB,CAAM,CAAEyqF,CAAI,CAAE3mC,CAAI,EACvD,GAAI,CAAC/3B,EACH,OAAOjT,EAAI,MAAM,CAAC9Y,EAAO,CAAC,CAAEA,EAAO,CAAC,EAEtC,GAAI8jD,AAAS,WAATA,EAAmB,CACrB,IAAMx6D,EAAW,AAACyiC,CAAAA,EAAS,CAAC,CAAG/rB,EAAO,CAAC,AAAD,EAAK,EAC3C8Y,EAAI,MAAM,CAACxvB,EAAUyiC,EAAS,CAAC,EAC/BjT,EAAI,MAAM,CAACxvB,EAAU0W,EAAO,CAAC,CAC/B,KAAW8jD,AAAS,UAATA,GAAqB,CAAC,CAAC2mC,EAChC3xE,EAAI,MAAM,CAACiT,EAAS,CAAC,CAAE/rB,EAAO,CAAC,EAE/B8Y,EAAI,MAAM,CAAC9Y,EAAO,CAAC,CAAE+rB,EAAS,CAAC,EAEjCjT,EAAI,MAAM,CAAC9Y,EAAO,CAAC,CAAEA,EAAO,CAAC,CAC/B,CACA,SAAS0qF,GAAe5xE,CAAG,CAAEiT,CAAQ,CAAE/rB,CAAM,CAAEyqF,CAAI,EACjD,GAAI,CAAC1+D,EACH,OAAOjT,EAAI,MAAM,CAAC9Y,EAAO,CAAC,CAAEA,EAAO,CAAC,EAEtC8Y,EAAI,aAAa,CACf2xE,EAAO1+D,EAAS,IAAI,CAAGA,EAAS,IAAI,CACpC0+D,EAAO1+D,EAAS,IAAI,CAAGA,EAAS,IAAI,CACpC0+D,EAAOzqF,EAAO,IAAI,CAAGA,EAAO,IAAI,CAChCyqF,EAAOzqF,EAAO,IAAI,CAAGA,EAAO,IAAI,CAChCA,EAAO,CAAC,CACRA,EAAO,CAAC,CACZ,CACA,SAASiwC,GAAWn3B,CAAG,CAAE5gB,CAAI,CAAE7U,CAAC,CAAEoD,CAAC,CAAE6+B,CAAI,CAAEu8B,EAAO,CAAC,CAAC,MAG9Cn+D,EAAG8O,EAFP,IAAM0J,EAAQokF,EAAQpoF,GAAQA,EAAO,CAACA,EAAK,CACrC3B,EAASsrD,EAAK,WAAW,CAAG,GAAKA,AAAqB,KAArBA,EAAK,WAAW,CAKvD,IAHA/oC,EAAI,IAAI,GACRA,EAAI,IAAI,CAAGwM,EAAK,MAAM,CACtBqlE,AAkBF,SAAuB7xE,CAAG,CAAE+oC,CAAI,EAC1BA,EAAK,WAAW,EAClB/oC,EAAI,SAAS,CAAC+oC,EAAK,WAAW,CAAC,EAAE,CAAEA,EAAK,WAAW,CAAC,EAAE,EAEpD,CAACw+B,EAAcx+B,EAAK,QAAQ,GAC9B/oC,EAAI,MAAM,CAAC+oC,EAAK,QAAQ,EAEtBA,EAAK,KAAK,EACZ/oC,CAAAA,EAAI,SAAS,CAAG+oC,EAAK,KAAK,AAAD,EAEvBA,EAAK,SAAS,EAChB/oC,CAAAA,EAAI,SAAS,CAAG+oC,EAAK,SAAS,AAAD,EAE3BA,EAAK,YAAY,EACnB/oC,CAAAA,EAAI,YAAY,CAAG+oC,EAAK,YAAY,AAAD,CAEvC,EAlCgB/oC,EAAK+oC,GACdn+D,EAAI,EAAGA,EAAIwY,EAAM,MAAM,CAAE,EAAExY,EAC9B8O,EAAO0J,CAAK,CAACxY,EAAE,CACX6S,IACEsrD,EAAK,WAAW,EAClB/oC,CAAAA,EAAI,WAAW,CAAG+oC,EAAK,WAAW,AAAD,EAE/B,CAACw+B,EAAcx+B,EAAK,WAAW,GACjC/oC,CAAAA,EAAI,SAAS,CAAG+oC,EAAK,WAAW,AAAD,EAEjC/oC,EAAI,UAAU,CAACtmB,EAAMnP,EAAGoD,EAAGo7D,EAAK,QAAQ,GAE1C/oC,EAAI,QAAQ,CAACtmB,EAAMnP,EAAGoD,EAAGo7D,EAAK,QAAQ,EACtC+oC,AAsBJ,SAAsB9xE,CAAG,CAAEz1B,CAAC,CAAEoD,CAAC,CAAE+L,CAAI,CAAEqvD,CAAI,EACzC,GAAIA,EAAK,aAAa,EAAIA,EAAK,SAAS,CAAE,CACxC,IAAMgpC,EAAU/xE,EAAI,WAAW,CAACtmB,GAC1BxL,EAAO3D,EAAIwnG,EAAQ,qBAAqB,CACxC3jG,EAAQ7D,EAAIwnG,EAAQ,sBAAsB,CAC1CtkF,EAAM9f,EAAIokG,EAAQ,uBAAuB,CACzCjiG,EAASnC,EAAIokG,EAAQ,wBAAwB,CAC7CC,EAAcjpC,EAAK,aAAa,CAAG,AAACt7C,CAAAA,EAAM3d,CAAK,EAAK,EAAIA,CAC9DkwB,CAAAA,EAAI,WAAW,CAAGA,EAAI,SAAS,CAC/BA,EAAI,SAAS,GACbA,EAAI,SAAS,CAAG+oC,EAAK,eAAe,EAAI,EACxC/oC,EAAI,MAAM,CAAC9xB,EAAM8jG,GACjBhyE,EAAI,MAAM,CAAC5xB,EAAO4jG,GAClBhyE,EAAI,MAAM,EACZ,CACF,EArCiBA,EAAKz1B,EAAGoD,EAAG+L,EAAMqvD,GAC9Bp7D,GAAK6+B,EAAK,UAAU,CAEtBxM,EAAI,OAAO,EACb,CAkCA,SAASiyE,GAAmBjyE,CAAG,CAAEhiB,CAAI,EACnC,GAAM,CAACzT,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAEyC,EAAAA,CAAC,CAAEi/B,EAAAA,CAAC,CAAEj6B,OAAAA,CAAM,CAAC,CAAG4I,EAC7BgiB,EAAI,GAAG,CAACz1B,EAAI6K,EAAO,OAAO,CAAEzH,EAAIyH,EAAO,OAAO,CAAEA,EAAO,OAAO,CAAE,CAACk6B,EAASi6D,EAAI,IAC9EvpE,EAAI,MAAM,CAACz1B,EAAGoD,EAAI0hC,EAAIj6B,EAAO,UAAU,EACvC4qB,EAAI,GAAG,CAACz1B,EAAI6K,EAAO,UAAU,CAAEzH,EAAI0hC,EAAIj6B,EAAO,UAAU,CAAEA,EAAO,UAAU,CAAEm0F,EAAIj6D,EAAS,IAC1FtP,EAAI,MAAM,CAACz1B,EAAI6F,EAAIgF,EAAO,WAAW,CAAEzH,EAAI0hC,GAC3CrP,EAAI,GAAG,CAACz1B,EAAI6F,EAAIgF,EAAO,WAAW,CAAEzH,EAAI0hC,EAAIj6B,EAAO,WAAW,CAAEA,EAAO,WAAW,CAAEk6B,EAAS,EAAG,IAChGtP,EAAI,MAAM,CAACz1B,EAAI6F,EAAGzC,EAAIyH,EAAO,QAAQ,EACrC4qB,EAAI,GAAG,CAACz1B,EAAI6F,EAAIgF,EAAO,QAAQ,CAAEzH,EAAIyH,EAAO,QAAQ,CAAEA,EAAO,QAAQ,CAAE,EAAG,CAACk6B,EAAS,IACpFtP,EAAI,MAAM,CAACz1B,EAAI6K,EAAO,OAAO,CAAEzH,EACjC,CAEA,IAAMukG,GAAc,IAAI1wD,OAAO,wCACzB2wD,GAAa,IAAI3wD,OAAO,yEAC9B,SAAS4wD,GAAa5lG,CAAK,CAAEib,CAAI,EAC/B,IAAMg+B,EAAU,AAAC,IAAKj5C,CAAI,EAAG,KAAK,CAAC0lG,IACnC,GAAI,CAACzsD,GAAWA,AAAe,WAAfA,CAAO,CAAC,EAAE,CACxB,OAAOh+B,AAAO,IAAPA,EAGT,OADAjb,EAAQ,CAACi5C,CAAO,CAAC,EAAE,CACXA,CAAO,CAAC,EAAE,EAClB,IAAK,KACH,OAAOj5C,CACT,KAAK,IACHA,GAAS,GAEX,CACA,OAAOib,EAAOjb,CAChB,CACA,IAAM6lG,GAAehjG,GAAK,CAACA,GAAK,EAChC,SAASijG,GAAkB9lG,CAAK,CAAE0sB,CAAK,EACrC,IAAMg8C,EAAM,CAAC,EACPq9B,EAAW9K,EAASvuE,GACpB9W,EAAOmwF,EAAW/iG,OAAO,IAAI,CAAC0pB,GAASA,EACvCs5E,EAAO/K,EAASj7F,GAClB+lG,EACEvzE,GAAQ4oE,EAAep7F,CAAK,CAACwyB,EAAK,CAAExyB,CAAK,CAAC0sB,CAAK,CAAC8F,EAAK,CAAC,EACtDA,GAAQxyB,CAAK,CAACwyB,EAAK,CACrB,IAAMxyB,EACV,IAAK,IAAMwyB,KAAQ5c,EACjB8yD,CAAG,CAACl2C,EAAK,CAAGqzE,GAAaG,EAAKxzE,IAEhC,OAAOk2C,CACT,CACA,SAASu9B,GAAOjmG,CAAK,EACnB,OAAO8lG,GAAkB9lG,EAAO,CAAC,IAAK,IAAK,MAAO,IAAK,OAAQ,IAAK,KAAM,GAAG,EAC/E,CACA,SAASkmG,GAAclmG,CAAK,EAC1B,OAAO8lG,GAAkB9lG,EAAO,CAAC,UAAW,WAAY,aAAc,cAAc,CACtF,CACA,SAASmmG,GAAUnmG,CAAK,EACtB,IAAMg0B,EAAMiyE,GAAOjmG,GAGnB,OAFAg0B,EAAI,KAAK,CAAGA,EAAI,IAAI,CAAGA,EAAI,KAAK,CAChCA,EAAI,MAAM,CAAGA,EAAI,GAAG,CAAGA,EAAI,MAAM,CAC1BA,CACT,CACA,SAASoyE,GAAO11F,CAAO,CAAEs5D,CAAQ,MA7UXhqC,EA8UpBtvB,EAAUA,GAAW,CAAC,EACtBs5D,EAAWA,GAAY/iC,GAAS,IAAI,CACpC,IAAIhsB,EAAOmgF,EAAe1qF,EAAQ,IAAI,CAAEs5D,EAAS,IAAI,CACjC,WAAhB,OAAO/uD,GACTA,CAAAA,EAAO1N,SAAS0N,EAAM,GAAE,EAE1B,IAAIzE,EAAQ4kF,EAAe1qF,EAAQ,KAAK,CAAEs5D,EAAS,KAAK,EACpDxzD,GAAS,CAAC,AAAC,IAAKA,CAAI,EAAG,KAAK,CAACmvF,MAC/B16E,QAAQ,IAAI,CAAC,kCAAoCzU,EAAQ,KACzDA,EAAQ,IAEV,IAAMwpB,EAAO,CACX,OAAQo7D,EAAe1qF,EAAQ,MAAM,CAAEs5D,EAAS,MAAM,EACtD,WAAY47B,GAAaxK,EAAe1qF,EAAQ,UAAU,CAAEs5D,EAAS,UAAU,EAAG/uD,GAClFA,KAAAA,EACAzE,MAAAA,EACA,OAAQ4kF,EAAe1qF,EAAQ,MAAM,CAAEs5D,EAAS,MAAM,EACtD,OAAQ,EACV,EAEA,OADAhqC,EAAK,MAAM,CAhWX,AAAI,EADgBA,EAiWOA,IAhWd+6D,EAAc/6D,EAAK,IAAI,GAAK+6D,EAAc/6D,EAAK,MAAM,EACzD,KAEF,AAACA,CAAAA,EAAK,KAAK,CAAGA,EAAK,KAAK,CAAG,IAAM,EAAC,EACtCA,CAAAA,EAAK,MAAM,CAAGA,EAAK,MAAM,CAAG,IAAM,EAAC,EACpCA,EAAK,IAAI,CAAG,MACZA,EAAK,MAAM,CA2VNA,CACT,CACA,SAAStL,GAAQoL,CAAM,CAAEv0B,CAAO,CAAEzL,CAAK,CAAEumG,CAAI,EAC3C,IACIjoG,EAAG8hC,EAAMlgC,EADTsmG,EAAY,GAEhB,IAAKloG,EAAI,EAAG8hC,EAAOJ,EAAO,MAAM,CAAE1hC,EAAI8hC,EAAM,EAAE9hC,EAAG,CAE/C,GAAI4B,AAAUjB,KAAAA,IADdiB,CAAAA,EAAQ8/B,CAAM,CAAC1hC,EAAE,AAAD,EAYhB,IARgBW,KAAAA,IAAZwM,GAAyB,AAAiB,YAAjB,OAAOvL,IAClCA,EAAQA,EAAMuL,GACd+6F,EAAY,IAEAvnG,KAAAA,IAAVe,GAAuBk7F,EAAQh7F,KACjCA,EAAQA,CAAK,CAACF,EAAQE,EAAM,MAAM,CAAC,CACnCsmG,EAAY,IAEVtmG,AAAUjB,KAAAA,IAAViB,EAIF,OAHIqmG,GAAQ,CAACC,GACXD,CAAAA,EAAK,SAAS,CAAG,EAAI,EAEhBrmG,CACT,CACF,CACF,CACA,SAASumG,GAAUC,CAAM,CAAE/7B,CAAK,CAAED,CAAW,EAC3C,GAAM,CAACpqC,IAAAA,CAAG,CAAEC,IAAAA,CAAG,CAAC,CAAGmmE,EACbziG,EAASw3F,EAAY9wB,EAAO,AAACpqC,CAAAA,EAAMD,CAAE,EAAK,GAC1CqmE,EAAW,CAACzmG,EAAOye,IAAQ+rD,GAAexqE,AAAU,IAAVA,EAAc,EAAIA,EAAQye,EAC1E,MAAO,CACL,IAAKgoF,EAASrmE,EAAK,CAAC9hC,KAAK,GAAG,CAACyF,IAC7B,IAAK0iG,EAASpmE,EAAKt8B,EACrB,CACF,CACA,SAAS2iG,GAAcC,CAAa,CAAEp7F,CAAO,EAC3C,OAAOvI,OAAO,MAAM,CAACA,OAAO,MAAM,CAAC2jG,GAAgBp7F,EACrD,CAEA,SAASq7F,GAAgB/mC,CAAM,CAAEuB,EAAW,CAAC,GAAG,CAAEylC,EAAahnC,CAAM,CAAEmK,CAAQ,CAAE88B,EAAY,IAAMjnC,CAAM,CAAC,EAAE,EAa1G,MAZI,CAAC88B,EAAQ3yB,IACXA,CAAAA,EAAW+8B,GAAS,YAAalnC,EAAM,EAWlC,IAAIx6B,MATG,CACZ,CAACvkC,OAAO,WAAW,CAAC,CAAE,SACtB,WAAY,GACZ,QAAS++D,EACT,YAAagnC,EACb,UAAW78B,EACX,WAAY88B,EACZ,SAAU,AAAC91B,GAAU41B,GAAgB,CAAC51B,KAAUnR,EAAO,CAAEuB,EAAUylC,EAAY78B,EACjF,EACwB,CACtB,gBAAetvD,EAAQ8X,KACrB,OAAO9X,CAAM,CAAC8X,EAAK,CACnB,OAAO9X,EAAO,KAAK,CACnB,OAAOmlD,CAAM,CAAC,EAAE,CAACrtC,EAAK,CACf,IAET,KAAI9X,EAAQ8X,IACHw0E,GAAQtsF,EAAQ8X,EACrB,IAAMy0E,AAuLd,UAA8Bz0E,CAAI,CAAE4uC,CAAQ,CAAEvB,CAAM,CAAEz6B,CAAK,EACzD,IAAIplC,EACJ,IAAK,IAAMqgB,KAAU+gD,EAEnB,GAAIu7B,EADJ38F,EAAQ+mG,GAASG,GAAQ7mF,EAAQmS,GAAOqtC,IAEtC,OAAOsnC,GAAiB30E,EAAMxyB,GAC1BonG,GAAkBvnC,EAAQz6B,EAAO5S,EAAMxyB,GACvCA,CAGV,GAjMmCwyB,EAAM4uC,EAAUvB,EAAQnlD,IAEvD,0BAAyBA,EAAQ8X,IACxBmmB,QAAQ,wBAAwB,CAACj+B,EAAO,OAAO,CAAC,EAAE,CAAE8X,GAE7D,mBACSmmB,QAAQ,cAAc,CAACknB,CAAM,CAAC,EAAE,EAEzC,KAAInlD,EAAQ8X,IACH60E,GAAqB3sF,GAAQ,QAAQ,CAAC8X,GAE/C,QAAQ9X,GACC2sF,GAAqB3sF,GAE9B,IAAIA,CAAM,CAAE8X,CAAI,CAAExyB,CAAK,EACrB,IAAMsnG,EAAU5sF,EAAO,QAAQ,EAAKA,CAAAA,EAAO,QAAQ,CAAGosF,GAAU,EAGhE,OAFApsF,CAAM,CAAC8X,EAAK,CAAG80E,CAAO,CAAC90E,EAAK,CAAGxyB,EAC/B,OAAO0a,EAAO,KAAK,CACZ,EACT,CACF,EACF,CACA,SAAS6sF,GAAeniE,CAAK,CAAE75B,CAAO,CAAEi8F,CAAQ,CAAEprB,CAAkB,EAWlE,OAAO,IAAI/2C,MAVG,CACZ,WAAY,GACZ,OAAQD,EACR,SAAU75B,EACV,UAAWi8F,EACX,OAAQ,IAAIxsB,IACZ,aAAc+oB,GAAa3+D,EAAOg3C,GAClC,WAAY,AAAC5oD,GAAQ+zE,GAAeniE,EAAO5R,EAAKg0E,EAAUprB,GAC1D,SAAU,AAACpL,GAAUu2B,GAAeniE,EAAM,QAAQ,CAAC4rC,GAAQzlE,EAASi8F,EAAUprB,EAChF,EACwB,CACtB,gBAAe1hE,EAAQ8X,KACrB,OAAO9X,CAAM,CAAC8X,EAAK,CACnB,OAAO4S,CAAK,CAAC5S,EAAK,CACX,IAET,KAAI9X,EAAQ8X,EAAMi1E,IACTT,GAAQtsF,EAAQ8X,EACrB,IAAMk1E,AA4Cd,UAA6BhtF,CAAM,CAAE8X,CAAI,CAAEi1E,CAAQ,EACjD,GAAM,CAACE,OAAAA,CAAM,CAAEC,SAAAA,CAAQ,CAAEC,UAAAA,CAAS,CAAE,aAAcruB,CAAW,CAAC,CAAG9+D,EAC7D1a,EAAQ2nG,CAAM,CAACn1E,EAAK,CAUxB,OATIoqE,EAAW58F,IAAUw5E,EAAY,YAAY,CAAChnD,IAChDxyB,CAAAA,EAAQ8nG,AAUZ,SAA4Bt1E,CAAI,CAAExyB,CAAK,CAAE0a,CAAM,CAAE+sF,CAAQ,EACvD,GAAM,CAACE,OAAAA,CAAM,CAAEC,SAAAA,CAAQ,CAAEC,UAAAA,CAAS,CAAE5wB,OAAAA,CAAM,CAAC,CAAGv8D,EAC9C,GAAIu8D,EAAO,GAAG,CAACzkD,GACb,MAAM,AAAI10B,MAAM,uBAAyBE,MAAM,IAAI,CAACi5E,GAAQ,IAAI,CAAC,MAAQ,KAAOzkD,GAQlF,OANAykD,EAAO,GAAG,CAACzkD,GACXxyB,EAAQA,EAAM4nG,EAAUC,GAAaJ,GACrCxwB,EAAO,MAAM,CAACzkD,GACV20E,GAAiB30E,EAAMxyB,IACzBA,CAAAA,EAAQonG,GAAkBO,EAAO,OAAO,CAAEA,EAAQn1E,EAAMxyB,EAAK,EAExDA,CACT,EAtB+BwyB,EAAMxyB,EAAO0a,EAAQ+sF,EAAQ,EAEtDzM,EAAQh7F,IAAUA,EAAM,MAAM,EAChCA,CAAAA,EAAQ+nG,AAoBZ,SAAuBv1E,CAAI,CAAExyB,CAAK,CAAE0a,CAAM,CAAEqhE,CAAW,EACrD,GAAM,CAAC4rB,OAAAA,CAAM,CAAEC,SAAAA,CAAQ,CAAEC,UAAAA,CAAS,CAAE,aAAcruB,CAAW,CAAC,CAAG9+D,EACjE,GAAIiiF,EAAQiL,EAAS,KAAK,GAAK7rB,EAAYvpD,GACzCxyB,EAAQA,CAAK,CAAC4nG,EAAS,KAAK,CAAG5nG,EAAM,MAAM,CAAC,MACvC,GAAIi7F,EAASj7F,CAAK,CAAC,EAAE,EAAG,CAC7B,IAAM6qC,EAAM7qC,EACN6/D,EAAS8nC,EAAO,OAAO,CAAC,MAAM,CAACpkG,GAAKA,IAAMsnC,GAEhD,IAAK,IAAM4vB,KADXz6D,EAAQ,EAAE,CACS6qC,GAAK,CACtB,IAAM6wC,EAAW0rB,GAAkBvnC,EAAQ8nC,EAAQn1E,EAAMioC,GACzDz6D,EAAM,IAAI,CAACunG,GAAe7rB,EAAUksB,EAAUC,GAAaA,CAAS,CAACr1E,EAAK,CAAEgnD,GAC9E,CACF,CACA,OAAOx5E,CACT,EAlC0BwyB,EAAMxyB,EAAO0a,EAAQ8+D,EAAY,WAAW,GAEhE2tB,GAAiB30E,EAAMxyB,IACzBA,CAAAA,EAAQunG,GAAevnG,EAAO4nG,EAAUC,GAAaA,CAAS,CAACr1E,EAAK,CAAEgnD,EAAW,EAE5Ex5E,CACT,GAzDkC0a,EAAQ8X,EAAMi1E,IAE5C,0BAAyB/sF,EAAQ8X,IACxB9X,EAAO,YAAY,CAAC,OAAO,CAC9Bi+B,QAAQ,GAAG,CAACvT,EAAO5S,GAAQ,CAAC,WAAY,GAAM,aAAc,EAAI,EAAIzzB,KAAAA,EACpE45C,QAAQ,wBAAwB,CAACvT,EAAO5S,GAE9C,mBACSmmB,QAAQ,cAAc,CAACvT,GAEhC,KAAI1qB,EAAQ8X,IACHmmB,QAAQ,GAAG,CAACvT,EAAO5S,GAE5B,YACSmmB,QAAQ,OAAO,CAACvT,GAEzB,KAAI1qB,EAAQ8X,EAAMxyB,KAChBolC,CAAK,CAAC5S,EAAK,CAAGxyB,EACd,OAAO0a,CAAM,CAAC8X,EAAK,CACZ,GAEX,EACF,CACA,SAASuxE,GAAa3+D,CAAK,CAAE6B,EAAW,CAAC,WAAY,GAAM,UAAW,EAAI,CAAC,EACzE,GAAM,CAAC+gE,YAAAA,EAAc/gE,EAAS,UAAU,CAAEghE,WAAAA,EAAahhE,EAAS,SAAS,CAAEihE,SAAAA,EAAWjhE,EAAS,OAAO,CAAC,CAAG7B,EAC1G,MAAO,CACL,QAAS8iE,EACT,WAAYF,EACZ,UAAWC,EACX,aAAcrL,EAAWoL,GAAeA,EAAc,IAAMA,EAC5D,YAAapL,EAAWqL,GAAcA,EAAa,IAAMA,CAC3D,CACF,CACA,IAAMf,GAAU,CAAC7mF,EAAQhL,IAASgL,EAASA,EAASq8E,EAAYrnF,GAAQA,EAClE8xF,GAAmB,CAAC30E,EAAMxyB,IAAUi7F,EAASj7F,IAAUwyB,AAAS,aAATA,GAC1DxvB,CAAAA,AAAiC,OAAjCA,OAAO,cAAc,CAAChD,IAAmBA,EAAM,WAAW,GAAKgD,MAAK,EACvE,SAASgkG,GAAQtsF,CAAM,CAAE8X,CAAI,CAAEkC,CAAO,EACpC,GAAI1xB,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC0X,EAAQ8X,GAC/C,OAAO9X,CAAM,CAAC8X,EAAK,CAErB,IAAMxyB,EAAQ00B,IAEd,OADAha,CAAM,CAAC8X,EAAK,CAAGxyB,EACRA,CACT,CA2CA,SAASmoG,GAAgBn+B,CAAQ,CAAEx3C,CAAI,CAAExyB,CAAK,EAC5C,OAAO48F,EAAW5yB,GAAYA,EAASx3C,EAAMxyB,GAASgqE,CACxD,CACA,IAAMo+B,GAAW,CAACtyF,EAAKtT,IAAWsT,AAAQ,KAARA,EAAetT,EAC7C,AAAe,UAAf,OAAOsT,EAAmBwmF,EAAiB95F,EAAQsT,GAAO/W,KAAAA,EAgB9D,SAASqoG,GAAkBiB,CAAY,CAAE3sB,CAAQ,CAAElpD,CAAI,CAAExyB,CAAK,MApBrCgqE,EAAUx3C,EAAMxyB,EAqBvC,IAAM6mG,EAAanrB,EAAS,WAAW,CACvC,IAAM1R,GAtBiBA,EAsBU0R,EAAS,SAAS,CAtBlBlpD,EAsBoBA,EAtBdxyB,EAsBoBA,EArBpD48F,EAAW5yB,GAAYA,EAASx3C,EAAMxyB,GAASgqE,GAsBhDs+B,EAAY,IAAID,KAAiBxB,EAAW,CAC5CpiD,EAAM,IAAIu2B,IAChBv2B,EAAI,GAAG,CAACzkD,GACR,IAAI8V,EAAMyyF,GAAiB9jD,EAAK6jD,EAAW91E,EAAMw3C,GAAYx3C,EAAMxyB,SACnE,EAAY,OAAR8V,GAGA6mF,EAAQ3yB,IAAaA,IAAax3C,GAEhC1c,AAAQ,OADZA,CAAAA,EAAMyyF,GAAiB9jD,EAAK6jD,EAAWt+B,EAAUl0D,EAAK9V,EAAK,IAKtD4mG,GAAgB5oG,MAAM,IAAI,CAACymD,GAAM,CAAC,GAAG,CAAEoiD,EAAY78B,EACxD,IAAMw+B,AAQV,UAAsB9sB,CAAQ,CAAElpD,CAAI,CAAExyB,CAAK,EACzC,IAAMwC,EAASk5E,EAAS,UAAU,EAC9B,EAAElpD,CAAAA,KAAQhwB,CAAK,GACjBA,CAAAA,CAAM,CAACgwB,EAAK,CAAG,CAAC,GAElB,IAAM9X,EAASlY,CAAM,CAACgwB,EAAK,QAC3B,AAAIwoE,EAAQtgF,IAAWugF,EAASj7F,GACvBA,EAEF0a,CACT,GAlBuBghE,EAAUlpD,EAAMxyB,GACvC,CACA,SAASuoG,GAAiB9jD,CAAG,CAAE6jD,CAAS,CAAExyF,CAAG,CAAEk0D,CAAQ,CAAEvP,CAAI,EAC3D,KAAO3kD,GACLA,EAAM2yF,AApCV,SAAmBhkD,CAAG,CAAE4jD,CAAY,CAAEvyF,CAAG,CAAE4yF,CAAc,CAAE1oG,CAAK,EAC9D,IAAK,IAAMwC,KAAU6lG,EAAc,CACjC,IAAMr3B,EAAQo3B,GAAStyF,EAAKtT,GAC5B,GAAIwuE,EAAO,KARUhH,EAAUx3C,EAAMxyB,EASnCykD,EAAI,GAAG,CAACusB,GACR,IAAMhH,GAVaA,EAUcgH,EAAM,SAAS,CAVnBx+C,EAUqB1c,EAVf9V,EAUoBA,EATpD48F,EAAW5yB,GAAYA,EAASx3C,EAAMxyB,GAASgqE,GAUlD,GAAI2yB,EAAQ3yB,IAAaA,IAAal0D,GAAOk0D,IAAa0+B,EACxD,OAAO1+B,CAEX,MAAO,GAAIgH,AAAU,KAAVA,GAAmB2rB,EAAQ+L,IAAmB5yF,IAAQ4yF,EAC/D,OAAO,IAEX,CACA,MAAO,EACT,EAsBoBjkD,EAAK6jD,EAAWxyF,EAAKk0D,EAAUvP,GAEjD,OAAO3kD,CACT,CAuBA,SAASixF,GAASjxF,CAAG,CAAE+pD,CAAM,EAC3B,IAAK,IAAMmR,KAASnR,EAAQ,CAC1B,GAAI,CAACmR,EACH,SAEF,IAAMhxE,EAAQgxE,CAAK,CAACl7D,EAAI,CACxB,GAAI6mF,EAAQ38F,GACV,OAAOA,CAEX,CACF,CACA,SAASqnG,GAAqB3sF,CAAM,EAClC,IAAI9E,EAAO8E,EAAO,KAAK,CAIvB,MAHI,CAAC9E,GACHA,CAAAA,EAAO8E,EAAO,KAAK,CAAGiuF,AAI1B,SAAkC9oC,CAAM,EACtC,IAAMpb,EAAM,IAAIu2B,IAChB,IAAK,IAAMhK,KAASnR,EAClB,IAAK,IAAM/pD,KAAO9S,OAAO,IAAI,CAACguE,GAAO,MAAM,CAACrwE,GAAK,CAACA,EAAE,UAAU,CAAC,MAC7D8jD,EAAI,GAAG,CAAC3uC,GAGZ,OAAO9X,MAAM,IAAI,CAACymD,EACpB,EAZmD/pC,EAAO,OAAO,GAExD9E,CACT,CAUA,SAASgzF,GAA4B3rC,CAAI,CAAEp+D,CAAI,CAAEsB,CAAK,CAAE3B,CAAK,MAIvDJ,EAAS0B,EAAO26D,EAHpB,GAAM,CAACmD,OAAAA,CAAM,CAAC,CAAGX,EACX,CAACnnD,IAAAA,EAAM,GAAG,CAAC,CAAG,IAAI,CAAC,QAAQ,CAC3B0nD,EAAS,AAAIx/D,MAAMQ,GAEzB,IAAKJ,EAAI,EAAiBA,EAAPI,EAAiB,EAAEJ,EAEpCq8D,EAAO57D,CAAI,CADXiB,EAAQ1B,EAAI+B,EACM,CAClBq9D,CAAM,CAACp/D,EAAE,CAAG,CACV,EAAGw/D,EAAO,KAAK,CAAC0+B,EAAiB7hC,EAAM3kD,GAAMhW,EAC/C,EAEF,OAAO09D,CACT,CAEA,IAAMqrC,GAAUrlE,OAAO,OAAO,EAAI,MAC5BslE,GAAW,CAAC77F,EAAQ7O,IAAMA,EAAI6O,EAAO,MAAM,EAAI,CAACA,CAAM,CAAC7O,EAAE,CAAC,IAAI,EAAI6O,CAAM,CAAC7O,EAAE,CAC3E2qG,GAAe,AAAC7pC,GAAcA,AAAc,MAAdA,EAAoB,IAAM,IAqG9D,SAAS8pC,GAAgBjlE,CAAE,CAAE3D,CAAG,CAAEC,CAAG,EACnC,OAAO/hC,KAAK,GAAG,CAACA,KAAK,GAAG,CAACylC,EAAI1D,GAAMD,EACrC,CAsBA,SAAS6oE,GAA2Bh8F,CAAM,CAAEyD,CAAO,CAAEwwB,CAAI,CAAEo6B,CAAI,CAAE4D,CAAS,EACxE,IAAI9gE,EAAG8hC,EAAMzzB,EAAOy8F,EAIpB,GAHIx4F,EAAQ,QAAQ,EAClBzD,CAAAA,EAASA,EAAO,MAAM,CAAC,AAAC82B,GAAO,CAACA,EAAG,IAAI,GAErCrzB,AAAmC,aAAnCA,EAAQ,sBAAsB,EAChCy4F,AAxDJ,SAA6Bl8F,CAAM,CAAEiyD,EAAY,GAAG,MAK9C9gE,EAAG0P,EAAas7F,EAJpB,IAAMC,EAAYN,GAAa7pC,GACzBoqC,EAAYr8F,EAAO,MAAM,CACzBs8F,EAASvrG,MAAMsrG,GAAW,IAAI,CAAC,GAC/BE,EAAKxrG,MAAMsrG,GAEbv7F,EAAa+6F,GAAS77F,EAAQ,GAClC,IAAK7O,EAAI,EAAGA,EAAIkrG,EAAW,EAAElrG,EAAG,CAI9B,GAHA0P,EAAcs7F,EACdA,EAAer7F,EACfA,EAAa+6F,GAAS77F,EAAQ7O,EAAI,IAC9B,CAACgrG,GAGL,GAAIr7F,EAAY,CACd,IAAM07F,EAAa17F,CAAU,CAACmxD,EAAU,CAAGkqC,CAAY,CAAClqC,EAAU,AAClEqqC,CAAAA,CAAM,CAACnrG,EAAE,CAAGqrG,AAAe,IAAfA,EAAmB,AAAC17F,CAAAA,CAAU,CAACs7F,EAAU,CAAGD,CAAY,CAACC,EAAU,AAAD,EAAKI,EAAa,CAClG,CACAD,CAAE,CAACprG,EAAE,CAAG,AAAC0P,EACL,AAACC,EACD,AAACwvF,EAAKgM,CAAM,CAACnrG,EAAI,EAAE,IAAMm/F,EAAKgM,CAAM,CAACnrG,EAAE,EAAK,EAC5C,AAACmrG,CAAAA,CAAM,CAACnrG,EAAI,EAAE,CAAGmrG,CAAM,CAACnrG,EAAE,AAAD,EAAK,EAFhBmrG,CAAM,CAACnrG,EAAI,EAAE,CADRmrG,CAAM,CAACnrG,EAAE,CAIlC,EACAsrG,AA1EF,SAAwBz8F,CAAM,CAAEs8F,CAAM,CAAEC,CAAE,MAEpCG,EAAQC,EAAOC,EAAMC,EAAkBV,EAD3C,IAAME,EAAYr8F,EAAO,MAAM,CAE3Bc,EAAa+6F,GAAS77F,EAAQ,GAClC,IAAK,IAAI7O,EAAI,EAAGA,EAAIkrG,EAAY,EAAG,EAAElrG,EAAG,CAGtC,GAFAgrG,EAAer7F,EACfA,EAAa+6F,GAAS77F,EAAQ7O,EAAI,GAC9B,CAACgrG,GAAgB,CAACr7F,EACpB,SAEF,GAAI4vF,EAAa4L,CAAM,CAACnrG,EAAE,CAAE,EAAGyqG,IAAU,CACvCW,CAAE,CAACprG,EAAE,CAAGorG,CAAE,CAACprG,EAAI,EAAE,CAAG,EACpB,QACF,CAIA,GAHAurG,EAASH,CAAE,CAACprG,EAAE,CAAGmrG,CAAM,CAACnrG,EAAE,EAGtB0rG,CAAAA,AADJA,CAAAA,EAAmBxrG,KAAK,GAAG,CAACqrG,EAAQ,GAAKrrG,KAAK,GAAG,CADjDsrG,EAAQJ,CAAE,CAACprG,EAAI,EAAE,CAAGmrG,CAAM,CAACnrG,EAAE,CAC4B,EAAC,GAClC,GAGxByrG,EAAO,EAAIvrG,KAAK,IAAI,CAACwrG,GACrBN,CAAE,CAACprG,EAAE,CAAGurG,EAASE,EAAON,CAAM,CAACnrG,EAAE,CACjCorG,CAAE,CAACprG,EAAI,EAAE,CAAGwrG,EAAQC,EAAON,CAAM,CAACnrG,EAAE,AACtC,CACF,EAkDiB6O,EAAQs8F,EAAQC,IAC/BO,AAlDF,SAAyB98F,CAAM,CAAEu8F,CAAE,CAAEtqC,EAAY,GAAG,MAG9Cz3C,EAAO3Z,EAAas7F,EAFxB,IAAMC,EAAYN,GAAa7pC,GACzBoqC,EAAYr8F,EAAO,MAAM,CAE3Bc,EAAa+6F,GAAS77F,EAAQ,GAClC,IAAK,IAAI7O,EAAI,EAAGA,EAAIkrG,EAAW,EAAElrG,EAAG,CAIlC,GAHA0P,EAAcs7F,EACdA,EAAer7F,EACfA,EAAa+6F,GAAS77F,EAAQ7O,EAAI,GAC9B,CAACgrG,EACH,SAEF,IAAMhkC,EAASgkC,CAAY,CAAClqC,EAAU,CAChCmG,EAAS+jC,CAAY,CAACC,EAAU,CAClCv7F,IACF2Z,EAAQ,AAAC29C,CAAAA,EAASt3D,CAAW,CAACoxD,EAAU,AAAD,EAAK,EAC5CkqC,CAAY,CAAC,CAAC,GAAG,EAAElqC,EAAU,CAAC,CAAC,CAAGkG,EAAS39C,EAC3C2hF,CAAY,CAAC,CAAC,GAAG,EAAEC,EAAU,CAAC,CAAC,CAAGhkC,EAAS59C,EAAQ+hF,CAAE,CAACprG,EAAE,EAEtD2P,IACF0Z,EAAQ,AAAC1Z,CAAAA,CAAU,CAACmxD,EAAU,CAAGkG,CAAK,EAAK,EAC3CgkC,CAAY,CAAC,CAAC,GAAG,EAAElqC,EAAU,CAAC,CAAC,CAAGkG,EAAS39C,EAC3C2hF,CAAY,CAAC,CAAC,GAAG,EAAEC,EAAU,CAAC,CAAC,CAAGhkC,EAAS59C,EAAQ+hF,CAAE,CAACprG,EAAE,CAE5D,CACF,EAyBkB6O,EAAQu8F,EAAItqC,EAC9B,EA+BwBjyD,EAAQiyD,OACvB,CACL,IAAI/+B,EAAOm7B,EAAOruD,CAAM,CAACA,EAAO,MAAM,CAAG,EAAE,CAAGA,CAAM,CAAC,EAAE,CACvD,IAAK7O,EAAI,EAAG8hC,EAAOjzB,EAAO,MAAM,CAAE7O,EAAI8hC,EAAM,EAAE9hC,EAE5C8qG,EAAgBc,AAvItB,SAAqBhiC,CAAU,CAAEiiC,CAAW,CAAE97F,CAAU,CAAEhQ,CAAC,EACzD,IAAMsoC,EAAWuhC,EAAW,IAAI,CAAGiiC,EAAcjiC,EAE3CjoE,EAAOoO,EAAW,IAAI,CAAG87F,EAAc97F,EACvC+7F,EAAMlL,EAFIiL,EAE2BxjE,GACrC0jE,EAAMnL,EAAsBj/F,EAHlBkqG,GAIZG,EAAMF,EAAOA,CAAAA,EAAMC,CAAE,EACrBE,EAAMF,EAAOD,CAAAA,EAAMC,CAAE,EACzBC,EAAM9zD,MAAM8zD,GAAO,EAAIA,EACvBC,EAAM/zD,MAAM+zD,GAAO,EAAIA,EACvB,IAAMC,EAAKnsG,EAAIisG,EACTG,EAAKpsG,EAAIksG,EACf,MAAO,CACL,SAAU,CACR,EAAGtpG,AAZSkpG,EAYD,CAAC,CAAGK,EAAMvqG,CAAAA,EAAK,CAAC,CAAG0mC,EAAS,CAAC,AAAD,EACvC,EAAG1lC,AAbSkpG,EAaD,CAAC,CAAGK,EAAMvqG,CAAAA,EAAK,CAAC,CAAG0mC,EAAS,CAAC,AAAD,CACzC,EACA,KAAM,CACJ,EAAG1lC,AAhBSkpG,EAgBD,CAAC,CAAGM,EAAMxqG,CAAAA,EAAK,CAAC,CAAG0mC,EAAS,CAAC,AAAD,EACvC,EAAG1lC,AAjBSkpG,EAiBD,CAAC,CAAGM,EAAMxqG,CAAAA,EAAK,CAAC,CAAG0mC,EAAS,CAAC,AAAD,CACzC,CACF,CACF,EAkHQtG,EAFF1zB,EAAQQ,CAAM,CAAC7O,EAAE,CAIf6O,CAAM,CAAC3O,KAAK,GAAG,CAACF,EAAI,EAAG8hC,EAAQo7B,CAAAA,EAAO,EAAI,IAAMp7B,EAAK,CACrDxvB,EAAQ,OAAO,EAEjBjE,EAAM,IAAI,CAAGy8F,EAAc,QAAQ,CAAC,CAAC,CACrCz8F,EAAM,IAAI,CAAGy8F,EAAc,QAAQ,CAAC,CAAC,CACrCz8F,EAAM,IAAI,CAAGy8F,EAAc,IAAI,CAAC,CAAC,CACjCz8F,EAAM,IAAI,CAAGy8F,EAAc,IAAI,CAAC,CAAC,CACjC/oE,EAAO1zB,CAEX,CACIiE,EAAQ,eAAe,GACzB85F,AA9CJ,SAAyBv9F,CAAM,CAAEi0B,CAAI,MAC/B9iC,EAAG8hC,EAAMzzB,EAAOg+F,EAAQC,EAC5B,IAAIC,EAAa5F,GAAe93F,CAAM,CAAC,EAAE,CAAEi0B,GAC3C,IAAK9iC,EAAI,EAAG8hC,EAAOjzB,EAAO,MAAM,CAAE7O,EAAI8hC,EAAM,EAAE9hC,EAAG,CAI/C,GAHAssG,EAAaD,EACbA,EAASE,EACTA,EAAavsG,EAAI8hC,EAAO,GAAK6kE,GAAe93F,CAAM,CAAC7O,EAAI,EAAE,CAAE8iC,IACvD,CAACupE,EAGLh+F,EAAQQ,CAAM,CAAC7O,EAAE,CACbssG,IACFj+F,EAAM,IAAI,CAAGu8F,GAAgBv8F,EAAM,IAAI,CAAEy0B,EAAK,IAAI,CAAEA,EAAK,KAAK,EAC9Dz0B,EAAM,IAAI,CAAGu8F,GAAgBv8F,EAAM,IAAI,CAAEy0B,EAAK,GAAG,CAAEA,EAAK,MAAM,GAE5DypE,IACFl+F,EAAM,IAAI,CAAGu8F,GAAgBv8F,EAAM,IAAI,CAAEy0B,EAAK,IAAI,CAAEA,EAAK,KAAK,EAC9Dz0B,EAAM,IAAI,CAAGu8F,GAAgBv8F,EAAM,IAAI,CAAEy0B,EAAK,GAAG,CAAEA,EAAK,MAAM,EAElE,CACF,EA0BoBj0B,EAAQi0B,EAE5B,CAEA,SAAS0pE,KACP,MAAO,AAAkB,aAAlB,OAAOjrE,QAA0B,AAAoB,aAApB,OAAO3oB,QACjD,CACA,SAAS6zF,GAAeC,CAAO,EAC7B,IAAItoG,EAASsoG,EAAQ,UAAU,CAI/B,OAHItoG,GAAUA,AAAsB,wBAAtBA,EAAO,QAAQ,IAC3BA,CAAAA,EAASA,EAAO,IAAI,AAAD,EAEdA,CACT,CACA,SAASuoG,GAAcC,CAAU,CAAEvsG,CAAI,CAAEwsG,CAAc,EACrD,IAAIC,EASJ,MARI,AAAsB,UAAtB,OAAOF,GACTE,EAAgB39F,SAASy9F,EAAY,IACL,KAA5BA,EAAW,OAAO,CAAC,MACrBE,CAAAA,EAAgBA,EAAgB,IAAMzsG,EAAK,UAAU,CAACwsG,EAAe,AAAD,GAGtEC,EAAgBF,EAEXE,CACT,CACA,IAAMC,GAAmB,AAAC1/F,GAAYk0B,OAAO,gBAAgB,CAACl0B,EAAS,MAIjE2pE,GAAY,CAAC,MAAO,QAAS,SAAU,OAAO,CACpD,SAASg2B,GAAmBt7F,CAAM,CAAE0G,CAAK,CAAE60F,CAAM,EAC/C,IAAM5gF,EAAS,CAAC,EAChB4gF,EAASA,EAAS,IAAMA,EAAS,GACjC,IAAK,IAAIjtG,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAMi3E,EAAMD,EAAS,CAACh3E,EAAE,AACxBqsB,CAAAA,CAAM,CAAC4qD,EAAI,CAAGtoD,WAAWjd,CAAM,CAAC0G,EAAQ,IAAM6+D,EAAMg2B,EAAO,GAAK,CAClE,CAGA,OAFA5gF,EAAO,KAAK,CAAGA,EAAO,IAAI,CAAGA,EAAO,KAAK,CACzCA,EAAO,MAAM,CAAGA,EAAO,GAAG,CAAGA,EAAO,MAAM,CACnCA,CACT,CACA,IAAM6gF,GAAe,CAACvtG,EAAGoD,EAAGuZ,IAAW,AAAC3c,CAAAA,EAAI,GAAKoD,EAAI,IAAO,EAACuZ,GAAU,CAACA,EAAO,UAAU,AAAD,EAkBxF,SAAS6wF,GAAoBjgG,CAAG,CAAEk3B,CAAK,EACrC,GAAI,WAAYl3B,EACd,OAAOA,EAET,GAAM,CAAC0E,OAAAA,CAAM,CAAEw7F,wBAAAA,CAAuB,CAAC,CAAGhpE,EACpChsB,EAAQ20F,GAAiBn7F,GACzBy7F,EAAYj1F,AAAoB,eAApBA,EAAM,SAAS,CAC3Bk1F,EAAWN,GAAmB50F,EAAO,WACrCm1F,EAAUP,GAAmB50F,EAAO,SAAU,SAC9C,CAACzY,EAAAA,CAAC,CAAEoD,EAAAA,CAAC,CAAE4R,IAAAA,CAAG,CAAC,CAAG64F,AA1BtB,SAA2BxlG,CAAC,CAAE4J,CAAM,MAK9BjS,EAAGoD,EAJP,IAAM0qG,EAAUzlG,EAAE,OAAO,CACnBkP,EAASu2F,GAAWA,EAAQ,MAAM,CAAGA,CAAO,CAAC,EAAE,CAAGzlG,EAClD,CAACm5C,QAAAA,CAAO,CAAEC,QAAAA,CAAO,CAAC,CAAGlqC,EACvBvC,EAAM,GAEV,GAAIu4F,GAAa/rD,EAASC,EAASp5C,EAAE,MAAM,EACzCrI,EAAIwhD,EACJp+C,EAAIq+C,MACC,CACL,IAAMhuC,EAAOxB,EAAO,qBAAqB,GACzCjS,EAAIuX,EAAO,OAAO,CAAG9D,EAAK,IAAI,CAC9BrQ,EAAImU,EAAO,OAAO,CAAG9D,EAAK,GAAG,CAC7BuB,EAAM,EACR,CACA,MAAO,CAAChV,EAAAA,EAAGoD,EAAAA,EAAG4R,IAAAA,CAAG,CACnB,EAUwCzH,EAAK0E,GACrC60F,EAAU6G,EAAS,IAAI,CAAI34F,CAAAA,GAAO44F,EAAQ,IAAI,AAAD,EAC7C7G,EAAU4G,EAAS,GAAG,CAAI34F,CAAAA,GAAO44F,EAAQ,GAAG,AAAD,EAC7C,CAACt6F,MAAAA,CAAK,CAAE1R,OAAAA,CAAM,CAAC,CAAG6iC,EAKtB,OAJIipE,IACFp6F,GAASq6F,EAAS,KAAK,CAAGC,EAAQ,KAAK,CACvChsG,GAAU+rG,EAAS,MAAM,CAAGC,EAAQ,MAAM,EAErC,CACL,EAAGrtG,KAAK,KAAK,CAAC,AAACP,CAAAA,EAAI8mG,CAAM,EAAKxzF,EAAQrB,EAAO,KAAK,CAAGw7F,GACrD,EAAGltG,KAAK,KAAK,CAAC,AAAC6C,CAAAA,EAAI2jG,CAAM,EAAKnlG,EAASqQ,EAAO,MAAM,CAAGw7F,EACzD,CACF,CA0BA,IAAMM,GAASjpG,GAAKvE,KAAK,KAAK,CAACuE,AAAI,GAAJA,GAAU,GACzC,SAASkpG,GAAe/7F,CAAM,CAAEg8F,CAAO,CAAEC,CAAQ,CAAE7uD,CAAW,EAC5D,IAAM5mC,EAAQ20F,GAAiBn7F,GACzBu6D,EAAU6gC,GAAmB50F,EAAO,UACpCM,EAAWi0F,GAAcv0F,EAAM,QAAQ,CAAExG,EAAQ,gBAAkBktF,EACnE5yB,EAAYygC,GAAcv0F,EAAM,SAAS,CAAExG,EAAQ,iBAAmBktF,EACtEgP,EAAgBC,AA/BxB,SAA0Bn8F,CAAM,CAAEqB,CAAK,CAAE1R,CAAM,EAC7C,IAAImX,EAAUwzD,EACd,GAAIj5D,AAAUtS,KAAAA,IAAVsS,GAAuB1R,AAAWZ,KAAAA,IAAXY,EAAsB,CAC/C,IAAMyf,EAAYyrF,GAAe76F,GACjC,GAAKoP,EAGE,CACL,IAAM5N,EAAO4N,EAAU,qBAAqB,GACtCgtF,EAAiBjB,GAAiB/rF,GAClCitF,EAAkBjB,GAAmBgB,EAAgB,SAAU,SAC/DE,EAAmBlB,GAAmBgB,EAAgB,WAC5D/6F,EAAQG,EAAK,KAAK,CAAG86F,EAAiB,KAAK,CAAGD,EAAgB,KAAK,CACnE1sG,EAAS6R,EAAK,MAAM,CAAG86F,EAAiB,MAAM,CAAGD,EAAgB,MAAM,CACvEv1F,EAAWi0F,GAAcqB,EAAe,QAAQ,CAAEhtF,EAAW,eAC7DkrD,EAAYygC,GAAcqB,EAAe,SAAS,CAAEhtF,EAAW,eACjE,MAXE/N,EAAQrB,EAAO,WAAW,CAC1BrQ,EAASqQ,EAAO,YAAY,AAWhC,CACA,MAAO,CACLqB,MAAAA,EACA1R,OAAAA,EACA,SAAUmX,GAAYomF,EACtB,UAAW5yB,GAAa4yB,CAC1B,CACF,EAOyCltF,EAAQg8F,EAASC,GACpD,CAAC56F,MAAAA,CAAK,CAAE1R,OAAAA,CAAM,CAAC,CAAGusG,EACtB,GAAI11F,AAAoB,gBAApBA,EAAM,SAAS,CAAoB,CACrC,IAAMm1F,EAAUP,GAAmB50F,EAAO,SAAU,SAC9Ck1F,EAAWN,GAAmB50F,EAAO,WAC3CnF,GAASq6F,EAAS,KAAK,CAAGC,EAAQ,KAAK,CACvChsG,GAAU+rG,EAAS,MAAM,CAAGC,EAAQ,MAAM,AAC5C,CAQA,OAPAt6F,EAAQ/S,KAAK,GAAG,CAAC,EAAG+S,EAAQk5D,EAAQ,KAAK,EACzC5qE,EAASrB,KAAK,GAAG,CAAC,EAAG8+C,EAAc9+C,KAAK,KAAK,CAAC+S,EAAQ+rC,GAAez9C,EAAS4qE,EAAQ,MAAM,EAC5Fl5D,EAAQy6F,GAAOxtG,KAAK,GAAG,CAAC+S,EAAOyF,EAAUo1F,EAAc,QAAQ,GAC/DvsG,EAASmsG,GAAOxtG,KAAK,GAAG,CAACqB,EAAQ2qE,EAAW4hC,EAAc,SAAS,GAC/D76F,GAAS,CAAC1R,GACZA,CAAAA,EAASmsG,GAAOz6F,EAAQ,EAAC,EAEpB,CACLA,MAAAA,EACA1R,OAAAA,CACF,CACF,CACA,SAAS4sG,GAAY/pE,CAAK,CAAEgqE,CAAU,CAAEC,CAAU,EAChD,IAAMC,EAAaF,GAAc,EAC3BG,EAAeruG,KAAK,KAAK,CAACkkC,EAAM,MAAM,CAAGkqE,GACzCE,EAActuG,KAAK,KAAK,CAACkkC,EAAM,KAAK,CAAGkqE,EAC7ClqE,CAAAA,EAAM,MAAM,CAAGmqE,EAAeD,EAC9BlqE,EAAM,KAAK,CAAGoqE,EAAcF,EAC5B,IAAM18F,EAASwyB,EAAM,MAAM,QAK3B,AAJIxyB,EAAO,KAAK,EAAKy8F,CAAAA,GAAe,CAACz8F,EAAO,KAAK,CAAC,MAAM,EAAI,CAACA,EAAO,KAAK,CAAC,KAAK,IAC7EA,EAAO,KAAK,CAAC,MAAM,CAAG,CAAC,EAAEwyB,EAAM,MAAM,CAAC,EAAE,CAAC,CACzCxyB,EAAO,KAAK,CAAC,KAAK,CAAG,CAAC,EAAEwyB,EAAM,KAAK,CAAC,EAAE,CAAC,EAErCA,CAAAA,EAAM,uBAAuB,GAAKkqE,GAC/B18F,EAAO,MAAM,GAAK28F,GAClB38F,EAAO,KAAK,GAAK48F,CAAU,IAChCpqE,EAAM,uBAAuB,CAAGkqE,EAChC18F,EAAO,MAAM,CAAG28F,EAChB38F,EAAO,KAAK,CAAG48F,EACfpqE,EAAM,GAAG,CAAC,YAAY,CAACkqE,EAAY,EAAG,EAAGA,EAAY,EAAG,GACjD,GAGX,CACA,IAAMG,GAAgC,WACpC,IAAIC,EAAmB,GACvB,GAAI,CACF,IAAMp8F,EAAU,CACd,IAAI,SAAU,CAEZ,OADAo8F,EAAmB,GACZ,EACT,CACF,EACAntE,OAAO,gBAAgB,CAAC,OAAQ,KAAMjvB,GACtCivB,OAAO,mBAAmB,CAAC,OAAQ,KAAMjvB,EAC3C,CAAE,MAAOtK,EAAG,CACZ,CACA,OAAO0mG,CACT,IACA,SAASC,GAAathG,CAAO,CAAEsO,CAAQ,MA/IrBmI,EAAInI,EAgJpB,IAAM/Z,GAhJUkiB,EAgJOzW,EAhJHsO,EAgJYA,EA/IzBoxF,GAAiBjpF,GAAI,gBAAgB,CAACnI,IAgJvCk/B,EAAUj5C,GAASA,EAAM,KAAK,CAAC,qBACrC,OAAOi5C,EAAU,CAACA,CAAO,CAAC,EAAE,CAAGl6C,KAAAA,CACjC,CAEA,SAASiuG,GAAav/F,CAAE,CAAEC,CAAE,CAAEvP,CAAC,CAAEqgE,CAAI,EACnC,MAAO,CACL,EAAG/wD,EAAG,CAAC,CAAGtP,EAAKuP,CAAAA,EAAG,CAAC,CAAGD,EAAG,CAAC,AAAD,EACzB,EAAGA,EAAG,CAAC,CAAGtP,EAAKuP,CAAAA,EAAG,CAAC,CAAGD,EAAG,CAAC,AAAD,CAC3B,CACF,CACA,SAASw/F,GAAsBx/F,CAAE,CAAEC,CAAE,CAAEvP,CAAC,CAAEqgE,CAAI,EAC5C,MAAO,CACL,EAAG/wD,EAAG,CAAC,CAAGtP,EAAKuP,CAAAA,EAAG,CAAC,CAAGD,EAAG,CAAC,AAAD,EACzB,EAAG+wD,AAAS,WAATA,EAAoBrgE,EAAI,GAAMsP,EAAG,CAAC,CAAGC,EAAG,CAAC,CAC1C8wD,AAAS,UAATA,EAAmBrgE,EAAI,EAAIsP,EAAG,CAAC,CAAGC,EAAG,CAAC,CACtCvP,EAAI,EAAIuP,EAAG,CAAC,CAAGD,EAAG,CAAC,AACvB,CACF,CACA,SAASy/F,GAAqBz/F,CAAE,CAAEC,CAAE,CAAEvP,CAAC,CAAEqgE,CAAI,EAC3C,IAAM2uC,EAAM,CAAC,EAAG1/F,EAAG,IAAI,CAAE,EAAGA,EAAG,IAAI,EAC7B2/F,EAAM,CAAC,EAAG1/F,EAAG,IAAI,CAAE,EAAGA,EAAG,IAAI,EAC7BpN,EAAI0sG,GAAav/F,EAAI0/F,EAAKhvG,GAC1BoC,EAAIysG,GAAaG,EAAKC,EAAKjvG,GAC3BuC,EAAIssG,GAAaI,EAAK1/F,EAAIvP,GAC1BsB,EAAIutG,GAAa1sG,EAAGC,EAAGpC,GACvBiI,EAAI4mG,GAAazsG,EAAGG,EAAGvC,GAC7B,OAAO6uG,GAAavtG,EAAG2G,EAAGjI,EAC5B,CAEA,IAAMkvG,GAAY,IAAIvuG,IAWtB,SAASwuG,GAAa9zD,CAAG,CAAEuvB,CAAM,CAAEr4D,CAAO,EACxC,MAAO68F,AAXT,UAAyBxkC,CAAM,CAAEr4D,CAAO,EAEtC,IAAMwwD,EAAW6H,EAASykC,KAAK,SAAS,CADxC98F,EAAUA,GAAW,CAAC,GAElBkpF,EAAYyT,GAAU,GAAG,CAACnsC,GAK9B,MAJI,CAAC04B,IACHA,EAAY,IAAI6T,KAAK,YAAY,CAAC1kC,EAAQr4D,GAC1C28F,GAAU,GAAG,CAACnsC,EAAU04B,IAEnBA,CACT,GAEyB7wB,EAAQr4D,GAAS,MAAM,CAAC8oC,EACjD,CA0CA,SAASk0D,GAAcrjB,CAAG,CAAEsjB,CAAK,CAAEt8F,CAAK,MAxCDs8F,EAAOt8F,EAyC5C,OAAOg5E,GAzC8BsjB,EAyCFA,EAzCSt8F,EAyCFA,EAxCnC,CACL,EAAEtT,GACO4vG,EAAQA,EAAQt8F,EAAQtT,EAEjC,SAAS6F,CAAC,EACRyN,EAAQzN,CACV,EACA,UAAUkP,GACR,AAAIA,AAAU,WAAVA,EACKA,EAEFA,AAAU,UAAVA,EAAoB,OAAS,QAEtC,OAAM/U,EAAGiC,IACAjC,EAAIiC,EAEb,YAAWjC,EAAG+rF,IACL/rF,EAAI+rF,CAEf,GAGO,CACL,EAAE/rF,GACOA,EAET,SAAS6F,CAAC,EACV,EACA,UAAUkP,GACDA,EAET,OAAM/U,EAAGiC,IACAjC,EAAIiC,EAEb,YAAWjC,EAAG6vG,IACL7vG,CAEX,CAIF,CACA,SAAS8vG,GAAsBr6E,CAAG,CAAEs6E,CAAS,EAC3C,IAAIt3F,EAAOu3F,EACPD,CAAAA,AAAc,QAAdA,GAAuBA,AAAc,QAAdA,CAAkB,IAE3CC,EAAW,CACTv3F,AAFFA,CAAAA,EAAQgd,EAAI,MAAM,CAAC,KAAK,AAAD,EAEf,gBAAgB,CAAC,aACvBhd,EAAM,mBAAmB,CAAC,aAC3B,CACDA,EAAM,WAAW,CAAC,YAAas3F,EAAW,aAC1Ct6E,EAAI,iBAAiB,CAAGu6E,EAE5B,CACA,SAASC,GAAqBx6E,CAAG,CAAEu6E,CAAQ,EACxBhvG,KAAAA,IAAbgvG,IACF,OAAOv6E,EAAI,iBAAiB,CAC5BA,EAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,YAAau6E,CAAQ,CAAC,EAAE,CAAEA,CAAQ,CAAC,EAAE,EAEtE,CAEA,SAASE,GAAWl0F,CAAQ,QAC1B,AAAIA,AAAa,UAAbA,EACK,CACL,QAASolF,GACT,QAASF,EACT,UAAWC,CACb,EAEK,CACL,QAASS,GACT,QAAS,CAACr/F,EAAGC,IAAMD,EAAIC,EACvB,UAAWxC,GAAKA,CAClB,CACF,CACA,SAASmwG,GAAiB,CAAC/tG,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAE1B,MAAAA,CAAK,CAAE88D,KAAAA,CAAI,CAAE9kD,MAAAA,CAAK,CAAC,EACxD,MAAO,CACL,MAAOrW,EAAQ3B,EACf,IAAK0B,EAAM1B,EACX,KAAM88D,GAAQ,AAACp7D,CAAAA,EAAMC,EAAQ,GAAK3B,GAAU,EAC5CgY,MAAAA,CACF,CACF,CAyBA,SAAS23F,GAAcntE,CAAO,CAAE/zB,CAAM,CAAEiC,CAAM,MAWxClP,EAAOyM,EAAO2hG,EAVlB,GAAI,CAACl/F,EACH,MAAO,CAAC8xB,EAAQ,CAElB,GAAM,CAACjnB,SAAAA,CAAQ,CAAE,MAAOs0F,CAAU,CAAE,IAAKC,CAAQ,CAAC,CAAGp/F,EAC/C1Q,EAAQyO,EAAO,MAAM,CACrB,CAAChN,QAAAA,CAAO,CAAEsuG,QAAAA,CAAO,CAAEC,UAAAA,CAAS,CAAC,CAAGP,GAAWl0F,GAC3C,CAAC5Z,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAEo7D,KAAAA,CAAI,CAAE9kD,MAAAA,CAAK,CAAC,CAAGi4F,AA/BpC,SAAoBztE,CAAO,CAAE/zB,CAAM,CAAEiC,CAAM,MAKrC9Q,EAJJ,GAAM,CAAC2b,SAAAA,CAAQ,CAAE,MAAOs0F,CAAU,CAAE,IAAKC,CAAQ,CAAC,CAAGp/F,EAC/C,CAACq/F,QAAAA,CAAO,CAAEC,UAAAA,CAAS,CAAC,CAAGP,GAAWl0F,GAClCvb,EAAQyO,EAAO,MAAM,CACvB,CAAC9M,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAEo7D,KAAAA,CAAI,CAAC,CAAGt6B,EAEzB,GAAIs6B,EAAM,CAGR,IAFAn7D,GAAS3B,EACT0B,GAAO1B,EACFJ,EAAI,EACP,AADwBA,EAAPI,GACZ+vG,EAAQC,EAAUvhG,CAAM,CAAC9M,EAAQ3B,EAAM,CAACub,EAAS,EAAGs0F,EAAYC,GADnC,EAAElwG,EAAG,EAIvC+B,IACAD,GACF,CACAC,GAAS3B,EACT0B,GAAO1B,CACT,CAIA,OAHI0B,EAAMC,GACRD,CAAAA,GAAO1B,CAAI,EAEN,CAAC2B,MAAAA,EAAOD,IAAAA,EAAKo7D,KAAAA,EAAM,MAAOt6B,EAAQ,KAAK,CAChD,EAQ+CA,EAAS/zB,EAAQiC,GACxDub,EAAS,EAAE,CACbikF,EAAS,GACTC,EAAW,KAETC,EAAgB,IAAML,EAAQF,EAAYD,EAAWpuG,IAAUC,AAAmC,IAAnCA,EAAQouG,EAAYD,GACnFS,EAAc,IAAM5uG,AAA6B,IAA7BA,EAAQquG,EAAUtuG,IAAgBuuG,EAAQD,EAAUF,EAAWpuG,GACnF8uG,EAAc,IAAMJ,GAAUE,IAC9BG,EAAa,IAAM,CAACL,GAAUG,IACpC,IAAK,IAAIzwG,EAAI+B,EAAOggC,EAAOhgC,EAAO/B,GAAK8B,EAAK,EAAE9B,EAAG,CAE/C,IAAIqO,AADJA,CAAAA,EAAQQ,CAAM,CAAC7O,EAAII,EAAM,AAAD,EACd,IAAI,EAIVwB,AADJA,CAAAA,EAAQwuG,EAAU/hG,CAAK,CAACsN,EAAS,KACnBq0F,EAGdM,EAASH,EAAQvuG,EAAOquG,EAAYC,GACnB,OAAbK,GAAqBG,KACvBH,CAAAA,EAAW1uG,AAA+B,IAA/BA,EAAQD,EAAOquG,GAAoBjwG,EAAI+hC,CAAG,EAEtC,OAAbwuE,GAAqBI,MACvBtkF,EAAO,IAAI,CAACyjF,GAAiB,CAAC,MAAOS,EAAU,IAAKvwG,EAAGk9D,KAAAA,EAAM98D,MAAAA,EAAOgY,MAAAA,CAAK,IACzEm4F,EAAW,MAEbxuE,EAAO/hC,EACPgwG,EAAYpuG,CACd,CAIA,OAHiB,OAAb2uG,GACFlkF,EAAO,IAAI,CAACyjF,GAAiB,CAAC,MAAOS,EAAUzuG,IAAAA,EAAKo7D,KAAAA,EAAM98D,MAAAA,EAAOgY,MAAAA,CAAK,IAEjEiU,CACT,CACA,SAASukF,GAAe9hG,CAAI,CAAEgC,CAAM,EAClC,IAAMub,EAAS,EAAE,CACX+5D,EAAWt3E,EAAK,QAAQ,CAC9B,IAAK,IAAI9O,EAAI,EAAGA,EAAIomF,EAAS,MAAM,CAAEpmF,IAAK,CACxC,IAAM6wG,EAAMd,GAAc3pB,CAAQ,CAACpmF,EAAE,CAAE8O,EAAK,MAAM,CAAEgC,EAChD+/F,CAAAA,EAAI,MAAM,EACZxkF,EAAO,IAAI,IAAIwkF,EAEnB,CACA,OAAOxkF,CACT,CAiDA,SAASykF,GAAiBhiG,CAAI,CAAEiiG,CAAc,EAC5C,IAAMliG,EAASC,EAAK,MAAM,CACpBw6D,EAAWx6D,EAAK,OAAO,CAAC,QAAQ,CAChC1O,EAAQyO,EAAO,MAAM,CAC3B,GAAI,CAACzO,EACH,MAAO,EAAE,CAEX,IAAM88D,EAAO,CAAC,CAACpuD,EAAK,KAAK,CACnB,CAAC/M,MAAAA,CAAK,CAAED,IAAAA,CAAG,CAAC,CAAGkvG,AAxDvB,SAAyBniG,CAAM,CAAEzO,CAAK,CAAE88D,CAAI,CAAEoM,CAAQ,EACpD,IAAIvnE,EAAQ,EACRD,EAAM1B,EAAQ,EAClB,GAAI88D,GAAQ,CAACoM,EACX,KAAOvnE,EAAQ3B,GAAS,CAACyO,CAAM,CAAC9M,EAAM,CAAC,IAAI,EACzCA,IAGJ,KAAOA,EAAQ3B,GAASyO,CAAM,CAAC9M,EAAM,CAAC,IAAI,EACxCA,IAMF,IAJAA,GAAS3B,EACL88D,GACFp7D,CAAAA,GAAOC,CAAI,EAEND,EAAMC,GAAS8M,CAAM,CAAC/M,EAAM1B,EAAM,CAAC,IAAI,EAC5C0B,IAGF,MAAO,CAACC,MAAAA,EAAOD,IADfA,GAAO1B,CACW,CACpB,EAoCuCyO,EAAQzO,EAAO88D,EAAMoM,GAC1D,GAAIA,AAAa,KAAbA,EACF,OAAO2nC,GAAcniG,EAAM,CAAC,CAAC/M,MAAAA,EAAOD,IAAAA,EAAKo7D,KAAAA,CAAI,EAAE,CAAEruD,EAAQkiG,GAE3D,IAAM9uE,EAAMngC,EAAMC,EAAQD,EAAM1B,EAAQ0B,EAClCovG,EAAe,CAAC,CAACpiG,EAAK,SAAS,EAAI/M,AAAU,IAAVA,GAAeD,IAAQ1B,EAAQ,EACxE,OAAO6wG,GAAcniG,EAAMqiG,AAzC7B,SAAuBtiG,CAAM,CAAE9M,CAAK,CAAEkgC,CAAG,CAAEi7B,CAAI,MAKzCp7D,EAJJ,IAAM1B,EAAQyO,EAAO,MAAM,CACrBwd,EAAS,EAAE,CACbxS,EAAO9X,EACPggC,EAAOlzB,CAAM,CAAC9M,EAAM,CAExB,IAAKD,EAAMC,EAAQ,EAAGD,GAAOmgC,EAAK,EAAEngC,EAAK,CACvC,IAAMyyD,EAAM1lD,CAAM,CAAC/M,EAAM1B,EAAM,AAC3Bm0D,CAAAA,EAAI,IAAI,EAAIA,EAAI,IAAI,CAClB,CAACxyB,EAAK,IAAI,GACZm7B,EAAO,GACP7wC,EAAO,IAAI,CAAC,CAAC,MAAOtqB,EAAQ3B,EAAO,IAAK,AAAC0B,CAAAA,EAAM,GAAK1B,EAAO88D,KAAAA,CAAI,GAC/Dn7D,EAAQ8X,EAAO06C,EAAI,IAAI,CAAGzyD,EAAM,OAGlC+X,EAAO/X,EACHigC,EAAK,IAAI,EACXhgC,CAAAA,EAAQD,CAAE,GAGdigC,EAAOwyB,CACT,CAIA,OAHa,OAAT16C,GACFwS,EAAO,IAAI,CAAC,CAAC,MAAOtqB,EAAQ3B,EAAO,IAAKyZ,EAAOzZ,EAAO88D,KAAAA,CAAI,GAErD7wC,CACT,EAe2Cxd,EAAQ9M,EAAOkgC,EAAKivE,GAAeriG,EAAQkiG,EACtF,CACA,SAASE,GAAcniG,CAAI,CAAEs3E,CAAQ,CAAEv3E,CAAM,CAAEkiG,CAAc,SAC3D,AAAI,AAACA,GAAmBA,EAAe,UAAU,EAAKliG,EAG/CuiG,AAET,SAAyBtiG,CAAI,CAAEs3E,CAAQ,CAAEv3E,CAAM,CAAEkiG,CAAc,EAC7D,IAAMM,EAAeviG,EAAK,MAAM,CAAC,UAAU,GACrCwiG,EAAYC,GAAUziG,EAAK,OAAO,EAClC,CAAC,cAAeq5B,CAAY,CAAE,QAAS,CAACmhC,SAAAA,CAAQ,CAAC,CAAC,CAAGx6D,EACrD1O,EAAQyO,EAAO,MAAM,CACrBwd,EAAS,EAAE,CACbmlF,EAAYF,EACZvvG,EAAQqkF,CAAQ,CAAC,EAAE,CAAC,KAAK,CACzBpmF,EAAI+B,EACR,SAAS0vG,EAAStsG,CAAC,CAAE6C,CAAC,CAAEkB,CAAC,CAAEwoG,CAAE,EAC3B,IAAMpmD,EAAMge,EAAW,GAAK,EAC5B,GAAInkE,IAAM6C,GAIV,IADA7C,GAAK/E,EACEyO,CAAM,CAAC1J,EAAI/E,EAAM,CAAC,IAAI,EAC3B+E,GAAKmmD,EAEP,KAAOz8C,CAAM,CAAC7G,EAAI5H,EAAM,CAAC,IAAI,EAC3B4H,GAAKsjD,EAEHnmD,EAAI/E,GAAU4H,EAAI5H,IACpBisB,EAAO,IAAI,CAAC,CAAC,MAAOlnB,EAAI/E,EAAO,IAAK4H,EAAI5H,EAAO,KAAM8I,EAAG,MAAOwoG,CAAE,GACjEF,EAAYE,EACZ3vG,EAAQiG,EAAI5H,GAEhB,CACA,IAAK,IAAMwiC,KAAWwjD,EAAU,KAG1BhuE,EADJ,IAAI2pB,EAAOlzB,CAAM,CAAC9M,AADlBA,CAAAA,EAAQunE,EAAWvnE,EAAQ6gC,EAAQ,KAAK,AAAD,EACbxiC,EAAM,CAEhC,IAAKJ,EAAI+B,EAAQ,EAAG/B,GAAK4iC,EAAQ,GAAG,CAAE5iC,IAAK,CACzC,IAAM2lC,EAAK92B,CAAM,CAAC7O,EAAII,EAAM,CASxBuxG,AAuBV,UAAsBv5F,CAAK,CAAEo5F,CAAS,EACpC,OAAOA,GAAapC,KAAK,SAAS,CAACh3F,KAAWg3F,KAAK,SAAS,CAACoC,EAC/D,GAjCMp5F,EAAQm5F,GAAUR,EAAe,UAAU,CAACzI,GAAc+I,EAAc,CACtE,KAAM,UACN,GAAItvE,EACJ,GAAI4D,EACJ,YAAa,AAAC3lC,CAAAA,EAAI,GAAKI,EACvB,YAAaJ,EAAII,EACjB+nC,aAAAA,CACF,KACwBqpE,IACtBC,EAAS1vG,EAAO/B,EAAI,EAAG4iC,EAAQ,IAAI,CAAE4uE,GAEvCzvE,EAAO4D,EACP6rE,EAAYp5F,CACd,CACIrW,EAAQ/B,EAAI,GACdyxG,EAAS1vG,EAAO/B,EAAI,EAAG4iC,EAAQ,IAAI,CAAE4uE,EAEzC,CACA,OAAOnlF,CACT,EAtDyBvd,EAAMs3E,EAAUv3E,EAAQkiG,GAFtC3qB,CAGX,CAsDA,SAASmrB,GAAUj/F,CAAO,EACxB,MAAO,CACL,gBAAiBA,EAAQ,eAAe,CACxC,eAAgBA,EAAQ,cAAc,CACtC,WAAYA,EAAQ,UAAU,CAC9B,iBAAkBA,EAAQ,gBAAgB,CAC1C,gBAAiBA,EAAQ,eAAe,CACxC,YAAaA,EAAQ,WAAW,CAChC,YAAaA,EAAQ,WAAW,AAClC,CACF"}