diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c0e6d5f..3129878f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,15 +9,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added * `demos/usage-dag-edges.py`: Show different types of edges in a DAG * `demos/usage-elements-extra.py`: Shows how to load external layouts, otherwise same app as `usage-elements.py`. +* `demos/usage-preset-animation.py`: Example of animating nodes using the preset layout. +* `demos/usage-reset-button.py`: Example of resetting the graph position using a button. * `dash_cytoscape.load_extra_layouts()`: A new function that can be called before initializing the Dash app (`app = dash.Dash(__name__)`) to load the JS bundle containing the external layouts. * `webpack.[dev|prod].extra.config.js`: Two new webpack configs for external layouts. * `src/lib/extra_index.js`: Loads external layouts before exporting the `Cytoscape` class. Needed to generate the new bundles. * Images of new external layouts. * `dash_cytoscape/dash_cytoscape_extra.[min|dev].js`: New bundles containing the extra layouts. Those bundles are double in size compared to the default bundles. Therefore, they are only loaded when the user uses `load_extra_layouts()` to limit bandwidth usage and maximize loading speed. Please view [fast3g-cytoscape](demos/images/fast3g-cytoscape.PNG) for an example of the impact on loading time. +* `dash_cytoscape._display_default_values()`: A util function to display the default prop values by reading `metadata.json`. Useful for documentation. ### Changed -* `src/lib/components/Cytoscape.react.js`: Updated description to include information about new external layouts. +* `usage-events.py`: Added IDs for the edges in order to pass Percy tests. +* `src/lib/components/Cytoscape.react.js`: Updated docstring to include information about new external layouts and warning about nodes that can't be modified by a callback. Added more default props for a better expected behavior. * `package.json`: Added new builds for the extra layouts, modified `npm build:all` to include new builds. Added external layouts as dependencies. +* `README.md`: Moved images, added more images at the end, added useful links. + ## [0.0.5] - 2019-03-08 diff --git a/README.md b/README.md index 739fbdf0..e540bf6d 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,15 @@ # Dash Cytoscape [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/plotly/dash-cytoscape/blob/master/LICENSE) [![PyPi Version](https://img.shields.io/pypi/v/dash-cytoscape.svg)](https://pypi.org/project/dash-cytoscape/) -A Component Library for Dash aimed at facilitating network visualization in Python, wrapped around [Cytoscape.js](http://js.cytoscape.org/). +A Dash component library for creating interactive and customizable networks in Python, wrapped around [Cytoscape.js](http://js.cytoscape.org/). -Interacting with the stylesheet: ![usage-stylesheet-demo](https://raw.githubusercontent.com/plotly/dash-cytoscape/master/demos/images/usage-stylesheet-demo.gif) -Interacting with the elements: -![usage-elements-demo](https://raw.githubusercontent.com/plotly/dash-cytoscape/master/demos/images/usage-elements-demo.gif) +* 🌟 [Medium Article](https://medium.com/@plotlygraphs/introducing-dash-cytoscape-ce96cac824e4) +* 📣 [Community Announcement](https://community.plot.ly/t/announcing-dash-cytoscape/19095) +* 💻 [Github Repository](https://github.com/plotly/dash-cytoscape) +* 📚 [User Guide](https://dash.plot.ly/cytoscape) +* 🗺 [Component Reference](https://dash.plot.ly/cytoscape/reference) +* 📺 [Webinar Recording](https://www.youtube.com/watch?v=snXcIsCMQgk) ## Getting Started @@ -52,16 +55,34 @@ if __name__ == '__main__': app.run_server(debug=True) ``` +![basic-usage](https://raw.githubusercontent.com/plotly/dash-cytoscape/master/demos/images/basic-usage.gif) + +### External layouts + +You can also add external layouts. Use the `cyto.load_extra_layouts()` function to get started: + +```python +import dash +import dash_cytoscape as cyto +import dash_html_components as html + +cyto.load_extra_layouts() + +app = dash.Dash(__name__) +app.layout = html.Div([ + cyto.Cytoscape(...) +]) +``` ## Documentation -View the [Dash Cytoscape User Guide](https://dash.plot.ly/cytoscape/) to get started now. You can also use the [component reference](https://dash.plot.ly/cytoscape/reference/) to find how to use a certain feature. +The [Dash Cytoscape User Guide](https://dash.plot.ly/cytoscape/) contains everything you need to know about the library. It contains useful examples, functioning code, and is fully interactive. You can also use the [component reference](https://dash.plot.ly/cytoscape/reference/) for a complete and concise specification of the API. To learn more about the core Dash components and how to use callbacks, view the [Dash documentation](https://dash.plot.ly/). For supplementary information about the underlying Javascript API, view the [Cytoscape.js documentation](http://js.cytoscape.org/). -### Development and Contributions +## Contributing Make sure that you have read and understood our [code of conduct](CODE_OF_CONDUCT.md), then head over to [CONTRIBUTING](CONTRIBUTING.md) to get started. @@ -79,3 +100,11 @@ Huge thanks to the Cytoscape Consortium and the Cytoscape.js team for their cont The Pull Request and Issue Templates were inspired from the [scikit-learn project](https://github.com/scikit-learn/scikit-learn). + +## Gallery + +Interacting with the [elements](usage-elements.py): +![usage-elements-demo](demos/images/usage-elements-demo.gif) + +Using [external layouts](demos/usage-elements-extra.py): +![usage-elements-extra](demos/images/usage-elements-extra.gif) diff --git a/dash_cytoscape/Cytoscape.py b/dash_cytoscape/Cytoscape.py index 7116d792..c2cc180b 100644 --- a/dash_cytoscape/Cytoscape.py +++ b/dash_cytoscape/Cytoscape.py @@ -54,7 +54,10 @@ class attribute). - `breadthfirst`: Tree structure built using BFS, with optional `roots` - `cose`: Force-directed physics simulation - 2. The following external layouts are also included: + 2. Some external layouts are also included. To use them, run + `dash_cytoscape.load_extra_layouts()` before creating your Dash app. Be careful about + using the extra layouts when not necessary, since they require supplementary bandwidth + for loading, which impacts the startup time of the app. - `cose-bilkent`: https://github.com/cytoscape/cytoscape.js-cose-bilkent - `cola`: https://github.com/cytoscape/cytoscape.js-cola - `euler`: https://github.com/cytoscape/cytoscape.js-dagre @@ -104,7 +107,7 @@ class attribute). - autounselectify (boolean; optional): Whether nodes should be unselectified (immutable selection state) by default (if true, overrides individual element state). - autoRefreshLayout (boolean; optional): Whether the layout should be refreshed when elements are added or removed. -- tapNode (dict; optional): The complete node dictionary returned when you tap or click it. +- tapNode (dict; optional): The complete node dictionary returned when you tap or click it. Read-only. 1. Node-specific items: - `edgesData` (dictionary) @@ -133,8 +136,8 @@ class attribute). - `isChild` (boolean) - `isOrphan` (boolean) - `relativePosition` (dictionary) -- tapNodeData (dict; optional): The data dictionary of a node returned when you tap or click it. -- tapEdge (dict; optional): The complete edge dictionary returned when you tap or click it. +- tapNodeData (dict; optional): The data dictionary of a node returned when you tap or click it. Read-only. +- tapEdge (dict; optional): The complete edge dictionary returned when you tap or click it. Read-only. 1. Edge-specific items: - `isLoop` (boolean) @@ -155,13 +158,13 @@ class attribute). - `selectable` (boolean) - `selected` (boolean) - `style` (dictionary) -- tapEdgeData (dict; optional): The data dictionary of an edge returned when you tap or click it. -- mouseoverNodeData (dict; optional): The data dictionary of a node returned when you hover over it. -- mouseoverEdgeData (dict; optional): The data dictionary of an edge returned when you hover over it. +- tapEdgeData (dict; optional): The data dictionary of an edge returned when you tap or click it. Read-only. +- mouseoverNodeData (dict; optional): The data dictionary of a node returned when you hover over it. Read-only. +- mouseoverEdgeData (dict; optional): The data dictionary of an edge returned when you hover over it. Read-only. - selectedNodeData (list; optional): The list of data dictionaries of all selected nodes (e.g. using -Shift+Click to select multiple nodes, or Shift+Drag to use box selection). +Shift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only. - selectedEdgeData (list; optional): The list of data dictionaries of all selected edges (e.g. using -Shift+Click to select multiple nodes, or Shift+Drag to use box selection).""" +Shift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only.""" @_explicitize_args def __init__(self, id=Component.UNDEFINED, className=Component.UNDEFINED, style=Component.UNDEFINED, elements=Component.UNDEFINED, stylesheet=Component.UNDEFINED, layout=Component.UNDEFINED, pan=Component.UNDEFINED, zoom=Component.UNDEFINED, panningEnabled=Component.UNDEFINED, userPanningEnabled=Component.UNDEFINED, minZoom=Component.UNDEFINED, maxZoom=Component.UNDEFINED, zoomingEnabled=Component.UNDEFINED, userZoomingEnabled=Component.UNDEFINED, boxSelectionEnabled=Component.UNDEFINED, autoungrabify=Component.UNDEFINED, autolock=Component.UNDEFINED, autounselectify=Component.UNDEFINED, autoRefreshLayout=Component.UNDEFINED, tapNode=Component.UNDEFINED, tapNodeData=Component.UNDEFINED, tapEdge=Component.UNDEFINED, tapEdgeData=Component.UNDEFINED, mouseoverNodeData=Component.UNDEFINED, mouseoverEdgeData=Component.UNDEFINED, selectedNodeData=Component.UNDEFINED, selectedEdgeData=Component.UNDEFINED, **kwargs): self._prop_names = ['id', 'className', 'style', 'elements', 'stylesheet', 'layout', 'pan', 'zoom', 'panningEnabled', 'userPanningEnabled', 'minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'boxSelectionEnabled', 'autoungrabify', 'autolock', 'autounselectify', 'autoRefreshLayout', 'tapNode', 'tapNodeData', 'tapEdge', 'tapEdgeData', 'mouseoverNodeData', 'mouseoverEdgeData', 'selectedNodeData', 'selectedEdgeData'] diff --git a/dash_cytoscape/__init__.py b/dash_cytoscape/__init__.py index b9c32a6c..49f609df 100644 --- a/dash_cytoscape/__init__.py +++ b/dash_cytoscape/__init__.py @@ -90,3 +90,32 @@ def load_extra_layouts(): 'namespace': package_name } ] + + +def _display_default_values(): + out_string = "" + + metadata_path = _os.path.join( + _os.path.dirname(_os.path.realpath(__file__)), + 'metadata.json' + ) + + with open(metadata_path, 'r') as file: + data = json.loads(file.read()) + + for component in data: + component_name = component.replace('src/lib/components/', '').replace('.react.js', '') + metadata = data[component] + props = metadata['props'] + + out_string += "## {} Default Values\n\n".format(component_name) + + for prop_name in props: + prop = props[prop_name] + + if 'defaultValue' in prop: + default = prop['defaultValue']['value'] + + out_string += "* *{}*: {}\n".format(prop_name, default) + + return out_string diff --git a/dash_cytoscape/dash_cytoscape.dev.js b/dash_cytoscape/dash_cytoscape.dev.js index a35b3d14..adc8ba20 100644 --- a/dash_cytoscape/dash_cytoscape.dev.js +++ b/dash_cytoscape/dash_cytoscape.dev.js @@ -275,7 +275,7 @@ eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactCytoscapejs = __webpack_require__(/*! react-cytoscapejs */ \"./node_modules/react-cytoscapejs/dist/react-cytoscape.js\");\n\nvar _reactCytoscapejs2 = _interopRequireDefault(_reactCytoscapejs);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\r\n * JavaScript Requirements: cytoscape\r\n * React.js requirements: react-cytoscapejs\r\n */\n\n\n/**\r\nA Component Library for Dash aimed at facilitating network visualization in\r\nPython, wrapped around [Cytoscape.js](http://js.cytoscape.org/).\r\n */\nvar Cytoscape = function (_Component) {\n _inherits(Cytoscape, _Component);\n\n function Cytoscape(props) {\n _classCallCheck(this, Cytoscape);\n\n var _this = _possibleConstructorReturn(this, (Cytoscape.__proto__ || Object.getPrototypeOf(Cytoscape)).call(this, props));\n\n _this.handleCy = _this.handleCy.bind(_this);\n _this._handleCyCalled = false;\n return _this;\n }\n\n _createClass(Cytoscape, [{\n key: 'generateNode',\n value: function generateNode(event) {\n var ele = event.target;\n\n var isParent = ele.isParent(),\n isChildless = ele.isChildless(),\n isChild = ele.isChild(),\n isOrphan = ele.isOrphan(),\n renderedPosition = ele.renderedPosition(),\n relativePosition = ele.relativePosition(),\n parent = ele.parent(),\n style = ele.style();\n\n // Trim down the element objects to only the data contained\n var edgesData = ele.connectedEdges().map(function (ele) {\n return ele.data();\n }),\n childrenData = ele.children().map(function (ele) {\n return ele.data();\n }),\n ancestorsData = ele.ancestors().map(function (ele) {\n return ele.data();\n }),\n descendantsData = ele.descendants().map(function (ele) {\n return ele.data();\n }),\n siblingsData = ele.siblings().map(function (ele) {\n return ele.data();\n });\n\n var timeStamp = event.timeStamp;\n\n var _ele$json = ele.json(),\n classes = _ele$json.classes,\n data = _ele$json.data,\n grabbable = _ele$json.grabbable,\n group = _ele$json.group,\n locked = _ele$json.locked,\n position = _ele$json.position,\n selected = _ele$json.selected,\n selectable = _ele$json.selectable;\n\n var parentData = void 0;\n if (parent) {\n parentData = parent.data();\n } else {\n parentData = null;\n }\n\n var nodeObject = {\n // Nodes attributes\n edgesData: edgesData,\n renderedPosition: renderedPosition,\n timeStamp: timeStamp,\n // From ele.json()\n classes: classes,\n data: data,\n grabbable: grabbable,\n group: group,\n locked: locked,\n position: position,\n selectable: selectable,\n selected: selected,\n // Compound Nodes additional attributes\n ancestorsData: ancestorsData,\n childrenData: childrenData,\n descendantsData: descendantsData,\n parentData: parentData,\n siblingsData: siblingsData,\n isParent: isParent,\n isChildless: isChildless,\n isChild: isChild,\n isOrphan: isOrphan,\n relativePosition: relativePosition,\n // Styling\n style: style\n };\n return nodeObject;\n }\n }, {\n key: 'generateEdge',\n value: function generateEdge(event) {\n var ele = event.target;\n\n var midpoint = ele.midpoint(),\n isLoop = ele.isLoop(),\n isSimple = ele.isSimple(),\n sourceData = ele.source().data(),\n sourceEndpoint = ele.sourceEndpoint(),\n style = ele.style(),\n targetData = ele.target().data(),\n targetEndpoint = ele.targetEndpoint();\n\n var timeStamp = event.timeStamp;\n\n var _ele$json2 = ele.json(),\n classes = _ele$json2.classes,\n data = _ele$json2.data,\n grabbable = _ele$json2.grabbable,\n group = _ele$json2.group,\n locked = _ele$json2.locked,\n selectable = _ele$json2.selectable,\n selected = _ele$json2.selected;\n\n var edgeObject = {\n // Edges attributes\n isLoop: isLoop,\n isSimple: isSimple,\n midpoint: midpoint,\n sourceData: sourceData,\n sourceEndpoint: sourceEndpoint,\n targetData: targetData,\n targetEndpoint: targetEndpoint,\n timeStamp: timeStamp,\n // From ele.json()\n classes: classes,\n data: data,\n grabbable: grabbable,\n group: group,\n locked: locked,\n selectable: selectable,\n selected: selected,\n // Styling\n style: style\n };\n\n return edgeObject;\n }\n }, {\n key: 'handleCy',\n value: function handleCy(cy) {\n var _this2 = this;\n\n // If the cy pointer has not been modified, and handleCy has already\n // been called before, than we don't run this function.\n if (cy === this._cy && this._handleCyCalled) {\n return;\n }\n this._cy = cy;\n window.cy = cy;\n this._handleCyCalled = true;\n\n cy.on('tap', 'node', function (event) {\n var nodeObject = _this2.generateNode(event);\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n tapNode: nodeObject,\n tapNodeData: nodeObject.data\n });\n }\n });\n\n cy.on('tap', 'edge', function (event) {\n var edgeObject = _this2.generateEdge(event);\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n tapEdge: edgeObject,\n tapEdgeData: edgeObject.data\n });\n }\n });\n\n cy.on('mouseover', 'node', function (event) {\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n mouseoverNodeData: event.target.data()\n });\n }\n });\n\n cy.on('mouseover', 'edge', function (event) {\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n mouseoverEdgeData: event.target.data()\n });\n }\n });\n\n // SELECTED DATA\n var SELECT_THRESHOLD = 100;\n\n var selectedNodes = cy.collection();\n var selectedEdges = cy.collection();\n\n var sendSelectedNodesData = _lodash2.default.debounce(function () {\n /*\r\n This function is repetitively called every time a node is selected\r\n or unselected, but keeps being debounced if it is called again\r\n within 100 ms (given by SELECT_THRESHOLD). Effectively, it only\r\n runs when all the nodes have been correctly selected/unselected and\r\n added/removed from the selectedNodes collection, and then updates\r\n the selectedNodeData prop.\r\n */\n var nodeData = selectedNodes.map(function (el) {\n return el.data();\n });\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n selectedNodeData: nodeData\n });\n }\n }, SELECT_THRESHOLD);\n\n var sendSelectedEdgesData = _lodash2.default.debounce(function () {\n var edgeData = selectedEdges.map(function (el) {\n return el.data();\n });\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n selectedEdgeData: edgeData\n });\n }\n }, SELECT_THRESHOLD);\n\n cy.on('select', 'node', function (event) {\n var ele = event.target;\n\n selectedNodes.merge(ele);\n sendSelectedNodesData();\n });\n\n cy.on('unselect', 'node', function (event) {\n var ele = event.target;\n\n selectedNodes.unmerge(ele);\n sendSelectedNodesData();\n });\n\n cy.on('select', 'edge', function (event) {\n var ele = event.target;\n\n selectedEdges.merge(ele);\n sendSelectedEdgesData();\n });\n\n cy.on('unselect', 'edge', function (event) {\n var ele = event.target;\n\n selectedEdges.unmerge(ele);\n sendSelectedEdgesData();\n });\n\n // Refresh Layout if needed\n var refreshLayout = _lodash2.default.debounce(function () {\n var _props = _this2.props,\n autoRefreshLayout = _props.autoRefreshLayout,\n layout = _props.layout;\n\n\n if (autoRefreshLayout) {\n cy.layout(layout).run();\n }\n }, SELECT_THRESHOLD);\n\n cy.on('add remove', function () {\n refreshLayout();\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n style = _props2.style,\n className = _props2.className,\n elements = _props2.elements,\n stylesheet = _props2.stylesheet,\n layout = _props2.layout,\n pan = _props2.pan,\n zoom = _props2.zoom,\n panningEnabled = _props2.panningEnabled,\n userPanningEnabled = _props2.userPanningEnabled,\n minZoom = _props2.minZoom,\n maxZoom = _props2.maxZoom,\n zoomingEnabled = _props2.zoomingEnabled,\n userZoomingEnabled = _props2.userZoomingEnabled,\n boxSelectionEnabled = _props2.boxSelectionEnabled,\n autoungrabify = _props2.autoungrabify,\n autolock = _props2.autolock,\n autounselectify = _props2.autounselectify;\n\n\n return _react2.default.createElement(_reactCytoscapejs2.default, {\n id: id,\n cy: this.handleCy,\n className: className,\n style: style,\n elements: elements,\n stylesheet: stylesheet,\n layout: layout,\n pan: pan,\n zoom: zoom,\n panningEnabled: panningEnabled,\n userPanningEnabled: userPanningEnabled,\n minZoom: minZoom,\n maxZoom: maxZoom,\n zoomingEnabled: zoomingEnabled,\n userZoomingEnabled: userZoomingEnabled,\n boxSelectionEnabled: boxSelectionEnabled,\n autoungrabify: autoungrabify,\n autolock: autolock,\n autounselectify: autounselectify\n });\n }\n }]);\n\n return Cytoscape;\n}(_react.Component);\n\nCytoscape.propTypes = {\n // HTML attribute props\n\n /**\r\n * The ID used to identify this component in Dash callbacks.\r\n */\n id: _propTypes2.default.string,\n\n /**\r\n * Sets the class name of the element (the value of an element's html\r\n * class attribute).\r\n */\n className: _propTypes2.default.string,\n\n /**\r\n * Add inline styles to the root element.\r\n */\n style: _propTypes2.default.object,\n\n // Dash specific props\n\n /**\r\n * Dash-assigned callback that should be called whenever any of the\r\n * properties change.\r\n */\n setProps: _propTypes2.default.func,\n\n // Common props\n\n /**\r\n * A list of dictionaries representing the elements of the networks.\r\n * 1. Each dictionary describes an element, and specifies its purpose.\r\n * - `group` (string): Either 'nodes' or 'edges'. If not given, it's automatically inferred.\r\n * - `data` (dictionary): Element specific data.\r\n * - `id` (string): Reference to the element, useful for selectors and edges. Randomly assigned if not given.\r\n * - `label` (string): Optional name for the element, useful when `data(label)` is given to a style's `content` or `label`. It is only a convention.\r\n * - `parent` (string): Only for nodes. Optional reference to another node. Needed to create compound nodes.\r\n * - `source` (string): Only for edges. The id of the source node, which is where the edge starts.\r\n * - `target` (string): Only for edges. The id of the target node, where the edge ends.\r\n * - `position` (dictionary): Only for nodes. The position of the node.\r\n * - `x` (number): The x-coordinate of the node.\r\n * - `y` (number): The y-coordinate of the node.\r\n * - `selected` (boolean): If the element is selected upon initialisation.\r\n * - `selectable` (boolean): If the element can be selected.\r\n * - `locked` (boolean): Only for nodes. If the position is immutable.\r\n * - `grabbable` (boolean): Only for nodes. If the node can be grabbed and moved by the user.\r\n * - `classes` (string): Space separated string of class names of the element. Those classes can be selected by a style selector.\r\n *\r\n * 2. The [official Cytoscape.js documentation](http://js.cytoscape.org/#notation/elements-json) offers an extensive overview and examples of element declaration.\r\n */\n elements: _propTypes2.default.arrayOf(_propTypes2.default.object),\n\n /**\r\n * A list of dictionaries representing the styles of the elements.\r\n * 1. Each dictionary requires the following keys:\r\n * - `selector` (string): Which elements you are styling. Generally, you select a group of elements (node, edges, both), a class (that you declare in the element dictionary), or an element by ID.\r\n * - `style` (dictionary): What aspects of the elements you want to modify. This could be the size or color of a node, the shape of an edge arrow, or many more.\r\n *\r\n * 2. Both [the selector string](http://js.cytoscape.org/#selectors) and\r\n * [the style dictionary](http://js.cytoscape.org/#style/node-body) are\r\n * exhaustively documented in the Cytoscape.js docs. Although methods such\r\n * as `cy.elements(...)` and `cy.filter(...)` are not available, the selector\r\n * string syntax stays the same.\r\n */\n stylesheet: _propTypes2.default.arrayOf(_propTypes2.default.object),\n\n /**\r\n * A dictionary specifying how to set the position of the elements in your\r\n * graph. The `'name'` key is required, and indicates which layout (algorithm) to\r\n * use.\r\n * 1. The layouts available by default are:\r\n * - `random`: Randomly assigns positions\r\n * - `preset`: Assigns position based on the `position` key in element dictionaries\r\n * - `circle`: Single-level circle, with optional radius\r\n * - `concentric`: Multi-level circle, with optional radius\r\n * - `grid`: Square grid, optionally with numbers of `rows` and `cols`\r\n * - `breadthfirst`: Tree structure built using BFS, with optional `roots`\r\n * - `cose`: Force-directed physics simulation\r\n *\r\n * 2. The following external layouts are also included:\r\n * - `cose-bilkent`: https://github.com/cytoscape/cytoscape.js-cose-bilkent\r\n * - `cola`: https://github.com/cytoscape/cytoscape.js-cola\r\n * - `euler`: https://github.com/cytoscape/cytoscape.js-dagre\r\n * - `spread`: https://github.com/cytoscape/cytoscape.js-spread\r\n * - `dagre`: https://github.com/cytoscape/cytoscape.js-dagre\r\n * - `klay`: https://github.com/cytoscape/cytoscape.js-klay\r\n *\r\n * 3. The keys accepted by `layout` vary depending on the algorithm, but some\r\n * keys are accepted by all layouts:\r\n * - `fit` (boolean): Whether to render the nodes in order to fit the canvas.\r\n * - `padding` (number): Padding around the sides of the canvas, if fit is enabled.\r\n * - `animate` (boolean): Whether to animate change in position when the layout changes.\r\n * - `animationDuration` (number): Duration of animation in milliseconds, if enabled.\r\n * - `boundingBox` (dictionary): How to constrain the layout in a specific area. Keys accepted are either `x1, y1, x2, y2` or `x1, y1, w, h`, all of which receive a pixel value.\r\n *\r\n * 4. The complete list of layouts and their accepted options are available\r\n * on the [Cytoscape.js docs](http://js.cytoscape.org/#layouts). For the\r\n * external layouts, the options are listed in the \"API\" section of the\r\n * README.\r\n * Note that certain keys are not supported in Dash since the value is a\r\n * JavaScript function or a callback. Please visit [this issue](https://github.com/plotly/dash-cytoscape/issues/25)\r\n * for more information.\r\n */\n layout: _propTypes2.default.object,\n\n // Viewport Manipulation\n\n /**\r\n * Dictionary indicating the initial panning position of the graph. The\r\n * following keys are accepted:\r\n * - `x` (number): The x-coordinate of the position.\r\n * - `y` (number): The y-coordinate of the position.\r\n */\n pan: _propTypes2.default.object,\n\n /**\r\n * The initial zoom level of the graph. You can set `minZoom` and\r\n * `maxZoom` to set restrictions on the zoom level.\r\n */\n zoom: _propTypes2.default.number,\n\n // Viewport Mutability and gesture Toggling\n /**\r\n * Whether panning the graph is enabled (i.e., the position of the graph is\r\n * mutable overall).\r\n */\n panningEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether user events (e.g. dragging the graph background) are allowed to\r\n * pan the graph.\r\n */\n userPanningEnabled: _propTypes2.default.bool,\n\n /**\r\n * A minimum bound on the zoom level of the graph. The viewport can not be\r\n * scaled smaller than this zoom level.\r\n */\n minZoom: _propTypes2.default.number,\n\n /**\r\n * A maximum bound on the zoom level of the graph. The viewport can not be\r\n * scaled larger than this zoom level.\r\n */\n maxZoom: _propTypes2.default.number,\n\n /**\r\n * Whether zooming the graph is enabled (i.e., the zoom level of the graph\r\n * is mutable overall).\r\n */\n zoomingEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether user events (e.g. dragging the graph background) are allowed\r\n * to pan the graph.\r\n */\n userZoomingEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether box selection (i.e. drag a box overlay around, and release it\r\n * to select) is enabled. If enabled, the user must taphold to pan the graph.\r\n */\n boxSelectionEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be ungrabified (not grabbable by user) by\r\n * default (if true, overrides individual node state).\r\n */\n autoungrabify: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be locked (not draggable at all) by default\r\n * (if true, overrides individual node state).\r\n */\n autolock: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be unselectified (immutable selection state) by\r\n * default (if true, overrides individual element state).\r\n */\n autounselectify: _propTypes2.default.bool,\n\n /**\r\n * Whether the layout should be refreshed when elements are added or removed.\r\n */\n autoRefreshLayout: _propTypes2.default.bool,\n\n // User Events Props\n\n /**\r\n * The complete node dictionary returned when you tap or click it.\r\n *\r\n * 1. Node-specific items:\r\n * - `edgesData` (dictionary)\r\n * - `renderedPosition` (dictionary)\r\n * - `timeStamp` (number)\r\n *\r\n * 2. General items (for all elements):\r\n * - `classes` (string)\r\n * - `data` (dictionary)\r\n * - `grabbable` (boolean)\r\n * - `group` (string)\r\n * - `locked` (boolean)\r\n * - `position` (dictionary)\r\n * - `selectable` (boolean)\r\n * - `selected` (boolean)\r\n * - `style` (dictionary)\r\n *\r\n * 3. Items for compound nodes:\r\n * - `ancestorsData` (dictionary)\r\n * - `childrenData` (dictionary)\r\n * - `descendantsData` (dictionary)\r\n * - `parentData` (dictionary)\r\n * - `siblingsData` (dictionary)\r\n * - `isParent` (boolean)\r\n * - `isChildless` (boolean)\r\n * - `isChild` (boolean)\r\n * - `isOrphan` (boolean)\r\n * - `relativePosition` (dictionary)\r\n */\n tapNode: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of a node returned when you tap or click it.\r\n */\n tapNodeData: _propTypes2.default.object,\n\n /**\r\n * The complete edge dictionary returned when you tap or click it.\r\n *\r\n * 1. Edge-specific items:\r\n * - `isLoop` (boolean)\r\n * - `isSimple` (boolean)\r\n * - `midpoint` (dictionary)\r\n * - `sourceData` (dictionary)\r\n * - `sourceEndpoint` (dictionary)\r\n * - `targetData` (dictionary)\r\n * - `targetEndpoint` (dictionary)\r\n * - `timeStamp` (number)\r\n *\r\n * 2. General items (for all elements):\r\n * - `classes` (string)\r\n * - `data` (dictionary)\r\n * - `grabbable` (boolean)\r\n * - `group` (string)\r\n * - `locked` (boolean)\r\n * - `selectable` (boolean)\r\n * - `selected` (boolean)\r\n * - `style` (dictionary)\r\n */\n tapEdge: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of an edge returned when you tap or click it.\r\n */\n tapEdgeData: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of a node returned when you hover over it.\r\n */\n mouseoverNodeData: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of an edge returned when you hover over it.\r\n */\n mouseoverEdgeData: _propTypes2.default.object,\n\n /**\r\n * The list of data dictionaries of all selected nodes (e.g. using\r\n * Shift+Click to select multiple nodes, or Shift+Drag to use box selection).\r\n */\n selectedNodeData: _propTypes2.default.array,\n\n /**\r\n * The list of data dictionaries of all selected edges (e.g. using\r\n * Shift+Click to select multiple nodes, or Shift+Drag to use box selection).\r\n */\n selectedEdgeData: _propTypes2.default.array\n};\n\nCytoscape.defaultProps = {\n style: { width: '600px', height: '600px' },\n layout: { name: 'random' },\n autoRefreshLayout: true\n};\n\nexports.default = Cytoscape;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kYXNoX2N5dG9zY2FwZS8uL3NyYy9saWIvY29tcG9uZW50cy9DeXRvc2NhcGUucmVhY3QuanM/NjQyYyJdLCJuYW1lcyI6WyJDeXRvc2NhcGUiLCJwcm9wcyIsImhhbmRsZUN5IiwiYmluZCIsIl9oYW5kbGVDeUNhbGxlZCIsImV2ZW50IiwiZWxlIiwidGFyZ2V0IiwiaXNQYXJlbnQiLCJpc0NoaWxkbGVzcyIsImlzQ2hpbGQiLCJpc09ycGhhbiIsInJlbmRlcmVkUG9zaXRpb24iLCJyZWxhdGl2ZVBvc2l0aW9uIiwicGFyZW50Iiwic3R5bGUiLCJlZGdlc0RhdGEiLCJjb25uZWN0ZWRFZGdlcyIsIm1hcCIsImRhdGEiLCJjaGlsZHJlbkRhdGEiLCJjaGlsZHJlbiIsImFuY2VzdG9yc0RhdGEiLCJhbmNlc3RvcnMiLCJkZXNjZW5kYW50c0RhdGEiLCJkZXNjZW5kYW50cyIsInNpYmxpbmdzRGF0YSIsInNpYmxpbmdzIiwidGltZVN0YW1wIiwianNvbiIsImNsYXNzZXMiLCJncmFiYmFibGUiLCJncm91cCIsImxvY2tlZCIsInBvc2l0aW9uIiwic2VsZWN0ZWQiLCJzZWxlY3RhYmxlIiwicGFyZW50RGF0YSIsIm5vZGVPYmplY3QiLCJtaWRwb2ludCIsImlzTG9vcCIsImlzU2ltcGxlIiwic291cmNlRGF0YSIsInNvdXJjZSIsInNvdXJjZUVuZHBvaW50IiwidGFyZ2V0RGF0YSIsInRhcmdldEVuZHBvaW50IiwiZWRnZU9iamVjdCIsImN5IiwiX2N5Iiwid2luZG93Iiwib24iLCJnZW5lcmF0ZU5vZGUiLCJzZXRQcm9wcyIsInRhcE5vZGUiLCJ0YXBOb2RlRGF0YSIsImdlbmVyYXRlRWRnZSIsInRhcEVkZ2UiLCJ0YXBFZGdlRGF0YSIsIm1vdXNlb3Zlck5vZGVEYXRhIiwibW91c2VvdmVyRWRnZURhdGEiLCJTRUxFQ1RfVEhSRVNIT0xEIiwic2VsZWN0ZWROb2RlcyIsImNvbGxlY3Rpb24iLCJzZWxlY3RlZEVkZ2VzIiwic2VuZFNlbGVjdGVkTm9kZXNEYXRhIiwiXyIsImRlYm91bmNlIiwibm9kZURhdGEiLCJlbCIsInNlbGVjdGVkTm9kZURhdGEiLCJzZW5kU2VsZWN0ZWRFZGdlc0RhdGEiLCJlZGdlRGF0YSIsInNlbGVjdGVkRWRnZURhdGEiLCJtZXJnZSIsInVubWVyZ2UiLCJyZWZyZXNoTGF5b3V0IiwiYXV0b1JlZnJlc2hMYXlvdXQiLCJsYXlvdXQiLCJydW4iLCJpZCIsImNsYXNzTmFtZSIsImVsZW1lbnRzIiwic3R5bGVzaGVldCIsInBhbiIsInpvb20iLCJwYW5uaW5nRW5hYmxlZCIsInVzZXJQYW5uaW5nRW5hYmxlZCIsIm1pblpvb20iLCJtYXhab29tIiwiem9vbWluZ0VuYWJsZWQiLCJ1c2VyWm9vbWluZ0VuYWJsZWQiLCJib3hTZWxlY3Rpb25FbmFibGVkIiwiYXV0b3VuZ3JhYmlmeSIsImF1dG9sb2NrIiwiYXV0b3Vuc2VsZWN0aWZ5IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwib2JqZWN0IiwiZnVuYyIsImFycmF5T2YiLCJudW1iZXIiLCJib29sIiwiYXJyYXkiLCJkZWZhdWx0UHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7K2VBUEE7Ozs7OztBQVVBOzs7O0lBSU1BLFM7OztBQUNGLHVCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUEsMEhBQ1RBLEtBRFM7O0FBR2YsY0FBS0MsUUFBTCxHQUFnQixNQUFLQSxRQUFMLENBQWNDLElBQWQsT0FBaEI7QUFDQSxjQUFLQyxlQUFMLEdBQXVCLEtBQXZCO0FBSmU7QUFLbEI7Ozs7cUNBRVlDLEssRUFBTztBQUNoQixnQkFBTUMsTUFBTUQsTUFBTUUsTUFBbEI7O0FBRUEsZ0JBQU1DLFdBQVdGLElBQUlFLFFBQUosRUFBakI7QUFBQSxnQkFDSUMsY0FBY0gsSUFBSUcsV0FBSixFQURsQjtBQUFBLGdCQUVJQyxVQUFVSixJ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QTRQbEI7OztBQUdBMUMsaUJBQWF3QyxvQkFBVUUsTUEvUEw7O0FBaVFsQjs7O0FBR0F6Qyx1QkFBbUJ1QyxvQkFBVUUsTUFwUVg7O0FBc1FsQjs7O0FBR0F4Qyx1QkFBbUJzQyxvQkFBVUUsTUF6UVg7O0FBMlFsQjs7OztBQUlBOUIsc0JBQWtCNEIsb0JBQVVPLEtBL1FWOztBQWlSbEI7Ozs7QUFJQWhDLHNCQUFrQnlCLG9CQUFVTztBQXJSVixDQUF0Qjs7QUF3UkF6RyxVQUFVMEcsWUFBVixHQUF5QjtBQUNyQjNGLFdBQU8sRUFBQzRGLE9BQU8sT0FBUixFQUFpQkMsUUFBUSxPQUF6QixFQURjO0FBRXJCOUIsWUFBUSxFQUFDK0IsTUFBTSxRQUFQLEVBRmE7QUFHckJoQyx1QkFBbUI7QUFIRSxDQUF6Qjs7a0JBTWU3RSxTIiwiZmlsZSI6Ii4vc3JjL2xpYi9jb21wb25lbnRzL0N5dG9zY2FwZS5yZWFjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBKYXZhU2NyaXB0IFJlcXVpcmVtZW50czogY3l0b3NjYXBlXHJcbiAqIFJlYWN0LmpzIHJlcXVpcmVtZW50czogcmVhY3QtY3l0b3NjYXBlanNcclxuICovXHJcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xyXG5pbXBvcnQgQ3l0b3NjYXBlQ29tcG9uZW50IGZyb20gJ3JlYWN0LWN5dG9zY2FwZWpzJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuXHJcblxyXG4vKipcclxuQSBDb21wb25lbnQgTGlicmFyeSBmb3IgRGFzaCBhaW1lZCBhdCBmYWNpbGl0YXRpbmcgbmV0d29yayB2aXN1YWxpemF0aW9uIGluXHJcblB5dGhvbiwgd3JhcHBlZCBhcm91bmQgW0N5dG9zY2FwZS5qc10oaHR0cDovL2pzLmN5dG9zY2FwZS5vcmcvKS5cclxuICovXHJcbmNsYXNzIEN5dG9zY2FwZSBleHRlbmRzIENvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVDeSA9IHRoaXMuaGFuZGxlQ3kuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLl9oYW5kbGVDeUNhbGxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlTm9kZShldmVudCkge1xyXG4gICAgICAgIGNvbnN0IGVsZSA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgICAgY29uc3QgaXNQYXJlbnQgPSBlbGUuaXNQYXJlbnQoKSxcclxuICAgICAgICAgICAgaXNDaGlsZGxlc3MgPSBlbGUuaXNDaGlsZGxlc3MoKSxcclxuICAgICAgICAgICAgaXNDaGlsZCA9IGVsZS5pc0NoaWxkKCksXHJcbiAgICAgICAgICAgIGlzT3JwaGFuID0gZWxlLmlzT3JwaGFuKCksXHJcbiAgICAgICAgICAgIHJlbmRlcmVkUG9zaXRpb24gPSBlbGUucmVuZGVyZWRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgICByZWxhdGl2ZVBvc2l0aW9uID0gZWxlLnJlbGF0aXZlUG9zaXRpb24oKSxcclxuICAgICAgICAgICAgcGFyZW50ID0gZWxlLnBhcmVudCgpLFxyXG4gICAgICAgICAgICBzdHlsZSA9IGVsZS5zdHlsZSgpO1xyXG5cclxuICAgICAgICAvLyBUcmltIGRvd24gdGhlIGVsZW1lbnQgb2JqZWN0cyB0byBvbmx5IHRoZSBkYXRhIGNvbnRhaW5lZFxyXG4gICAgICAgIGNvbnN0IGVkZ2VzRGF0YSA9IGVsZS5jb25uZWN0ZWRFZGdlcygpLm1hcChlbGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZS5kYXRhKClcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNoaWxkcmVuRGF0YSA9IGVsZS5jaGlsZHJlbigpLm1hcChlbGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZS5kYXRhKClcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGFuY2VzdG9yc0RhdGEgPSBlbGUuYW5jZXN0b3JzKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgZGVzY2VuZGFudHNEYXRhID0gZWxlLmRlc2NlbmRhbnRzKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc2libGluZ3NEYXRhID0gZWxlLnNpYmxpbmdzKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3Qge3RpbWVTdGFtcH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMsXHJcbiAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgIGdyYWJiYWJsZSxcclxuICAgICAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgICAgIGxvY2tlZCxcclxuICAgICAgICAgICAgcG9zaXRpb24sXHJcbiAgICAgICAgICAgIHNlbGVjdGVkLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlXHJcbiAgICAgICAgfSA9IGVsZS5qc29uKCk7XHJcblxyXG4gICAgICAgIGxldCBwYXJlbnREYXRhO1xyXG4gICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgcGFyZW50RGF0YSA9IHBhcmVudC5kYXRhKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcGFyZW50RGF0YSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBub2RlT2JqZWN0ID0ge1xyXG4gICAgICAgICAgICAvLyBOb2RlcyBhdHRyaWJ1dGVzXHJcbiAgICAgICAgICAgIGVkZ2VzRGF0YSxcclxuICAgICAgICAgICAgcmVuZGVyZWRQb3NpdGlvbixcclxuICAgICAgICAgICAgdGltZVN0YW1wLFxyXG4gICAgICAgICAgICAvLyBGcm9tIGVsZS5qc29uKClcclxuICAgICAgICAgICAgY2xhc3NlcyxcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgZ3JhYmJhYmxlLFxyXG4gICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgbG9ja2VkLFxyXG4gICAgICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICAgICAgc2VsZWN0YWJsZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWQsXHJcbiAgICAgICAgICAgIC8vIENvbXBvdW5kIE5vZGVzIGFkZGl0aW9uYWwgYXR0cmlidXRlc1xyXG4gICAgICAgICAgICBhbmNlc3RvcnNEYXRhLFxyXG4gICAgICAgICAgICBjaGlsZHJlbkRhdGEsXHJcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzRGF0YSxcclxuICAgICAgICAgICAgcGFyZW50RGF0YSxcclxuICAgICAgICAgICAgc2libGluZ3NEYXRhLFxyXG4gICAgICAgICAgICBpc1BhcmVudCxcclxuICAgICAgICAgICAgaXNDaGlsZGxlc3MsXHJcbiAgICAgICAgICAgIGlzQ2hpbGQsXHJcbiAgICAgICAgICAgIGlzT3JwaGFuLFxyXG4gICAgICAgICAgICByZWxhdGl2ZVBvc2l0aW9uLFxyXG4gICAgICAgICAgICAvLyBTdHlsaW5nXHJcbiAgICAgICAgICAgIHN0eWxlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gbm9kZU9iamVjdDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2VuZXJhdGVFZGdlKGV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICBjb25zdCBtaWRwb2ludCA9IGVsZS5taWRwb2ludCgpLFxyXG4gICAgICAgICAgICBpc0xvb3AgPSBlbGUuaXNMb29wKCksXHJcbiAgICAgICAgICAgIGlzU2ltcGxlID0gZWxlLmlzU2ltcGxlKCksXHJcbiAgICAgICAgICAgIHNvdXJjZURhdGEgPSBlbGUuc291cmNlKCkuZGF0YSgpLFxyXG4gICAgICAgICAgICBzb3VyY2VFbmRwb2ludCA9IGVsZS5zb3VyY2VFbmRwb2ludCgpLFxyXG4gICAgICAgICAgICBzdHlsZSA9IGVsZS5zdHlsZSgpLFxyXG4gICAgICAgICAgICB0YXJnZXREYXRhID0gZWxlLnRhcmdldCgpLmRhdGEoKSxcclxuICAgICAgICAgICAgdGFyZ2V0RW5kcG9pbnQgPSBlbGUudGFyZ2V0RW5kcG9pbnQoKTtcclxuXHJcbiAgICAgICAgY29uc3Qge3RpbWVTdGFtcH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMsXHJcbiAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgIGdyYWJiYWJsZSxcclxuICAgICAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgICAgIGxvY2tlZCxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWQsXHJcbiAgICAgICAgfSA9IGVsZS5qc29uKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVkZ2VPYmplY3QgPSB7XHJcbiAgICAgICAgICAgIC8vIEVkZ2VzIGF0dHJpYnV0ZXNcclxuICAgICAgICAgICAgaXNMb29wLFxyXG4gICAgICAgICAgICBpc1NpbXBsZSxcclxuICAgICAgICAgICAgbWlkcG9pbnQsXHJcbiAgICAgICAgICAgIHNvdXJjZURhdGEsXHJcbiAgICAgICAgICAgIHNvdXJjZUVuZHBvaW50LFxyXG4gICAgICAgICAgICB0YXJnZXREYXRhLFxyXG4gICAgICAgICAgICB0YXJnZXRFbmRwb2ludCxcclxuICAgICAgICAgICAgdGltZVN0YW1wLFxyXG4gICAgICAgICAgICAvLyBGcm9tIGVsZS5qc29uKClcclxuICAgICAgICAgICAgY2xhc3NlcyxcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgZ3JhYmJhYmxlLFxyXG4gICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgbG9ja2VkLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZCxcclxuICAgICAgICAgICAgLy8gU3R5bGluZ1xyXG4gICAgICAgICAgICBzdHlsZVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiBlZGdlT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUN5KGN5KSB7XHJcbiAgICAgICAgLy8gSWYgdGhlIGN5IHBvaW50ZXIgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBhbmQgaGFuZGxlQ3kgaGFzIGFscmVhZHlcclxuICAgICAgICAvLyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoYW4gd2UgZG9uJ3QgcnVuIHRoaXMgZnVuY3Rpb24uXHJcbiAgICAgICAgaWYgKGN5ID09PSB0aGlzLl9jeSAmJiB0aGlzLl9oYW5kbGVDeUNhbGxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2N5ID0gY3k7XHJcbiAgICAgICAgd2luZG93LmN5ID0gY3k7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlQ3lDYWxsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBjeS5vbigndGFwJywgJ25vZGUnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGVPYmplY3QgPSB0aGlzLmdlbmVyYXRlTm9kZShldmVudCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcE5vZGU6IG5vZGVPYmplY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgdGFwTm9kZURhdGE6IG5vZGVPYmplY3QuZGF0YVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ3RhcCcsICdlZGdlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlZGdlT2JqZWN0ID0gdGhpcy5nZW5lcmF0ZUVkZ2UoZXZlbnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICB0YXBFZGdlOiBlZGdlT2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcEVkZ2VEYXRhOiBlZGdlT2JqZWN0LmRhdGFcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCdtb3VzZW92ZXInLCAnbm9kZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VzZW92ZXJOb2RlRGF0YTogZXZlbnQudGFyZ2V0LmRhdGEoKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjeS5vbignbW91c2VvdmVyJywgJ2VkZ2UnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5zZXRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRQcm9wcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91c2VvdmVyRWRnZURhdGE6IGV2ZW50LnRhcmdldC5kYXRhKClcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gU0VMRUNURUQgREFUQVxyXG4gICAgICAgIGNvbnN0IFNFTEVDVF9USFJFU0hPTEQgPSAxMDA7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZXMgPSBjeS5jb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFZGdlcyA9IGN5LmNvbGxlY3Rpb24oKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2VuZFNlbGVjdGVkTm9kZXNEYXRhID0gXy5kZWJvdW5jZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgcmVwZXRpdGl2ZWx5IGNhbGxlZCBldmVyeSB0aW1lIGEgbm9kZSBpcyBzZWxlY3RlZFxyXG4gICAgICAgICAgICBvciB1bnNlbGVjdGVkLCBidXQga2VlcHMgYmVpbmcgZGVib3VuY2VkIGlmIGl0IGlzIGNhbGxlZCBhZ2FpblxyXG4gICAgICAgICAgICB3aXRoaW4gMTAwIG1zIChnaXZlbiBieSBTRUxFQ1RfVEhSRVNIT0xEKS4gRWZmZWN0aXZlbHksIGl0IG9ubHlcclxuICAgICAgICAgICAgcnVucyB3aGVuIGFsbCB0aGUgbm9kZXMgaGF2ZSBiZWVuIGNvcnJlY3RseSBzZWxlY3RlZC91bnNlbGVjdGVkIGFuZFxyXG4gICAgICAgICAgICBhZGRlZC9yZW1vdmVkIGZyb20gdGhlIHNlbGVjdGVkTm9kZXMgY29sbGVjdGlvbiwgYW5kIHRoZW4gdXBkYXRlc1xyXG4gICAgICAgICAgICB0aGUgc2VsZWN0ZWROb2RlRGF0YSBwcm9wLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgY29uc3Qgbm9kZURhdGEgPSBzZWxlY3RlZE5vZGVzLm1hcChlbCA9PiBlbC5kYXRhKCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE5vZGVEYXRhOiBub2RlRGF0YVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIFNFTEVDVF9USFJFU0hPTEQpO1xyXG5cclxuICAgICAgICBjb25zdCBzZW5kU2VsZWN0ZWRFZGdlc0RhdGEgPSBfLmRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWRnZURhdGEgPSBzZWxlY3RlZEVkZ2VzLm1hcChlbCA9PiBlbC5kYXRhKCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVkZ2VEYXRhOiBlZGdlRGF0YVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIFNFTEVDVF9USFJFU0hPTEQpO1xyXG5cclxuICAgICAgICBjeS5vbignc2VsZWN0JywgJ25vZGUnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZSA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgICAgICAgIHNlbGVjdGVkTm9kZXMubWVyZ2UoZWxlKTtcclxuICAgICAgICAgICAgc2VuZFNlbGVjdGVkTm9kZXNEYXRhKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCd1bnNlbGVjdCcsICdub2RlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbGUgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzLnVubWVyZ2UoZWxlKTtcclxuICAgICAgICAgICAgc2VuZFNlbGVjdGVkTm9kZXNEYXRhKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCdzZWxlY3QnLCAnZWRnZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICAgICAgc2VsZWN0ZWRFZGdlcy5tZXJnZShlbGUpO1xyXG4gICAgICAgICAgICBzZW5kU2VsZWN0ZWRFZGdlc0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ3Vuc2VsZWN0JywgJ2VkZ2UnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZSA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgICAgICAgIHNlbGVjdGVkRWRnZXMudW5tZXJnZShlbGUpO1xyXG4gICAgICAgICAgICBzZW5kU2VsZWN0ZWRFZGdlc0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIC8vIFJlZnJlc2ggTGF5b3V0IGlmIG5lZWRlZFxyXG4gICAgICAgIGNvbnN0IHJlZnJlc2hMYXlvdXQgPSBfLmRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICAgICAgYXV0b1JlZnJlc2hMYXlvdXQsXHJcbiAgICAgICAgICAgICAgICBsYXlvdXRcclxuICAgICAgICAgICAgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXV0b1JlZnJlc2hMYXlvdXQpIHtcclxuICAgICAgICAgICAgICAgIGN5LmxheW91dChsYXlvdXQpLnJ1bigpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCBTRUxFQ1RfVEhSRVNIT0xEKTtcclxuXHJcbiAgICAgICAgY3kub24oJ2FkZCByZW1vdmUnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJlZnJlc2hMYXlvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICAvLyBIVE1MIGF0dHJpYnV0ZSBwcm9wc1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgc3R5bGUsXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgICAgICAgLy8gQ29tbW9uIHByb3BzXHJcbiAgICAgICAgICAgIGVsZW1lbnRzLFxyXG4gICAgICAgICAgICBzdHlsZXNoZWV0LFxyXG4gICAgICAgICAgICBsYXlvdXQsXHJcbiAgICAgICAgICAgIC8vIFZpZXdwb3J0IE1hbmlwdWxhdGlvblxyXG4gICAgICAgICAgICBwYW4sXHJcbiAgICAgICAgICAgIHpvb20sXHJcbiAgICAgICAgICAgIC8vIFZpZXdwb3J0IE11dGFiaWxpdHkgYW5kIGdlc3R1cmUgVG9nZ2xpbmdcclxuICAgICAgICAgICAgcGFubmluZ0VuYWJsZWQsXHJcbiAgICAgICAgICAgIHVzZXJQYW5uaW5nRW5hYmxlZCxcclxuICAgICAgICAgICAgbWluWm9vbSxcclxuICAgICAgICAgICAgbWF4Wm9vbSxcclxuICAgICAgICAgICAgem9vbWluZ0VuYWJsZWQsXHJcbiAgICAgICAgICAgIHVzZXJab29taW5nRW5hYmxlZCxcclxuICAgICAgICAgICAgYm94U2VsZWN0aW9uRW5hYmxlZCxcclxuICAgICAgICAgICAgYXV0b3VuZ3JhYmlmeSxcclxuICAgICAgICAgICAgYXV0b2xvY2ssXHJcbiAgICAgICAgICAgIGF1dG91bnNlbGVjdGlmeVxyXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q3l0b3NjYXBlQ29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICBpZD17aWR9XHJcbiAgICAgICAgICAgICAgICBjeT17dGhpcy5oYW5kbGVDeX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlfVxyXG4gICAgICAgICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxyXG4gICAgICAgICAgICAgICAgc3R5bGVzaGVldD17c3R5bGVzaGVldH1cclxuICAgICAgICAgICAgICAgIGxheW91dD17bGF5b3V0fVxyXG4gICAgICAgICAgICAgICAgcGFuPXtwYW59XHJcbiAgICAgICAgICAgICAgICB6b29tPXt6b29tfVxyXG4gICAgICAgICAgICAgICAgcGFubmluZ0VuYWJsZWQ9e3Bhbm5pbmdFbmFibGVkfVxyXG4gICAgICAgICAgICAgICAgdXNlclBhbm5pbmdFbmFibGVkPXt1c2VyUGFubmluZ0VuYWJsZWR9XHJcbiAgICAgICAgICAgICAgICBtaW5ab29tPXttaW5ab29tfVxyXG4gICAgICAgICAgICAgICAgbWF4Wm9vbT17bWF4Wm9vbX1cclxuICAgICAgICAgICAgICAgIHpvb21pbmdFbmFibGVkPXt6b29taW5nRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgIHVzZXJab29taW5nRW5hYmxlZD17dXNlclpvb21pbmdFbmFibGVkfVxyXG4gICAgICAgICAgICAgICAgYm94U2VsZWN0aW9uRW5hYmxlZD17Ym94U2VsZWN0aW9uRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgIGF1dG91bmdyYWJpZnk9e2F1dG91bmdyYWJpZnl9XHJcbiAgICAgICAgICAgICAgICBhdXRvbG9jaz17YXV0b2xvY2t9XHJcbiAgICAgICAgICAgICAgICBhdXRvdW5zZWxlY3RpZnk9e2F1dG91bnNlbGVjdGlmeX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICApXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5DeXRvc2NhcGUucHJvcFR5cGVzID0ge1xyXG4gICAgLy8gSFRNTCBhdHRyaWJ1dGUgcHJvcHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoaXMgY29tcG9uZW50IGluIERhc2ggY2FsbGJhY2tzLlxyXG4gICAgICovXHJcbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIGVsZW1lbnQgKHRoZSB2YWx1ZSBvZiBhbiBlbGVtZW50J3MgaHRtbFxyXG4gICAgICogY2xhc3MgYXR0cmlidXRlKS5cclxuICAgICAqL1xyXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIGlubGluZSBzdHlsZXMgdG8gdGhlIHJvb3QgZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLy8gRGFzaCBzcGVjaWZpYyBwcm9wc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGFzaC1hc3NpZ25lZCBjYWxsYmFjayB0aGF0IHNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgYW55IG9mIHRoZVxyXG4gICAgICogcHJvcGVydGllcyBjaGFuZ2UuXHJcbiAgICAgKi9cclxuICAgIHNldFByb3BzOiBQcm9wVHlwZXMuZnVuYyxcclxuXHJcbiAgICAvLyBDb21tb24gcHJvcHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgcmVwcmVzZW50aW5nIHRoZSBlbGVtZW50cyBvZiB0aGUgbmV0d29ya3MuXHJcbiAgICAgKiAgICAgMS4gRWFjaCBkaWN0aW9uYXJ5IGRlc2NyaWJlcyBhbiBlbGVtZW50LCBhbmQgc3BlY2lmaWVzIGl0cyBwdXJwb3NlLlxyXG4gICAgICogICAgICAgICAtIGBncm91cGAgKHN0cmluZyk6IEVpdGhlciAnbm9kZXMnIG9yICdlZGdlcycuIElmIG5vdCBnaXZlbiwgaXQncyBhdXRvbWF0aWNhbGx5IGluZmVycmVkLlxyXG4gICAgICogICAgICAgICAtIGBkYXRhYCAoZGljdGlvbmFyeSk6IEVsZW1lbnQgc3BlY2lmaWMgZGF0YS5cclxuICAgICAqICAgICAgICAgICAgICAtIGBpZGAgKHN0cmluZyk6IFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCwgdXNlZnVsIGZvciBzZWxlY3RvcnMgYW5kIGVkZ2VzLiBSYW5kb21seSBhc3NpZ25lZCBpZiBub3QgZ2l2ZW4uXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgbGFiZWxgIChzdHJpbmcpOiBPcHRpb25hbCBuYW1lIGZvciB0aGUgZWxlbWVudCwgdXNlZnVsIHdoZW4gYGRhdGEobGFiZWwpYCBpcyBnaXZlbiB0byBhIHN0eWxlJ3MgYGNvbnRlbnRgIG9yIGBsYWJlbGAuIEl0IGlzIG9ubHkgYSBjb252ZW50aW9uLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHBhcmVudGAgKHN0cmluZyk6IE9ubHkgZm9yIG5vZGVzLiBPcHRpb25hbCByZWZlcmVuY2UgdG8gYW5vdGhlciBub2RlLiBOZWVkZWQgdG8gY3JlYXRlIGNvbXBvdW5kIG5vZGVzLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHNvdXJjZWAgKHN0cmluZyk6IE9ubHkgZm9yIGVkZ2VzLiBUaGUgaWQgb2YgdGhlIHNvdXJjZSBub2RlLCB3aGljaCBpcyB3aGVyZSB0aGUgZWRnZSBzdGFydHMuXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgdGFyZ2V0YCAoc3RyaW5nKTogT25seSBmb3IgZWRnZXMuIFRoZSBpZCBvZiB0aGUgdGFyZ2V0IG5vZGUsIHdoZXJlIHRoZSBlZGdlIGVuZHMuXHJcbiAgICAgKiAgICAgICAgIC0gYHBvc2l0aW9uYCAoZGljdGlvbmFyeSk6IE9ubHkgZm9yIG5vZGVzLiBUaGUgcG9zaXRpb24gb2YgdGhlIG5vZGUuXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgeGAgKG51bWJlcik6IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIG5vZGUuXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgeWAgKG51bWJlcik6IFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIG5vZGUuXHJcbiAgICAgKiAgICAgICAgIC0gYHNlbGVjdGVkYCAoYm9vbGVhbik6IElmIHRoZSBlbGVtZW50IGlzIHNlbGVjdGVkIHVwb24gaW5pdGlhbGlzYXRpb24uXHJcbiAgICAgKiAgICAgICAgIC0gYHNlbGVjdGFibGVgIChib29sZWFuKTogSWYgdGhlIGVsZW1lbnQgY2FuIGJlIHNlbGVjdGVkLlxyXG4gICAgICogICAgICAgICAtIGBsb2NrZWRgIChib29sZWFuKTogT25seSBmb3Igbm9kZXMuIElmIHRoZSBwb3NpdGlvbiBpcyBpbW11dGFibGUuXHJcbiAgICAgKiAgICAgICAgIC0gYGdyYWJiYWJsZWAgKGJvb2xlYW4pOiBPbmx5IGZvciBub2Rlcy4gSWYgdGhlIG5vZGUgY2FuIGJlIGdyYWJiZWQgYW5kIG1vdmVkIGJ5IHRoZSB1c2VyLlxyXG4gICAgICogICAgICAgICAtIGBjbGFzc2VzYCAoc3RyaW5nKTogU3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBjbGFzcyBuYW1lcyBvZiB0aGUgZWxlbWVudC4gVGhvc2UgY2xhc3NlcyBjYW4gYmUgc2VsZWN0ZWQgYnkgYSBzdHlsZSBzZWxlY3Rvci5cclxuICAgICAqXHJcbiAgICAgKiAgICAgMi4gVGhlIFtvZmZpY2lhbCBDeXRvc2NhcGUuanMgZG9jdW1lbnRhdGlvbl0oaHR0cDovL2pzLmN5dG9zY2FwZS5vcmcvI25vdGF0aW9uL2VsZW1lbnRzLWpzb24pIG9mZmVycyBhbiBleHRlbnNpdmUgb3ZlcnZpZXcgYW5kIGV4YW1wbGVzIG9mIGVsZW1lbnQgZGVjbGFyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIGVsZW1lbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgcmVwcmVzZW50aW5nIHRoZSBzdHlsZXMgb2YgdGhlIGVsZW1lbnRzLlxyXG4gICAgICogICAgIDEuIEVhY2ggZGljdGlvbmFyeSByZXF1aXJlcyB0aGUgZm9sbG93aW5nIGtleXM6XHJcbiAgICAgKiAgICAgICAgIC0gYHNlbGVjdG9yYCAoc3RyaW5nKTogV2hpY2ggZWxlbWVudHMgeW91IGFyZSBzdHlsaW5nLiBHZW5lcmFsbHksIHlvdSBzZWxlY3QgYSBncm91cCBvZiBlbGVtZW50cyAobm9kZSwgZWRnZXMsIGJvdGgpLCBhIGNsYXNzICh0aGF0IHlvdSBkZWNsYXJlIGluIHRoZSBlbGVtZW50IGRpY3Rpb25hcnkpLCBvciBhbiBlbGVtZW50IGJ5IElELlxyXG4gICAgICogICAgICAgICAtIGBzdHlsZWAgKGRpY3Rpb25hcnkpOiBXaGF0IGFzcGVjdHMgb2YgdGhlIGVsZW1lbnRzIHlvdSB3YW50IHRvIG1vZGlmeS4gVGhpcyBjb3VsZCBiZSB0aGUgc2l6ZSBvciBjb2xvciBvZiBhIG5vZGUsIHRoZSBzaGFwZSBvZiBhbiBlZGdlIGFycm93LCBvciBtYW55IG1vcmUuXHJcbiAgICAgKlxyXG4gICAgICogICAgIDIuIEJvdGggW3RoZSBzZWxlY3RvciBzdHJpbmddKGh0dHA6Ly9qcy5jeXRvc2NhcGUub3JnLyNzZWxlY3RvcnMpIGFuZFxyXG4gICAgICogICAgIFt0aGUgc3R5bGUgZGljdGlvbmFyeV0oaHR0cDovL2pzLmN5dG9zY2FwZS5vcmcvI3N0eWxlL25vZGUtYm9keSkgYXJlXHJcbiAgICAgKiAgICAgZXhoYXVzdGl2ZWx5IGRvY3VtZW50ZWQgaW4gdGhlIEN5dG9zY2FwZS5qcyBkb2NzLiBBbHRob3VnaCBtZXRob2RzIHN1Y2hcclxuICAgICAqICAgICBhcyBgY3kuZWxlbWVudHMoLi4uKWAgYW5kIGBjeS5maWx0ZXIoLi4uKWAgYXJlIG5vdCBhdmFpbGFibGUsIHRoZSBzZWxlY3RvclxyXG4gICAgICogICAgIHN0cmluZyBzeW50YXggc3RheXMgdGhlIHNhbWUuXHJcbiAgICAgKi9cclxuICAgIHN0eWxlc2hlZXQ6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vYmplY3QpLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBkaWN0aW9uYXJ5IHNwZWNpZnlpbmcgaG93IHRvIHNldCB0aGUgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnRzIGluIHlvdXJcclxuICAgICAqIGdyYXBoLiBUaGUgYCduYW1lJ2Aga2V5IGlzIHJlcXVpcmVkLCBhbmQgaW5kaWNhdGVzIHdoaWNoIGxheW91dCAoYWxnb3JpdGhtKSB0b1xyXG4gICAgICogdXNlLlxyXG4gICAgICogICAgIDEuIFRoZSBsYXlvdXRzIGF2YWlsYWJsZSBieSBkZWZhdWx0IGFyZTpcclxuICAgICAqICAgICAgICAgLSBgcmFuZG9tYDogUmFuZG9tbHkgYXNzaWducyBwb3NpdGlvbnNcclxuICAgICAqICAgICAgICAgLSBgcHJlc2V0YDogQXNzaWducyBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgYHBvc2l0aW9uYCBrZXkgaW4gZWxlbWVudCBkaWN0aW9uYXJpZXNcclxuICAgICAqICAgICAgICAgLSBgY2lyY2xlYDogU2luZ2xlLWxldmVsIGNpcmNsZSwgd2l0aCBvcHRpb25hbCByYWRpdXNcclxuICAgICAqICAgICAgICAgLSBgY29uY2VudHJpY2A6IE11bHRpLWxldmVsIGNpcmNsZSwgd2l0aCBvcHRpb25hbCByYWRpdXNcclxuICAgICAqICAgICAgICAgLSBgZ3JpZGA6IFNxdWFyZSBncmlkLCBvcHRpb25hbGx5IHdpdGggbnVtYmVycyBvZiBgcm93c2AgYW5kIGBjb2xzYFxyXG4gICAgICogICAgICAgICAtIGBicmVhZHRoZmlyc3RgOiBUcmVlIHN0cnVjdHVyZSBidWlsdCB1c2luZyBCRlMsIHdpdGggb3B0aW9uYWwgYHJvb3RzYFxyXG4gICAgICogICAgICAgICAtIGBjb3NlYDogRm9yY2UtZGlyZWN0ZWQgcGh5c2ljcyBzaW11bGF0aW9uXHJcbiAgICAgKlxyXG4gICAgICogICAgIDIuIFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgbGF5b3V0cyBhcmUgYWxzbyBpbmNsdWRlZDpcclxuICAgICAqICAgICAgICAgLSBgY29zZS1iaWxrZW50YDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtY29zZS1iaWxrZW50XHJcbiAgICAgKiAgICAgICAgIC0gYGNvbGFgOiBodHRwczovL2dpdGh1Yi5jb20vY3l0b3NjYXBlL2N5dG9zY2FwZS5qcy1jb2xhXHJcbiAgICAgKiAgICAgICAgIC0gYGV1bGVyYDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtZGFncmVcclxuICAgICAqICAgICAgICAgLSBgc3ByZWFkYDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtc3ByZWFkXHJcbiAgICAgKiAgICAgICAgIC0gYGRhZ3JlYDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtZGFncmVcclxuICAgICAqICAgICAgICAgLSBga2xheWA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLWtsYXlcclxuICAgICAqXHJcbiAgICAgKiAgICAgMy4gVGhlIGtleXMgYWNjZXB0ZWQgYnkgYGxheW91dGAgdmFyeSBkZXBlbmRpbmcgb24gdGhlIGFsZ29yaXRobSwgYnV0IHNvbWVcclxuICAgICAqICAgICBrZXlzIGFyZSBhY2NlcHRlZCBieSBhbGwgbGF5b3V0czpcclxuICAgICAqICAgICAgICAgLSBgZml0YCAoYm9vbGVhbik6IFdoZXRoZXIgdG8gcmVuZGVyIHRoZSBub2RlcyBpbiBvcmRlciB0byBmaXQgdGhlIGNhbnZhcy5cclxuICAgICAqICAgICAgICAgLSBgcGFkZGluZ2AgKG51bWJlcik6IFBhZGRpbmcgYXJvdW5kIHRoZSBzaWRlcyBvZiB0aGUgY2FudmFzLCBpZiBmaXQgaXMgZW5hYmxlZC5cclxuICAgICAqICAgICAgICAgLSBgYW5pbWF0ZWAgKGJvb2xlYW4pOiBXaGV0aGVyIHRvIGFuaW1hdGUgY2hhbmdlIGluIHBvc2l0aW9uIHdoZW4gdGhlIGxheW91dCBjaGFuZ2VzLlxyXG4gICAgICogICAgICAgICAtIGBhbmltYXRpb25EdXJhdGlvbmAgKG51bWJlcik6IER1cmF0aW9uIG9mIGFuaW1hdGlvbiBpbiBtaWxsaXNlY29uZHMsIGlmIGVuYWJsZWQuXHJcbiAgICAgKiAgICAgICAgIC0gYGJvdW5kaW5nQm94YCAoZGljdGlvbmFyeSk6IEhvdyB0byBjb25zdHJhaW4gdGhlIGxheW91dCBpbiBhIHNwZWNpZmljIGFyZWEuIEtleXMgYWNjZXB0ZWQgYXJlIGVpdGhlciBgeDEsIHkxLCB4MiwgeTJgIG9yIGB4MSwgeTEsIHcsIGhgLCBhbGwgb2Ygd2hpY2ggcmVjZWl2ZSBhIHBpeGVsIHZhbHVlLlxyXG4gICAgICpcclxuICAgICAqICAgICA0LiBUaGUgY29tcGxldGUgbGlzdCBvZiBsYXlvdXRzIGFuZCB0aGVpciBhY2NlcHRlZCBvcHRpb25zIGFyZSBhdmFpbGFibGVcclxuICAgICAqICAgICBvbiB0aGUgW0N5dG9zY2FwZS5qcyBkb2NzXShodHRwOi8vanMuY3l0b3NjYXBlLm9yZy8jbGF5b3V0cykuIEZvciB0aGVcclxuICAgICAqICAgICBleHRlcm5hbCBsYXlvdXRzLCB0aGUgb3B0aW9ucyBhcmUgbGlzdGVkIGluIHRoZSBcIkFQSVwiIHNlY3Rpb24gb2YgdGhlXHJcbiAgICAgKiAgICAgUkVBRE1FLlxyXG4gICAgICogICAgIE5vdGUgdGhhdCBjZXJ0YWluIGtleXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gRGFzaCBzaW5jZSB0aGUgdmFsdWUgaXMgYVxyXG4gICAgICogICAgIEphdmFTY3JpcHQgZnVuY3Rpb24gb3IgYSBjYWxsYmFjay4gUGxlYXNlIHZpc2l0IFt0aGlzIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vcGxvdGx5L2Rhc2gtY3l0b3NjYXBlL2lzc3Vlcy8yNSlcclxuICAgICAqICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cclxuICAgICAqL1xyXG4gICAgbGF5b3V0OiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8vIFZpZXdwb3J0IE1hbmlwdWxhdGlvblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGljdGlvbmFyeSBpbmRpY2F0aW5nIHRoZSBpbml0aWFsIHBhbm5pbmcgcG9zaXRpb24gb2YgdGhlIGdyYXBoLiBUaGVcclxuICAgICAqIGZvbGxvd2luZyBrZXlzIGFyZSBhY2NlcHRlZDpcclxuICAgICAqICAgICAtIGB4YCAobnVtYmVyKTogVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgcG9zaXRpb24uXHJcbiAgICAgKiAgICAgLSBgeWAgKG51bWJlcik6IFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIHBvc2l0aW9uLlxyXG4gICAgICovXHJcbiAgICBwYW46IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaW5pdGlhbCB6b29tIGxldmVsIG9mIHRoZSBncmFwaC4gWW91IGNhbiBzZXQgYG1pblpvb21gIGFuZFxyXG4gICAgICogYG1heFpvb21gIHRvIHNldCByZXN0cmljdGlvbnMgb24gdGhlIHpvb20gbGV2ZWwuXHJcbiAgICAgKi9cclxuICAgIHpvb206IFByb3BUeXBlcy5udW1iZXIsXHJcblxyXG4gICAgLy8gVmlld3BvcnQgTXV0YWJpbGl0eSBhbmQgZ2VzdHVyZSBUb2dnbGluZ1xyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHBhbm5pbmcgdGhlIGdyYXBoIGlzIGVuYWJsZWQgKGkuZS4sIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ3JhcGggaXNcclxuICAgICAqIG11dGFibGUgb3ZlcmFsbCkuXHJcbiAgICAgKi9cclxuICAgIHBhbm5pbmdFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdXNlciBldmVudHMgKGUuZy4gZHJhZ2dpbmcgdGhlIGdyYXBoIGJhY2tncm91bmQpIGFyZSBhbGxvd2VkIHRvXHJcbiAgICAgKiBwYW4gdGhlIGdyYXBoLlxyXG4gICAgICovXHJcbiAgICB1c2VyUGFubmluZ0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBtaW5pbXVtIGJvdW5kIG9uIHRoZSB6b29tIGxldmVsIG9mIHRoZSBncmFwaC4gVGhlIHZpZXdwb3J0IGNhbiBub3QgYmVcclxuICAgICAqIHNjYWxlZCBzbWFsbGVyIHRoYW4gdGhpcyB6b29tIGxldmVsLlxyXG4gICAgICovXHJcbiAgICBtaW5ab29tOiBQcm9wVHlwZXMubnVtYmVyLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBtYXhpbXVtIGJvdW5kIG9uIHRoZSB6b29tIGxldmVsIG9mIHRoZSBncmFwaC4gVGhlIHZpZXdwb3J0IGNhbiBub3QgYmVcclxuICAgICAqIHNjYWxlZCBsYXJnZXIgdGhhbiB0aGlzIHpvb20gbGV2ZWwuXHJcbiAgICAgKi9cclxuICAgIG1heFpvb206IFByb3BUeXBlcy5udW1iZXIsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHpvb21pbmcgdGhlIGdyYXBoIGlzIGVuYWJsZWQgKGkuZS4sIHRoZSB6b29tIGxldmVsIG9mIHRoZSBncmFwaFxyXG4gICAgICogaXMgbXV0YWJsZSBvdmVyYWxsKS5cclxuICAgICAqL1xyXG4gICAgem9vbWluZ0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB1c2VyIGV2ZW50cyAoZS5nLiBkcmFnZ2luZyB0aGUgZ3JhcGggYmFja2dyb3VuZCkgYXJlIGFsbG93ZWRcclxuICAgICAqIHRvIHBhbiB0aGUgZ3JhcGguXHJcbiAgICAgKi9cclxuICAgIHVzZXJab29taW5nRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIGJveCBzZWxlY3Rpb24gKGkuZS4gZHJhZyBhIGJveCBvdmVybGF5IGFyb3VuZCwgYW5kIHJlbGVhc2UgaXRcclxuICAgICAqIHRvIHNlbGVjdCkgaXMgZW5hYmxlZC4gSWYgZW5hYmxlZCwgdGhlIHVzZXIgbXVzdCB0YXBob2xkIHRvIHBhbiB0aGUgZ3JhcGguXHJcbiAgICAgKi9cclxuICAgIGJveFNlbGVjdGlvbkVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBub2RlcyBzaG91bGQgYmUgdW5ncmFiaWZpZWQgKG5vdCBncmFiYmFibGUgYnkgdXNlcikgYnlcclxuICAgICAqIGRlZmF1bHQgKGlmIHRydWUsIG92ZXJyaWRlcyBpbmRpdmlkdWFsIG5vZGUgc3RhdGUpLlxyXG4gICAgICovXHJcbiAgICBhdXRvdW5ncmFiaWZ5OiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgbm9kZXMgc2hvdWxkIGJlIGxvY2tlZCAobm90IGRyYWdnYWJsZSBhdCBhbGwpIGJ5IGRlZmF1bHRcclxuICAgICAqIChpZiB0cnVlLCBvdmVycmlkZXMgaW5kaXZpZHVhbCBub2RlIHN0YXRlKS5cclxuICAgICAqL1xyXG4gICAgYXV0b2xvY2s6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBub2RlcyBzaG91bGQgYmUgdW5zZWxlY3RpZmllZCAoaW1tdXRhYmxlIHNlbGVjdGlvbiBzdGF0ZSkgYnlcclxuICAgICAqIGRlZmF1bHQgKGlmIHRydWUsIG92ZXJyaWRlcyBpbmRpdmlkdWFsIGVsZW1lbnQgc3RhdGUpLlxyXG4gICAgICovXHJcbiAgICBhdXRvdW5zZWxlY3RpZnk6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0aGUgbGF5b3V0IHNob3VsZCBiZSByZWZyZXNoZWQgd2hlbiBlbGVtZW50cyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC5cclxuICAgICAqL1xyXG4gICAgYXV0b1JlZnJlc2hMYXlvdXQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8vIFVzZXIgRXZlbnRzIFByb3BzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29tcGxldGUgbm9kZSBkaWN0aW9uYXJ5IHJldHVybmVkIHdoZW4geW91IHRhcCBvciBjbGljayBpdC5cclxuICAgICAqXHJcbiAgICAgKiAgICAgMS4gTm9kZS1zcGVjaWZpYyBpdGVtczpcclxuICAgICAqICAgICAgICAgLSBgZWRnZXNEYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgcmVuZGVyZWRQb3NpdGlvbmAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHRpbWVTdGFtcGAgKG51bWJlcilcclxuICAgICAqXHJcbiAgICAgKiAgICAgMi4gR2VuZXJhbCBpdGVtcyAoZm9yIGFsbCBlbGVtZW50cyk6XHJcbiAgICAgKiAgICAgICAgIC0gYGNsYXNzZXNgIChzdHJpbmcpXHJcbiAgICAgKiAgICAgICAgIC0gYGRhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBncmFiYmFibGVgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBncm91cGAgKHN0cmluZylcclxuICAgICAqICAgICAgICAgLSBgbG9ja2VkYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgcG9zaXRpb25gIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RhYmxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgc2VsZWN0ZWRgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzdHlsZWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKlxyXG4gICAgICogICAgIDMuIEl0ZW1zIGZvciBjb21wb3VuZCBub2RlczpcclxuICAgICAqICAgICAgICAgLSBgYW5jZXN0b3JzRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGNoaWxkcmVuRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGRlc2NlbmRhbnRzRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHBhcmVudERhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzaWJsaW5nc0RhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBpc1BhcmVudGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzQ2hpbGRsZXNzYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgaXNDaGlsZGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzT3JwaGFuYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgcmVsYXRpdmVQb3NpdGlvbmAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKi9cclxuICAgIHRhcE5vZGU6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSBkaWN0aW9uYXJ5IG9mIGEgbm9kZSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuXHJcbiAgICAgKi9cclxuICAgIHRhcE5vZGVEYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbXBsZXRlIGVkZ2UgZGljdGlvbmFyeSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuXHJcbiAgICAgKlxyXG4gICAgICogICAgIDEuIEVkZ2Utc3BlY2lmaWMgaXRlbXM6XHJcbiAgICAgKiAgICAgICAgIC0gYGlzTG9vcGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzU2ltcGxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgbWlkcG9pbnRgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzb3VyY2VEYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgc291cmNlRW5kcG9pbnRgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGB0YXJnZXREYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgdGFyZ2V0RW5kcG9pbnRgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGB0aW1lU3RhbXBgIChudW1iZXIpXHJcbiAgICAgKlxyXG4gICAgICogICAgIDIuIEdlbmVyYWwgaXRlbXMgKGZvciBhbGwgZWxlbWVudHMpOlxyXG4gICAgICogICAgICAgICAtIGBjbGFzc2VzYCAoc3RyaW5nKVxyXG4gICAgICogICAgICAgICAtIGBkYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgZ3JhYmJhYmxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgZ3JvdXBgIChzdHJpbmcpXHJcbiAgICAgKiAgICAgICAgIC0gYGxvY2tlZGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYHNlbGVjdGFibGVgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RlZGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYHN0eWxlYCAoZGljdGlvbmFyeSlcclxuICAgICAqL1xyXG4gICAgdGFwRWRnZTogUHJvcFR5cGVzLm9iamVjdCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkYXRhIGRpY3Rpb25hcnkgb2YgYW4gZWRnZSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuXHJcbiAgICAgKi9cclxuICAgIHRhcEVkZ2VEYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRhdGEgZGljdGlvbmFyeSBvZiBhIG5vZGUgcmV0dXJuZWQgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdC5cclxuICAgICAqL1xyXG4gICAgbW91c2VvdmVyTm9kZURhdGE6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSBkaWN0aW9uYXJ5IG9mIGFuIGVkZ2UgcmV0dXJuZWQgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdC5cclxuICAgICAqL1xyXG4gICAgbW91c2VvdmVyRWRnZURhdGE6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbGlzdCBvZiBkYXRhIGRpY3Rpb25hcmllcyBvZiBhbGwgc2VsZWN0ZWQgbm9kZXMgKGUuZy4gdXNpbmdcclxuICAgICAqIFNoaWZ0K0NsaWNrIHRvIHNlbGVjdCBtdWx0aXBsZSBub2Rlcywgb3IgU2hpZnQrRHJhZyB0byB1c2UgYm94IHNlbGVjdGlvbikuXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdGVkTm9kZURhdGE6IFByb3BUeXBlcy5hcnJheSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsaXN0IG9mIGRhdGEgZGljdGlvbmFyaWVzIG9mIGFsbCBzZWxlY3RlZCBlZGdlcyAoZS5nLiB1c2luZ1xyXG4gICAgICogU2hpZnQrQ2xpY2sgdG8gc2VsZWN0IG11bHRpcGxlIG5vZGVzLCBvciBTaGlmdCtEcmFnIHRvIHVzZSBib3ggc2VsZWN0aW9uKS5cclxuICAgICAqL1xyXG4gICAgc2VsZWN0ZWRFZGdlRGF0YTogUHJvcFR5cGVzLmFycmF5XHJcbn07XHJcblxyXG5DeXRvc2NhcGUuZGVmYXVsdFByb3BzID0ge1xyXG4gICAgc3R5bGU6IHt3aWR0aDogJzYwMHB4JywgaGVpZ2h0OiAnNjAwcHgnfSxcclxuICAgIGxheW91dDoge25hbWU6ICdyYW5kb20nfSxcclxuICAgIGF1dG9SZWZyZXNoTGF5b3V0OiB0cnVlXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDeXRvc2NhcGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/lib/components/Cytoscape.react.js\n"); + eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactCytoscapejs = __webpack_require__(/*! react-cytoscapejs */ \"./node_modules/react-cytoscapejs/dist/react-cytoscape.js\");\n\nvar _reactCytoscapejs2 = _interopRequireDefault(_reactCytoscapejs);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\r\n * JavaScript Requirements: cytoscape\r\n * React.js requirements: react-cytoscapejs\r\n */\n\n\n/**\r\nA Component Library for Dash aimed at facilitating network visualization in\r\nPython, wrapped around [Cytoscape.js](http://js.cytoscape.org/).\r\n */\nvar Cytoscape = function (_Component) {\n _inherits(Cytoscape, _Component);\n\n function Cytoscape(props) {\n _classCallCheck(this, Cytoscape);\n\n var _this = _possibleConstructorReturn(this, (Cytoscape.__proto__ || Object.getPrototypeOf(Cytoscape)).call(this, props));\n\n _this.handleCy = _this.handleCy.bind(_this);\n _this._handleCyCalled = false;\n return _this;\n }\n\n _createClass(Cytoscape, [{\n key: 'generateNode',\n value: function generateNode(event) {\n var ele = event.target;\n\n var isParent = ele.isParent(),\n isChildless = ele.isChildless(),\n isChild = ele.isChild(),\n isOrphan = ele.isOrphan(),\n renderedPosition = ele.renderedPosition(),\n relativePosition = ele.relativePosition(),\n parent = ele.parent(),\n style = ele.style();\n\n // Trim down the element objects to only the data contained\n var edgesData = ele.connectedEdges().map(function (ele) {\n return ele.data();\n }),\n childrenData = ele.children().map(function (ele) {\n return ele.data();\n }),\n ancestorsData = ele.ancestors().map(function (ele) {\n return ele.data();\n }),\n descendantsData = ele.descendants().map(function (ele) {\n return ele.data();\n }),\n siblingsData = ele.siblings().map(function (ele) {\n return ele.data();\n });\n\n var timeStamp = event.timeStamp;\n\n var _ele$json = ele.json(),\n classes = _ele$json.classes,\n data = _ele$json.data,\n grabbable = _ele$json.grabbable,\n group = _ele$json.group,\n locked = _ele$json.locked,\n position = _ele$json.position,\n selected = _ele$json.selected,\n selectable = _ele$json.selectable;\n\n var parentData = void 0;\n if (parent) {\n parentData = parent.data();\n } else {\n parentData = null;\n }\n\n var nodeObject = {\n // Nodes attributes\n edgesData: edgesData,\n renderedPosition: renderedPosition,\n timeStamp: timeStamp,\n // From ele.json()\n classes: classes,\n data: data,\n grabbable: grabbable,\n group: group,\n locked: locked,\n position: position,\n selectable: selectable,\n selected: selected,\n // Compound Nodes additional attributes\n ancestorsData: ancestorsData,\n childrenData: childrenData,\n descendantsData: descendantsData,\n parentData: parentData,\n siblingsData: siblingsData,\n isParent: isParent,\n isChildless: isChildless,\n isChild: isChild,\n isOrphan: isOrphan,\n relativePosition: relativePosition,\n // Styling\n style: style\n };\n return nodeObject;\n }\n }, {\n key: 'generateEdge',\n value: function generateEdge(event) {\n var ele = event.target;\n\n var midpoint = ele.midpoint(),\n isLoop = ele.isLoop(),\n isSimple = ele.isSimple(),\n sourceData = ele.source().data(),\n sourceEndpoint = ele.sourceEndpoint(),\n style = ele.style(),\n targetData = ele.target().data(),\n targetEndpoint = ele.targetEndpoint();\n\n var timeStamp = event.timeStamp;\n\n var _ele$json2 = ele.json(),\n classes = _ele$json2.classes,\n data = _ele$json2.data,\n grabbable = _ele$json2.grabbable,\n group = _ele$json2.group,\n locked = _ele$json2.locked,\n selectable = _ele$json2.selectable,\n selected = _ele$json2.selected;\n\n var edgeObject = {\n // Edges attributes\n isLoop: isLoop,\n isSimple: isSimple,\n midpoint: midpoint,\n sourceData: sourceData,\n sourceEndpoint: sourceEndpoint,\n targetData: targetData,\n targetEndpoint: targetEndpoint,\n timeStamp: timeStamp,\n // From ele.json()\n classes: classes,\n data: data,\n grabbable: grabbable,\n group: group,\n locked: locked,\n selectable: selectable,\n selected: selected,\n // Styling\n style: style\n };\n\n return edgeObject;\n }\n }, {\n key: 'handleCy',\n value: function handleCy(cy) {\n var _this2 = this;\n\n // If the cy pointer has not been modified, and handleCy has already\n // been called before, than we don't run this function.\n if (cy === this._cy && this._handleCyCalled) {\n return;\n }\n this._cy = cy;\n window.cy = cy;\n this._handleCyCalled = true;\n\n cy.on('tap', 'node', function (event) {\n var nodeObject = _this2.generateNode(event);\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n tapNode: nodeObject,\n tapNodeData: nodeObject.data\n });\n }\n });\n\n cy.on('tap', 'edge', function (event) {\n var edgeObject = _this2.generateEdge(event);\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n tapEdge: edgeObject,\n tapEdgeData: edgeObject.data\n });\n }\n });\n\n cy.on('mouseover', 'node', function (event) {\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n mouseoverNodeData: event.target.data()\n });\n }\n });\n\n cy.on('mouseover', 'edge', function (event) {\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n mouseoverEdgeData: event.target.data()\n });\n }\n });\n\n // SELECTED DATA\n var SELECT_THRESHOLD = 100;\n\n var selectedNodes = cy.collection();\n var selectedEdges = cy.collection();\n\n var sendSelectedNodesData = _lodash2.default.debounce(function () {\n /*\r\n This function is repetitively called every time a node is selected\r\n or unselected, but keeps being debounced if it is called again\r\n within 100 ms (given by SELECT_THRESHOLD). Effectively, it only\r\n runs when all the nodes have been correctly selected/unselected and\r\n added/removed from the selectedNodes collection, and then updates\r\n the selectedNodeData prop.\r\n */\n var nodeData = selectedNodes.map(function (el) {\n return el.data();\n });\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n selectedNodeData: nodeData\n });\n }\n }, SELECT_THRESHOLD);\n\n var sendSelectedEdgesData = _lodash2.default.debounce(function () {\n var edgeData = selectedEdges.map(function (el) {\n return el.data();\n });\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n selectedEdgeData: edgeData\n });\n }\n }, SELECT_THRESHOLD);\n\n cy.on('select', 'node', function (event) {\n var ele = event.target;\n\n selectedNodes.merge(ele);\n sendSelectedNodesData();\n });\n\n cy.on('unselect', 'node', function (event) {\n var ele = event.target;\n\n selectedNodes.unmerge(ele);\n sendSelectedNodesData();\n });\n\n cy.on('select', 'edge', function (event) {\n var ele = event.target;\n\n selectedEdges.merge(ele);\n sendSelectedEdgesData();\n });\n\n cy.on('unselect', 'edge', function (event) {\n var ele = event.target;\n\n selectedEdges.unmerge(ele);\n sendSelectedEdgesData();\n });\n\n // Refresh Layout if needed\n var refreshLayout = _lodash2.default.debounce(function () {\n var _props = _this2.props,\n autoRefreshLayout = _props.autoRefreshLayout,\n layout = _props.layout;\n\n\n if (autoRefreshLayout) {\n cy.layout(layout).run();\n }\n }, SELECT_THRESHOLD);\n\n cy.on('add remove', function () {\n refreshLayout();\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n style = _props2.style,\n className = _props2.className,\n elements = _props2.elements,\n stylesheet = _props2.stylesheet,\n layout = _props2.layout,\n pan = _props2.pan,\n zoom = _props2.zoom,\n panningEnabled = _props2.panningEnabled,\n userPanningEnabled = _props2.userPanningEnabled,\n minZoom = _props2.minZoom,\n maxZoom = _props2.maxZoom,\n zoomingEnabled = _props2.zoomingEnabled,\n userZoomingEnabled = _props2.userZoomingEnabled,\n boxSelectionEnabled = _props2.boxSelectionEnabled,\n autoungrabify = _props2.autoungrabify,\n autolock = _props2.autolock,\n autounselectify = _props2.autounselectify;\n\n\n return _react2.default.createElement(_reactCytoscapejs2.default, {\n id: id,\n cy: this.handleCy,\n className: className,\n style: style,\n elements: _reactCytoscapejs2.default.normalizeElements(elements),\n stylesheet: stylesheet,\n layout: layout,\n pan: pan,\n zoom: zoom,\n panningEnabled: panningEnabled,\n userPanningEnabled: userPanningEnabled,\n minZoom: minZoom,\n maxZoom: maxZoom,\n zoomingEnabled: zoomingEnabled,\n userZoomingEnabled: userZoomingEnabled,\n boxSelectionEnabled: boxSelectionEnabled,\n autoungrabify: autoungrabify,\n autolock: autolock,\n autounselectify: autounselectify\n });\n }\n }]);\n\n return Cytoscape;\n}(_react.Component);\n\nCytoscape.propTypes = {\n // HTML attribute props\n\n /**\r\n * The ID used to identify this component in Dash callbacks.\r\n */\n id: _propTypes2.default.string,\n\n /**\r\n * Sets the class name of the element (the value of an element's html\r\n * class attribute).\r\n */\n className: _propTypes2.default.string,\n\n /**\r\n * Add inline styles to the root element.\r\n */\n style: _propTypes2.default.object,\n\n // Dash specific props\n\n /**\r\n * Dash-assigned callback that should be called whenever any of the\r\n * properties change.\r\n */\n setProps: _propTypes2.default.func,\n\n // Common props\n\n /**\r\n * A list of dictionaries representing the elements of the networks.\r\n * 1. Each dictionary describes an element, and specifies its purpose.\r\n * - `group` (string): Either 'nodes' or 'edges'. If not given, it's automatically inferred.\r\n * - `data` (dictionary): Element specific data.\r\n * - `id` (string): Reference to the element, useful for selectors and edges. Randomly assigned if not given.\r\n * - `label` (string): Optional name for the element, useful when `data(label)` is given to a style's `content` or `label`. It is only a convention.\r\n * - `parent` (string): Only for nodes. Optional reference to another node. Needed to create compound nodes.\r\n * - `source` (string): Only for edges. The id of the source node, which is where the edge starts.\r\n * - `target` (string): Only for edges. The id of the target node, where the edge ends.\r\n * - `position` (dictionary): Only for nodes. The position of the node.\r\n * - `x` (number): The x-coordinate of the node.\r\n * - `y` (number): The y-coordinate of the node.\r\n * - `selected` (boolean): If the element is selected upon initialisation.\r\n * - `selectable` (boolean): If the element can be selected.\r\n * - `locked` (boolean): Only for nodes. If the position is immutable.\r\n * - `grabbable` (boolean): Only for nodes. If the node can be grabbed and moved by the user.\r\n * - `classes` (string): Space separated string of class names of the element. Those classes can be selected by a style selector.\r\n *\r\n * 2. The [official Cytoscape.js documentation](http://js.cytoscape.org/#notation/elements-json) offers an extensive overview and examples of element declaration.\r\n */\n elements: _propTypes2.default.arrayOf(_propTypes2.default.object),\n\n /**\r\n * A list of dictionaries representing the styles of the elements.\r\n * 1. Each dictionary requires the following keys:\r\n * - `selector` (string): Which elements you are styling. Generally, you select a group of elements (node, edges, both), a class (that you declare in the element dictionary), or an element by ID.\r\n * - `style` (dictionary): What aspects of the elements you want to modify. This could be the size or color of a node, the shape of an edge arrow, or many more.\r\n *\r\n * 2. Both [the selector string](http://js.cytoscape.org/#selectors) and\r\n * [the style dictionary](http://js.cytoscape.org/#style/node-body) are\r\n * exhaustively documented in the Cytoscape.js docs. Although methods such\r\n * as `cy.elements(...)` and `cy.filter(...)` are not available, the selector\r\n * string syntax stays the same.\r\n */\n stylesheet: _propTypes2.default.arrayOf(_propTypes2.default.object),\n\n /**\r\n * A dictionary specifying how to set the position of the elements in your\r\n * graph. The `'name'` key is required, and indicates which layout (algorithm) to\r\n * use.\r\n * 1. The layouts available by default are:\r\n * - `random`: Randomly assigns positions\r\n * - `preset`: Assigns position based on the `position` key in element dictionaries\r\n * - `circle`: Single-level circle, with optional radius\r\n * - `concentric`: Multi-level circle, with optional radius\r\n * - `grid`: Square grid, optionally with numbers of `rows` and `cols`\r\n * - `breadthfirst`: Tree structure built using BFS, with optional `roots`\r\n * - `cose`: Force-directed physics simulation\r\n *\r\n * 2. Some external layouts are also included. To use them, run\r\n * `dash_cytoscape.load_extra_layouts()` before creating your Dash app. Be careful about\r\n * using the extra layouts when not necessary, since they require supplementary bandwidth\r\n * for loading, which impacts the startup time of the app.\r\n * - `cose-bilkent`: https://github.com/cytoscape/cytoscape.js-cose-bilkent\r\n * - `cola`: https://github.com/cytoscape/cytoscape.js-cola\r\n * - `euler`: https://github.com/cytoscape/cytoscape.js-dagre\r\n * - `spread`: https://github.com/cytoscape/cytoscape.js-spread\r\n * - `dagre`: https://github.com/cytoscape/cytoscape.js-dagre\r\n * - `klay`: https://github.com/cytoscape/cytoscape.js-klay\r\n *\r\n * 3. The keys accepted by `layout` vary depending on the algorithm, but some\r\n * keys are accepted by all layouts:\r\n * - `fit` (boolean): Whether to render the nodes in order to fit the canvas.\r\n * - `padding` (number): Padding around the sides of the canvas, if fit is enabled.\r\n * - `animate` (boolean): Whether to animate change in position when the layout changes.\r\n * - `animationDuration` (number): Duration of animation in milliseconds, if enabled.\r\n * - `boundingBox` (dictionary): How to constrain the layout in a specific area. Keys accepted are either `x1, y1, x2, y2` or `x1, y1, w, h`, all of which receive a pixel value.\r\n *\r\n * 4. The complete list of layouts and their accepted options are available\r\n * on the [Cytoscape.js docs](http://js.cytoscape.org/#layouts). For the\r\n * external layouts, the options are listed in the \"API\" section of the\r\n * README.\r\n * Note that certain keys are not supported in Dash since the value is a\r\n * JavaScript function or a callback. Please visit [this issue](https://github.com/plotly/dash-cytoscape/issues/25)\r\n * for more information.\r\n */\n layout: _propTypes2.default.object,\n\n // Viewport Manipulation\n\n /**\r\n * Dictionary indicating the initial panning position of the graph. The\r\n * following keys are accepted:\r\n * - `x` (number): The x-coordinate of the position.\r\n * - `y` (number): The y-coordinate of the position.\r\n */\n pan: _propTypes2.default.object,\n\n /**\r\n * The initial zoom level of the graph. You can set `minZoom` and\r\n * `maxZoom` to set restrictions on the zoom level.\r\n */\n zoom: _propTypes2.default.number,\n\n // Viewport Mutability and gesture Toggling\n /**\r\n * Whether panning the graph is enabled (i.e., the position of the graph is\r\n * mutable overall).\r\n */\n panningEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether user events (e.g. dragging the graph background) are allowed to\r\n * pan the graph.\r\n */\n userPanningEnabled: _propTypes2.default.bool,\n\n /**\r\n * A minimum bound on the zoom level of the graph. The viewport can not be\r\n * scaled smaller than this zoom level.\r\n */\n minZoom: _propTypes2.default.number,\n\n /**\r\n * A maximum bound on the zoom level of the graph. The viewport can not be\r\n * scaled larger than this zoom level.\r\n */\n maxZoom: _propTypes2.default.number,\n\n /**\r\n * Whether zooming the graph is enabled (i.e., the zoom level of the graph\r\n * is mutable overall).\r\n */\n zoomingEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether user events (e.g. dragging the graph background) are allowed\r\n * to pan the graph.\r\n */\n userZoomingEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether box selection (i.e. drag a box overlay around, and release it\r\n * to select) is enabled. If enabled, the user must taphold to pan the graph.\r\n */\n boxSelectionEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be ungrabified (not grabbable by user) by\r\n * default (if true, overrides individual node state).\r\n */\n autoungrabify: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be locked (not draggable at all) by default\r\n * (if true, overrides individual node state).\r\n */\n autolock: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be unselectified (immutable selection state) by\r\n * default (if true, overrides individual element state).\r\n */\n autounselectify: _propTypes2.default.bool,\n\n /**\r\n * Whether the layout should be refreshed when elements are added or removed.\r\n */\n autoRefreshLayout: _propTypes2.default.bool,\n\n // User Events Props\n\n /**\r\n * The complete node dictionary returned when you tap or click it. Read-only.\r\n *\r\n * 1. Node-specific items:\r\n * - `edgesData` (dictionary)\r\n * - `renderedPosition` (dictionary)\r\n * - `timeStamp` (number)\r\n *\r\n * 2. General items (for all elements):\r\n * - `classes` (string)\r\n * - `data` (dictionary)\r\n * - `grabbable` (boolean)\r\n * - `group` (string)\r\n * - `locked` (boolean)\r\n * - `position` (dictionary)\r\n * - `selectable` (boolean)\r\n * - `selected` (boolean)\r\n * - `style` (dictionary)\r\n *\r\n * 3. Items for compound nodes:\r\n * - `ancestorsData` (dictionary)\r\n * - `childrenData` (dictionary)\r\n * - `descendantsData` (dictionary)\r\n * - `parentData` (dictionary)\r\n * - `siblingsData` (dictionary)\r\n * - `isParent` (boolean)\r\n * - `isChildless` (boolean)\r\n * - `isChild` (boolean)\r\n * - `isOrphan` (boolean)\r\n * - `relativePosition` (dictionary)\r\n */\n tapNode: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of a node returned when you tap or click it. Read-only.\r\n */\n tapNodeData: _propTypes2.default.object,\n\n /**\r\n * The complete edge dictionary returned when you tap or click it. Read-only.\r\n *\r\n * 1. Edge-specific items:\r\n * - `isLoop` (boolean)\r\n * - `isSimple` (boolean)\r\n * - `midpoint` (dictionary)\r\n * - `sourceData` (dictionary)\r\n * - `sourceEndpoint` (dictionary)\r\n * - `targetData` (dictionary)\r\n * - `targetEndpoint` (dictionary)\r\n * - `timeStamp` (number)\r\n *\r\n * 2. General items (for all elements):\r\n * - `classes` (string)\r\n * - `data` (dictionary)\r\n * - `grabbable` (boolean)\r\n * - `group` (string)\r\n * - `locked` (boolean)\r\n * - `selectable` (boolean)\r\n * - `selected` (boolean)\r\n * - `style` (dictionary)\r\n */\n tapEdge: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of an edge returned when you tap or click it. Read-only.\r\n */\n tapEdgeData: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of a node returned when you hover over it. Read-only.\r\n */\n mouseoverNodeData: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of an edge returned when you hover over it. Read-only.\r\n */\n mouseoverEdgeData: _propTypes2.default.object,\n\n /**\r\n * The list of data dictionaries of all selected nodes (e.g. using\r\n * Shift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only.\r\n */\n selectedNodeData: _propTypes2.default.array,\n\n /**\r\n * The list of data dictionaries of all selected edges (e.g. using\r\n * Shift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only.\r\n */\n selectedEdgeData: _propTypes2.default.array\n};\n\nCytoscape.defaultProps = {\n style: { width: '600px', height: '600px' },\n layout: { name: 'grid' },\n pan: { x: 0, y: 0 },\n zoom: 1,\n minZoom: 1e-50,\n maxZoom: 1e50,\n zoomingEnabled: true,\n userZoomingEnabled: true,\n panningEnabled: true,\n userPanningEnabled: true,\n boxSelectionEnabled: false,\n autolock: false,\n autoungrabify: false,\n autounselectify: false,\n autoRefreshLayout: true\n};\n\nexports.default = Cytoscape;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kYXNoX2N5dG9zY2FwZS8uL3NyYy9saWIvY29tcG9uZW50cy9DeXRvc2NhcGUucmVhY3QuanM/NjQyYyJdLCJuYW1lcyI6WyJDeXRvc2NhcGUiLCJwcm9wcyIsImhhbmRsZUN5IiwiYmluZCIsIl9oYW5kbGVDeUNhbGxlZCIsImV2ZW50IiwiZWxlIiwidGFyZ2V0IiwiaXNQYXJlbnQiLCJpc0NoaWxkbGVzcyIsImlzQ2hpbGQiLCJpc09ycGhhbiIsInJlbmRlcmVkUG9zaXRpb24iLCJyZWxhdGl2ZVBvc2l0aW9uIiwicGFyZW50Iiwic3R5bGUiLCJlZGdlc0RhdGEiLCJjb25uZWN0ZWRFZGdlcyIsIm1hcCIsImRhdGEiLCJjaGlsZHJlbkRhdGEiLCJjaGlsZHJlbiIsImFuY2VzdG9yc0RhdGEiLCJhbmNlc3RvcnMiLCJkZXNjZW5kYW50c0RhdGEiLCJkZXNjZW5kYW50cyIsInNpYmxpbmdzRGF0YSIsInNpYmxpbmdzIiwidGltZVN0YW1wIiwianNvbiIsImNsYXNzZXMiLCJncmFiYmFibGUiLCJncm91cCIsImxvY2tlZCIsInBvc2l0aW9uIiwic2VsZWN0ZWQiLCJzZWxlY3RhYmxlIiwicGFyZW50RGF0YSIsIm5vZGVPYmplY3QiLCJtaWRwb2ludCIsImlzTG9vcCIsImlzU2ltcGxlIiwic291cmNlRGF0YSIsInNvdXJjZSIsInNvdXJjZUVuZHBvaW50IiwidGFyZ2V0RGF0YSIsInRhcmdldEVuZHBvaW50IiwiZWRnZU9iamVjdCIsImN5IiwiX2N5Iiwid2luZG93Iiwib24iLCJnZW5lcmF0ZU5vZGUiLCJzZXRQcm9wcyIsInRhcE5vZGUiLCJ0YXBOb2RlRGF0YSIsImdlbmVyYXRlRWRnZSIsInRhcEVkZ2UiLCJ0YXBFZGdlRGF0YSIsIm1vdXNlb3Zlck5vZGVEYXRhIiwibW91c2VvdmVyRWRnZURhdGEiLCJTRUxFQ1RfVEhSRVNIT0xEIiwic2VsZWN0ZWROb2RlcyIsImNvbGxlY3Rpb24iLCJzZWxlY3RlZEVkZ2VzIiwic2VuZFNlbGVjdGVkTm9kZXNEYXRhIiwiXyIsImRlYm91bmNlIiwibm9kZURhdGEiLCJlbCIsInNlbGVjdGVkTm9kZURhdGEiLCJzZW5kU2VsZWN0ZWRFZGdlc0RhdGEiLCJlZGdlRGF0YSIsInNlbGVjdGVkRWRnZURhdGEiLCJtZXJnZSIsInVubWVyZ2UiLCJyZWZyZXNoTGF5b3V0IiwiYXV0b1JlZnJlc2hMYXlvdXQiLCJsYXlvdXQiLCJydW4iLCJpZCIsImNsYXNzTmFtZSIsImVsZW1lbnRzIiwic3R5bGVzaGVldCIsInBhbiIsInpvb20iLCJwYW5uaW5nRW5hYmxlZCIsInVzZXJQYW5uaW5nRW5hYmxlZCIsIm1pblpvb20iLCJtYXhab29tIiwiem9vbWluZ0VuYWJsZWQiLCJ1c2VyWm9vbWluZ0VuYWJsZWQiLCJib3hTZWxlY3Rpb25FbmFibGVkIiwiYXV0b3VuZ3JhYmlmeSIsImF1dG9sb2NrIiwiYXV0b3Vuc2VsZWN0aWZ5IiwiQ3l0b3NjYXBlQ29tcG9uZW50Iiwibm9ybWFsaXplRWxlbWVudHMiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJvYmplY3QiLCJmdW5jIiwiYXJyYXlPZiIsIm51bWJlciIsImJvb2wiLCJhcnJheSIsImRlZmF1bHRQcm9wcyIsIndpZHRoIiwiaGVpZ2h0IiwibmFtZSIsIngiLCJ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7OytlQVBBOzs7Ozs7QUFVQTs7OztJQUlNQSxTOzs7QUFDRix1QkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBLDBIQUNUQSxLQURTOztBQUdmLGNBQUtDLFFBQUwsR0FBZ0IsTUFBS0EsUUFBTCxDQUFjQyxJQUFkLE9BQWhCO0FBQ0EsY0FBS0MsZUFBTCxHQUF1QixLQUF2QjtBQUplO0FBS2xCOzs7O3FDQUVZQyxLLEVBQU87QUFDaEIsZ0JBQU1DLE1BQU1ELE1BQU1FLE1BQWxCOztBQUVBLGdCQUFNQyxXQUFXRixJQUFJRSxRQUFKLEVBQWpCO0FBQUEs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L0MsaUJBQWE2QyxvQkFBVUUsTUFwT0w7O0FBc09sQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE3QyxhQUFTMkMsb0JBQVVFLE1BN1BEOztBQStQbEI7OztBQUdBNUMsaUJBQWEwQyxvQkFBVUUsTUFsUUw7O0FBb1FsQjs7O0FBR0EzQyx1QkFBbUJ5QyxvQkFBVUUsTUF2UVg7O0FBeVFsQjs7O0FBR0ExQyx1QkFBbUJ3QyxvQkFBVUUsTUE1UVg7O0FBOFFsQjs7OztBQUlBaEMsc0JBQWtCOEIsb0JBQVVPLEtBbFJWOztBQW9SbEI7Ozs7QUFJQWxDLHNCQUFrQjJCLG9CQUFVTztBQXhSVixDQUF0Qjs7QUEyUkEzRyxVQUFVNEcsWUFBVixHQUF5QjtBQUNyQjdGLFdBQU8sRUFBQzhGLE9BQU8sT0FBUixFQUFpQkMsUUFBUSxPQUF6QixFQURjO0FBRXJCaEMsWUFBUSxFQUFDaUMsTUFBTSxNQUFQLEVBRmE7QUFHckIzQixTQUFLLEVBQUM0QixHQUFHLENBQUosRUFBT0MsR0FBRyxDQUFWLEVBSGdCO0FBSXJCNUIsVUFBTSxDQUplO0FBS3JCRyxhQUFTLEtBTFk7QUFNckJDLGFBQVMsSUFOWTtBQU9yQkMsb0JBQWdCLElBUEs7QUFRckJDLHdCQUFvQixJQVJDO0FBU3JCTCxvQkFBZ0IsSUFUSztBQVVyQkMsd0JBQW9CLElBVkM7QUFXckJLLHlCQUFxQixLQVhBO0FBWXJCRSxjQUFVLEtBWlc7QUFhckJELG1CQUFlLEtBYk07QUFjckJFLHFCQUFpQixLQWRJO0FBZXJCbEIsdUJBQW1CO0FBZkUsQ0FBekI7O2tCQWtCZTdFLFMiLCJmaWxlIjoiLi9zcmMvbGliL2NvbXBvbmVudHMvQ3l0b3NjYXBlLnJlYWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEphdmFTY3JpcHQgUmVxdWlyZW1lbnRzOiBjeXRvc2NhcGVcclxuICogUmVhY3QuanMgcmVxdWlyZW1lbnRzOiByZWFjdC1jeXRvc2NhcGVqc1xyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XHJcbmltcG9ydCBDeXRvc2NhcGVDb21wb25lbnQgZnJvbSAncmVhY3QtY3l0b3NjYXBlanMnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuXHJcbi8qKlxyXG5BIENvbXBvbmVudCBMaWJyYXJ5IGZvciBEYXNoIGFpbWVkIGF0IGZhY2lsaXRhdGluZyBuZXR3b3JrIHZpc3VhbGl6YXRpb24gaW5cclxuUHl0aG9uLCB3cmFwcGVkIGFyb3VuZCBbQ3l0b3NjYXBlLmpzXShodHRwOi8vanMuY3l0b3NjYXBlLm9yZy8pLlxyXG4gKi9cclxuY2xhc3MgQ3l0b3NjYXBlIGV4dGVuZHMgQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZUN5ID0gdGhpcy5oYW5kbGVDeS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZUN5Q2FsbGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVOb2RlKGV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICBjb25zdCBpc1BhcmVudCA9IGVsZS5pc1BhcmVudCgpLFxyXG4gICAgICAgICAgICBpc0NoaWxkbGVzcyA9IGVsZS5pc0NoaWxkbGVzcygpLFxyXG4gICAgICAgICAgICBpc0NoaWxkID0gZWxlLmlzQ2hpbGQoKSxcclxuICAgICAgICAgICAgaXNPcnBoYW4gPSBlbGUuaXNPcnBoYW4oKSxcclxuICAgICAgICAgICAgcmVuZGVyZWRQb3NpdGlvbiA9IGVsZS5yZW5kZXJlZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24gPSBlbGUucmVsYXRpdmVQb3NpdGlvbigpLFxyXG4gICAgICAgICAgICBwYXJlbnQgPSBlbGUucGFyZW50KCksXHJcbiAgICAgICAgICAgIHN0eWxlID0gZWxlLnN0eWxlKCk7XHJcblxyXG4gICAgICAgIC8vIFRyaW0gZG93biB0aGUgZWxlbWVudCBvYmplY3RzIHRvIG9ubHkgdGhlIGRhdGEgY29udGFpbmVkXHJcbiAgICAgICAgY29uc3QgZWRnZXNEYXRhID0gZWxlLmNvbm5lY3RlZEVkZ2VzKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2hpbGRyZW5EYXRhID0gZWxlLmNoaWxkcmVuKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgYW5jZXN0b3JzRGF0YSA9IGVsZS5hbmNlc3RvcnMoKS5tYXAoZWxlID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGUuZGF0YSgpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBkZXNjZW5kYW50c0RhdGEgPSBlbGUuZGVzY2VuZGFudHMoKS5tYXAoZWxlID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGUuZGF0YSgpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBzaWJsaW5nc0RhdGEgPSBlbGUuc2libGluZ3MoKS5tYXAoZWxlID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGUuZGF0YSgpXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCB7dGltZVN0YW1wfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgY2xhc3NlcyxcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgZ3JhYmJhYmxlLFxyXG4gICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgbG9ja2VkLFxyXG4gICAgICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICAgICAgc2VsZWN0ZWQsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGVcclxuICAgICAgICB9ID0gZWxlLmpzb24oKTtcclxuXHJcbiAgICAgICAgbGV0IHBhcmVudERhdGE7XHJcbiAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBwYXJlbnREYXRhID0gcGFyZW50LmRhdGEoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwYXJlbnREYXRhID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5vZGVPYmplY3QgPSB7XHJcbiAgICAgICAgICAgIC8vIE5vZGVzIGF0dHJpYnV0ZXNcclxuICAgICAgICAgICAgZWRnZXNEYXRhLFxyXG4gICAgICAgICAgICByZW5kZXJlZFBvc2l0aW9uLFxyXG4gICAgICAgICAgICB0aW1lU3RhbXAsXHJcbiAgICAgICAgICAgIC8vIEZyb20gZWxlLmpzb24oKVxyXG4gICAgICAgICAgICBjbGFzc2VzLFxyXG4gICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICBncmFiYmFibGUsXHJcbiAgICAgICAgICAgIGdyb3VwLFxyXG4gICAgICAgICAgICBsb2NrZWQsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZCxcclxuICAgICAgICAgICAgLy8gQ29tcG91bmQgTm9kZXMgYWRkaXRpb25hbCBhdHRyaWJ1dGVzXHJcbiAgICAgICAgICAgIGFuY2VzdG9yc0RhdGEsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuRGF0YSxcclxuICAgICAgICAgICAgZGVzY2VuZGFudHNEYXRhLFxyXG4gICAgICAgICAgICBwYXJlbnREYXRhLFxyXG4gICAgICAgICAgICBzaWJsaW5nc0RhdGEsXHJcbiAgICAgICAgICAgIGlzUGFyZW50LFxyXG4gICAgICAgICAgICBpc0NoaWxkbGVzcyxcclxuICAgICAgICAgICAgaXNDaGlsZCxcclxuICAgICAgICAgICAgaXNPcnBoYW4sXHJcbiAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24sXHJcbiAgICAgICAgICAgIC8vIFN0eWxpbmdcclxuICAgICAgICAgICAgc3R5bGVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBub2RlT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZW5lcmF0ZUVkZ2UoZXZlbnQpIHtcclxuICAgICAgICBjb25zdCBlbGUgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgICAgIGNvbnN0IG1pZHBvaW50ID0gZWxlLm1pZHBvaW50KCksXHJcbiAgICAgICAgICAgIGlzTG9vcCA9IGVsZS5pc0xvb3AoKSxcclxuICAgICAgICAgICAgaXNTaW1wbGUgPSBlbGUuaXNTaW1wbGUoKSxcclxuICAgICAgICAgICAgc291cmNlRGF0YSA9IGVsZS5zb3VyY2UoKS5kYXRhKCksXHJcbiAgICAgICAgICAgIHNvdXJjZUVuZHBvaW50ID0gZWxlLnNvdXJjZUVuZHBvaW50KCksXHJcbiAgICAgICAgICAgIHN0eWxlID0gZWxlLnN0eWxlKCksXHJcbiAgICAgICAgICAgIHRhcmdldERhdGEgPSBlbGUudGFyZ2V0KCkuZGF0YSgpLFxyXG4gICAgICAgICAgICB0YXJnZXRFbmRwb2ludCA9IGVsZS50YXJnZXRFbmRwb2ludCgpO1xyXG5cclxuICAgICAgICBjb25zdCB7dGltZVN0YW1wfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgY2xhc3NlcyxcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgZ3JhYmJhYmxlLFxyXG4gICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgbG9ja2VkLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZCxcclxuICAgICAgICB9ID0gZWxlLmpzb24oKTtcclxuXHJcbiAgICAgICAgY29uc3QgZWRnZU9iamVjdCA9IHtcclxuICAgICAgICAgICAgLy8gRWRnZXMgYXR0cmlidXRlc1xyXG4gICAgICAgICAgICBpc0xvb3AsXHJcbiAgICAgICAgICAgIGlzU2ltcGxlLFxyXG4gICAgICAgICAgICBtaWRwb2ludCxcclxuICAgICAgICAgICAgc291cmNlRGF0YSxcclxuICAgICAgICAgICAgc291cmNlRW5kcG9pbnQsXHJcbiAgICAgICAgICAgIHRhcmdldERhdGEsXHJcbiAgICAgICAgICAgIHRhcmdldEVuZHBvaW50LFxyXG4gICAgICAgICAgICB0aW1lU3RhbXAsXHJcbiAgICAgICAgICAgIC8vIEZyb20gZWxlLmpzb24oKVxyXG4gICAgICAgICAgICBjbGFzc2VzLFxyXG4gICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICBncmFiYmFibGUsXHJcbiAgICAgICAgICAgIGdyb3VwLFxyXG4gICAgICAgICAgICBsb2NrZWQsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGUsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkLFxyXG4gICAgICAgICAgICAvLyBTdHlsaW5nXHJcbiAgICAgICAgICAgIHN0eWxlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGVkZ2VPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ3koY3kpIHtcclxuICAgICAgICAvLyBJZiB0aGUgY3kgcG9pbnRlciBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGFuZCBoYW5kbGVDeSBoYXMgYWxyZWFkeVxyXG4gICAgICAgIC8vIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhhbiB3ZSBkb24ndCBydW4gdGhpcyBmdW5jdGlvbi5cclxuICAgICAgICBpZiAoY3kgPT09IHRoaXMuX2N5ICYmIHRoaXMuX2hhbmRsZUN5Q2FsbGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY3kgPSBjeTtcclxuICAgICAgICB3aW5kb3cuY3kgPSBjeTtcclxuICAgICAgICB0aGlzLl9oYW5kbGVDeUNhbGxlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIGN5Lm9uKCd0YXAnLCAnbm9kZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZU9iamVjdCA9IHRoaXMuZ2VuZXJhdGVOb2RlKGV2ZW50KTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5zZXRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRQcm9wcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFwTm9kZTogbm9kZU9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICB0YXBOb2RlRGF0YTogbm9kZU9iamVjdC5kYXRhXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjeS5vbigndGFwJywgJ2VkZ2UnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVkZ2VPYmplY3QgPSB0aGlzLmdlbmVyYXRlRWRnZShldmVudCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcEVkZ2U6IGVkZ2VPYmplY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgdGFwRWRnZURhdGE6IGVkZ2VPYmplY3QuZGF0YVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ21vdXNlb3ZlcicsICdub2RlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdXNlb3Zlck5vZGVEYXRhOiBldmVudC50YXJnZXQuZGF0YSgpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCdtb3VzZW92ZXInLCAnZWRnZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VzZW92ZXJFZGdlRGF0YTogZXZlbnQudGFyZ2V0LmRhdGEoKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBTRUxFQ1RFRCBEQVRBXHJcbiAgICAgICAgY29uc3QgU0VMRUNUX1RIUkVTSE9MRCA9IDEwMDtcclxuXHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlcyA9IGN5LmNvbGxlY3Rpb24oKTtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZEVkZ2VzID0gY3kuY29sbGVjdGlvbigpO1xyXG5cclxuICAgICAgICBjb25zdCBzZW5kU2VsZWN0ZWROb2Rlc0RhdGEgPSBfLmRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyByZXBldGl0aXZlbHkgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBub2RlIGlzIHNlbGVjdGVkXHJcbiAgICAgICAgICAgIG9yIHVuc2VsZWN0ZWQsIGJ1dCBrZWVwcyBiZWluZyBkZWJvdW5jZWQgaWYgaXQgaXMgY2FsbGVkIGFnYWluXHJcbiAgICAgICAgICAgIHdpdGhpbiAxMDAgbXMgKGdpdmVuIGJ5IFNFTEVDVF9USFJFU0hPTEQpLiBFZmZlY3RpdmVseSwgaXQgb25seVxyXG4gICAgICAgICAgICBydW5zIHdoZW4gYWxsIHRoZSBub2RlcyBoYXZlIGJlZW4gY29ycmVjdGx5IHNlbGVjdGVkL3Vuc2VsZWN0ZWQgYW5kXHJcbiAgICAgICAgICAgIGFkZGVkL3JlbW92ZWQgZnJvbSB0aGUgc2VsZWN0ZWROb2RlcyBjb2xsZWN0aW9uLCBhbmQgdGhlbiB1cGRhdGVzXHJcbiAgICAgICAgICAgIHRoZSBzZWxlY3RlZE5vZGVEYXRhIHByb3AuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBjb25zdCBub2RlRGF0YSA9IHNlbGVjdGVkTm9kZXMubWFwKGVsID0+IGVsLmRhdGEoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTm9kZURhdGE6IG5vZGVEYXRhXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgU0VMRUNUX1RIUkVTSE9MRCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbmRTZWxlY3RlZEVkZ2VzRGF0YSA9IF8uZGVib3VuY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlZGdlRGF0YSA9IHNlbGVjdGVkRWRnZXMubWFwKGVsID0+IGVsLmRhdGEoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWRnZURhdGE6IGVkZ2VEYXRhXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgU0VMRUNUX1RIUkVTSE9MRCk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCdzZWxlY3QnLCAnbm9kZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICAgICAgc2VsZWN0ZWROb2Rlcy5tZXJnZShlbGUpO1xyXG4gICAgICAgICAgICBzZW5kU2VsZWN0ZWROb2Rlc0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ3Vuc2VsZWN0JywgJ25vZGUnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZSA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgICAgICAgIHNlbGVjdGVkTm9kZXMudW5tZXJnZShlbGUpO1xyXG4gICAgICAgICAgICBzZW5kU2VsZWN0ZWROb2Rlc0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ3NlbGVjdCcsICdlZGdlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbGUgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgICAgICAgICBzZWxlY3RlZEVkZ2VzLm1lcmdlKGVsZSk7XHJcbiAgICAgICAgICAgIHNlbmRTZWxlY3RlZEVkZ2VzRGF0YSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjeS5vbigndW5zZWxlY3QnLCAnZWRnZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICAgICAgc2VsZWN0ZWRFZGdlcy51bm1lcmdlKGVsZSk7XHJcbiAgICAgICAgICAgIHNlbmRTZWxlY3RlZEVkZ2VzRGF0YSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgLy8gUmVmcmVzaCBMYXlvdXQgaWYgbmVlZGVkXHJcbiAgICAgICAgY29uc3QgcmVmcmVzaExheW91dCA9IF8uZGVib3VuY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgICAgICBhdXRvUmVmcmVzaExheW91dCxcclxuICAgICAgICAgICAgICAgIGxheW91dFxyXG4gICAgICAgICAgICB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICAgICAgICAgIGlmIChhdXRvUmVmcmVzaExheW91dCkge1xyXG4gICAgICAgICAgICAgICAgY3kubGF5b3V0KGxheW91dCkucnVuKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIFNFTEVDVF9USFJFU0hPTEQpO1xyXG5cclxuICAgICAgICBjeS5vbignYWRkIHJlbW92ZScsICgpID0+IHtcclxuICAgICAgICAgICAgcmVmcmVzaExheW91dCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIC8vIEhUTUwgYXR0cmlidXRlIHByb3BzXHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICBzdHlsZSxcclxuICAgICAgICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAvLyBDb21tb24gcHJvcHNcclxuICAgICAgICAgICAgZWxlbWVudHMsXHJcbiAgICAgICAgICAgIHN0eWxlc2hlZXQsXHJcbiAgICAgICAgICAgIGxheW91dCxcclxuICAgICAgICAgICAgLy8gVmlld3BvcnQgTWFuaXB1bGF0aW9uXHJcbiAgICAgICAgICAgIHBhbixcclxuICAgICAgICAgICAgem9vbSxcclxuICAgICAgICAgICAgLy8gVmlld3BvcnQgTXV0YWJpbGl0eSBhbmQgZ2VzdHVyZSBUb2dnbGluZ1xyXG4gICAgICAgICAgICBwYW5uaW5nRW5hYmxlZCxcclxuICAgICAgICAgICAgdXNlclBhbm5pbmdFbmFibGVkLFxyXG4gICAgICAgICAgICBtaW5ab29tLFxyXG4gICAgICAgICAgICBtYXhab29tLFxyXG4gICAgICAgICAgICB6b29taW5nRW5hYmxlZCxcclxuICAgICAgICAgICAgdXNlclpvb21pbmdFbmFibGVkLFxyXG4gICAgICAgICAgICBib3hTZWxlY3Rpb25FbmFibGVkLFxyXG4gICAgICAgICAgICBhdXRvdW5ncmFiaWZ5LFxyXG4gICAgICAgICAgICBhdXRvbG9jayxcclxuICAgICAgICAgICAgYXV0b3Vuc2VsZWN0aWZ5XHJcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxDeXRvc2NhcGVDb21wb25lbnRcclxuICAgICAgICAgICAgICAgIGlkPXtpZH1cclxuICAgICAgICAgICAgICAgIGN5PXt0aGlzLmhhbmRsZUN5fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGV9XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50cz17Q3l0b3NjYXBlQ29tcG9uZW50Lm5vcm1hbGl6ZUVsZW1lbnRzKGVsZW1lbnRzKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQ9e3N0eWxlc2hlZXR9XHJcbiAgICAgICAgICAgICAgICBsYXlvdXQ9e2xheW91dH1cclxuICAgICAgICAgICAgICAgIHBhbj17cGFufVxyXG4gICAgICAgICAgICAgICAgem9vbT17em9vbX1cclxuICAgICAgICAgICAgICAgIHBhbm5pbmdFbmFibGVkPXtwYW5uaW5nRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgIHVzZXJQYW5uaW5nRW5hYmxlZD17dXNlclBhbm5pbmdFbmFibGVkfVxyXG4gICAgICAgICAgICAgICAgbWluWm9vbT17bWluWm9vbX1cclxuICAgICAgICAgICAgICAgIG1heFpvb209e21heFpvb219XHJcbiAgICAgICAgICAgICAgICB6b29taW5nRW5hYmxlZD17em9vbWluZ0VuYWJsZWR9XHJcbiAgICAgICAgICAgICAgICB1c2VyWm9vbWluZ0VuYWJsZWQ9e3VzZXJab29taW5nRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgIGJveFNlbGVjdGlvbkVuYWJsZWQ9e2JveFNlbGVjdGlvbkVuYWJsZWR9XHJcbiAgICAgICAgICAgICAgICBhdXRvdW5ncmFiaWZ5PXthdXRvdW5ncmFiaWZ5fVxyXG4gICAgICAgICAgICAgICAgYXV0b2xvY2s9e2F1dG9sb2NrfVxyXG4gICAgICAgICAgICAgICAgYXV0b3Vuc2VsZWN0aWZ5PXthdXRvdW5zZWxlY3RpZnl9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuQ3l0b3NjYXBlLnByb3BUeXBlcyA9IHtcclxuICAgIC8vIEhUTUwgYXR0cmlidXRlIHByb3BzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGlzIGNvbXBvbmVudCBpbiBEYXNoIGNhbGxiYWNrcy5cclxuICAgICAqL1xyXG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBjbGFzcyBuYW1lIG9mIHRoZSBlbGVtZW50ICh0aGUgdmFsdWUgb2YgYW4gZWxlbWVudCdzIGh0bWxcclxuICAgICAqIGNsYXNzIGF0dHJpYnV0ZSkuXHJcbiAgICAgKi9cclxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBpbmxpbmUgc3R5bGVzIHRvIHRoZSByb290IGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8vIERhc2ggc3BlY2lmaWMgcHJvcHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIERhc2gtYXNzaWduZWQgY2FsbGJhY2sgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIGFueSBvZiB0aGVcclxuICAgICAqIHByb3BlcnRpZXMgY2hhbmdlLlxyXG4gICAgICovXHJcbiAgICBzZXRQcm9wczogUHJvcFR5cGVzLmZ1bmMsXHJcblxyXG4gICAgLy8gQ29tbW9uIHByb3BzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIGxpc3Qgb2YgZGljdGlvbmFyaWVzIHJlcHJlc2VudGluZyB0aGUgZWxlbWVudHMgb2YgdGhlIG5ldHdvcmtzLlxyXG4gICAgICogICAgIDEuIEVhY2ggZGljdGlvbmFyeSBkZXNjcmliZXMgYW4gZWxlbWVudCwgYW5kIHNwZWNpZmllcyBpdHMgcHVycG9zZS5cclxuICAgICAqICAgICAgICAgLSBgZ3JvdXBgIChzdHJpbmcpOiBFaXRoZXIgJ25vZGVzJyBvciAnZWRnZXMnLiBJZiBub3QgZ2l2ZW4sIGl0J3MgYXV0b21hdGljYWxseSBpbmZlcnJlZC5cclxuICAgICAqICAgICAgICAgLSBgZGF0YWAgKGRpY3Rpb25hcnkpOiBFbGVtZW50IHNwZWNpZmljIGRhdGEuXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgaWRgIChzdHJpbmcpOiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQsIHVzZWZ1bCBmb3Igc2VsZWN0b3JzIGFuZCBlZGdlcy4gUmFuZG9tbHkgYXNzaWduZWQgaWYgbm90IGdpdmVuLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYGxhYmVsYCAoc3RyaW5nKTogT3B0aW9uYWwgbmFtZSBmb3IgdGhlIGVsZW1lbnQsIHVzZWZ1bCB3aGVuIGBkYXRhKGxhYmVsKWAgaXMgZ2l2ZW4gdG8gYSBzdHlsZSdzIGBjb250ZW50YCBvciBgbGFiZWxgLiBJdCBpcyBvbmx5IGEgY29udmVudGlvbi5cclxuICAgICAqICAgICAgICAgICAgICAtIGBwYXJlbnRgIChzdHJpbmcpOiBPbmx5IGZvciBub2Rlcy4gT3B0aW9uYWwgcmVmZXJlbmNlIHRvIGFub3RoZXIgbm9kZS4gTmVlZGVkIHRvIGNyZWF0ZSBjb21wb3VuZCBub2Rlcy5cclxuICAgICAqICAgICAgICAgICAgICAtIGBzb3VyY2VgIChzdHJpbmcpOiBPbmx5IGZvciBlZGdlcy4gVGhlIGlkIG9mIHRoZSBzb3VyY2Ugbm9kZSwgd2hpY2ggaXMgd2hlcmUgdGhlIGVkZ2Ugc3RhcnRzLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHRhcmdldGAgKHN0cmluZyk6IE9ubHkgZm9yIGVkZ2VzLiBUaGUgaWQgb2YgdGhlIHRhcmdldCBub2RlLCB3aGVyZSB0aGUgZWRnZSBlbmRzLlxyXG4gICAgICogICAgICAgICAtIGBwb3NpdGlvbmAgKGRpY3Rpb25hcnkpOiBPbmx5IGZvciBub2Rlcy4gVGhlIHBvc2l0aW9uIG9mIHRoZSBub2RlLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHhgIChudW1iZXIpOiBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBub2RlLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHlgIChudW1iZXIpOiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBub2RlLlxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RlZGAgKGJvb2xlYW4pOiBJZiB0aGUgZWxlbWVudCBpcyBzZWxlY3RlZCB1cG9uIGluaXRpYWxpc2F0aW9uLlxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RhYmxlYCAoYm9vbGVhbik6IElmIHRoZSBlbGVtZW50IGNhbiBiZSBzZWxlY3RlZC5cclxuICAgICAqICAgICAgICAgLSBgbG9ja2VkYCAoYm9vbGVhbik6IE9ubHkgZm9yIG5vZGVzLiBJZiB0aGUgcG9zaXRpb24gaXMgaW1tdXRhYmxlLlxyXG4gICAgICogICAgICAgICAtIGBncmFiYmFibGVgIChib29sZWFuKTogT25seSBmb3Igbm9kZXMuIElmIHRoZSBub2RlIGNhbiBiZSBncmFiYmVkIGFuZCBtb3ZlZCBieSB0aGUgdXNlci5cclxuICAgICAqICAgICAgICAgLSBgY2xhc3Nlc2AgKHN0cmluZyk6IFNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgb2YgY2xhc3MgbmFtZXMgb2YgdGhlIGVsZW1lbnQuIFRob3NlIGNsYXNzZXMgY2FuIGJlIHNlbGVjdGVkIGJ5IGEgc3R5bGUgc2VsZWN0b3IuXHJcbiAgICAgKlxyXG4gICAgICogICAgIDIuIFRoZSBbb2ZmaWNpYWwgQ3l0b3NjYXBlLmpzIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9qcy5jeXRvc2NhcGUub3JnLyNub3RhdGlvbi9lbGVtZW50cy1qc29uKSBvZmZlcnMgYW4gZXh0ZW5zaXZlIG92ZXJ2aWV3IGFuZCBleGFtcGxlcyBvZiBlbGVtZW50IGRlY2xhcmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBlbGVtZW50czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIGxpc3Qgb2YgZGljdGlvbmFyaWVzIHJlcHJlc2VudGluZyB0aGUgc3R5bGVzIG9mIHRoZSBlbGVtZW50cy5cclxuICAgICAqICAgICAxLiBFYWNoIGRpY3Rpb25hcnkgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyBrZXlzOlxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RvcmAgKHN0cmluZyk6IFdoaWNoIGVsZW1lbnRzIHlvdSBhcmUgc3R5bGluZy4gR2VuZXJhbGx5LCB5b3Ugc2VsZWN0IGEgZ3JvdXAgb2YgZWxlbWVudHMgKG5vZGUsIGVkZ2VzLCBib3RoKSwgYSBjbGFzcyAodGhhdCB5b3UgZGVjbGFyZSBpbiB0aGUgZWxlbWVudCBkaWN0aW9uYXJ5KSwgb3IgYW4gZWxlbWVudCBieSBJRC5cclxuICAgICAqICAgICAgICAgLSBgc3R5bGVgIChkaWN0aW9uYXJ5KTogV2hhdCBhc3BlY3RzIG9mIHRoZSBlbGVtZW50cyB5b3Ugd2FudCB0byBtb2RpZnkuIFRoaXMgY291bGQgYmUgdGhlIHNpemUgb3IgY29sb3Igb2YgYSBub2RlLCB0aGUgc2hhcGUgb2YgYW4gZWRnZSBhcnJvdywgb3IgbWFueSBtb3JlLlxyXG4gICAgICpcclxuICAgICAqICAgICAyLiBCb3RoIFt0aGUgc2VsZWN0b3Igc3RyaW5nXShodHRwOi8vanMuY3l0b3NjYXBlLm9yZy8jc2VsZWN0b3JzKSBhbmRcclxuICAgICAqICAgICBbdGhlIHN0eWxlIGRpY3Rpb25hcnldKGh0dHA6Ly9qcy5jeXRvc2NhcGUub3JnLyNzdHlsZS9ub2RlLWJvZHkpIGFyZVxyXG4gICAgICogICAgIGV4aGF1c3RpdmVseSBkb2N1bWVudGVkIGluIHRoZSBDeXRvc2NhcGUuanMgZG9jcy4gQWx0aG91Z2ggbWV0aG9kcyBzdWNoXHJcbiAgICAgKiAgICAgYXMgYGN5LmVsZW1lbnRzKC4uLilgIGFuZCBgY3kuZmlsdGVyKC4uLilgIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgc2VsZWN0b3JcclxuICAgICAqICAgICBzdHJpbmcgc3ludGF4IHN0YXlzIHRoZSBzYW1lLlxyXG4gICAgICovXHJcbiAgICBzdHlsZXNoZWV0OiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgZGljdGlvbmFyeSBzcGVjaWZ5aW5nIGhvdyB0byBzZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB5b3VyXHJcbiAgICAgKiBncmFwaC4gVGhlIGAnbmFtZSdgIGtleSBpcyByZXF1aXJlZCwgYW5kIGluZGljYXRlcyB3aGljaCBsYXlvdXQgKGFsZ29yaXRobSkgdG9cclxuICAgICAqIHVzZS5cclxuICAgICAqICAgICAxLiBUaGUgbGF5b3V0cyBhdmFpbGFibGUgYnkgZGVmYXVsdCBhcmU6XHJcbiAgICAgKiAgICAgICAgIC0gYHJhbmRvbWA6IFJhbmRvbWx5IGFzc2lnbnMgcG9zaXRpb25zXHJcbiAgICAgKiAgICAgICAgIC0gYHByZXNldGA6IEFzc2lnbnMgcG9zaXRpb24gYmFzZWQgb24gdGhlIGBwb3NpdGlvbmAga2V5IGluIGVsZW1lbnQgZGljdGlvbmFyaWVzXHJcbiAgICAgKiAgICAgICAgIC0gYGNpcmNsZWA6IFNpbmdsZS1sZXZlbCBjaXJjbGUsIHdpdGggb3B0aW9uYWwgcmFkaXVzXHJcbiAgICAgKiAgICAgICAgIC0gYGNvbmNlbnRyaWNgOiBNdWx0aS1sZXZlbCBjaXJjbGUsIHdpdGggb3B0aW9uYWwgcmFkaXVzXHJcbiAgICAgKiAgICAgICAgIC0gYGdyaWRgOiBTcXVhcmUgZ3JpZCwgb3B0aW9uYWxseSB3aXRoIG51bWJlcnMgb2YgYHJvd3NgIGFuZCBgY29sc2BcclxuICAgICAqICAgICAgICAgLSBgYnJlYWR0aGZpcnN0YDogVHJlZSBzdHJ1Y3R1cmUgYnVpbHQgdXNpbmcgQkZTLCB3aXRoIG9wdGlvbmFsIGByb290c2BcclxuICAgICAqICAgICAgICAgLSBgY29zZWA6IEZvcmNlLWRpcmVjdGVkIHBoeXNpY3Mgc2ltdWxhdGlvblxyXG4gICAgICpcclxuICAgICAqICAgICAyLiBTb21lIGV4dGVybmFsIGxheW91dHMgYXJlIGFsc28gaW5jbHVkZWQuIFRvIHVzZSB0aGVtLCBydW5cclxuICAgICAqICAgICBgZGFzaF9jeXRvc2NhcGUubG9hZF9leHRyYV9sYXlvdXRzKClgIGJlZm9yZSBjcmVhdGluZyB5b3VyIERhc2ggYXBwLiBCZSBjYXJlZnVsIGFib3V0XHJcbiAgICAgKiAgICAgdXNpbmcgdGhlIGV4dHJhIGxheW91dHMgd2hlbiBub3QgbmVjZXNzYXJ5LCBzaW5jZSB0aGV5IHJlcXVpcmUgc3VwcGxlbWVudGFyeSBiYW5kd2lkdGhcclxuICAgICAqICAgICBmb3IgbG9hZGluZywgd2hpY2ggaW1wYWN0cyB0aGUgc3RhcnR1cCB0aW1lIG9mIHRoZSBhcHAuXHJcbiAgICAgKiAgICAgICAgIC0gYGNvc2UtYmlsa2VudGA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLWNvc2UtYmlsa2VudFxyXG4gICAgICogICAgICAgICAtIGBjb2xhYDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtY29sYVxyXG4gICAgICogICAgICAgICAtIGBldWxlcmA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLWRhZ3JlXHJcbiAgICAgKiAgICAgICAgIC0gYHNwcmVhZGA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLXNwcmVhZFxyXG4gICAgICogICAgICAgICAtIGBkYWdyZWA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLWRhZ3JlXHJcbiAgICAgKiAgICAgICAgIC0gYGtsYXlgOiBodHRwczovL2dpdGh1Yi5jb20vY3l0b3NjYXBlL2N5dG9zY2FwZS5qcy1rbGF5XHJcbiAgICAgKlxyXG4gICAgICogICAgIDMuIFRoZSBrZXlzIGFjY2VwdGVkIGJ5IGBsYXlvdXRgIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBhbGdvcml0aG0sIGJ1dCBzb21lXHJcbiAgICAgKiAgICAga2V5cyBhcmUgYWNjZXB0ZWQgYnkgYWxsIGxheW91dHM6XHJcbiAgICAgKiAgICAgICAgIC0gYGZpdGAgKGJvb2xlYW4pOiBXaGV0aGVyIHRvIHJlbmRlciB0aGUgbm9kZXMgaW4gb3JkZXIgdG8gZml0IHRoZSBjYW52YXMuXHJcbiAgICAgKiAgICAgICAgIC0gYHBhZGRpbmdgIChudW1iZXIpOiBQYWRkaW5nIGFyb3VuZCB0aGUgc2lkZXMgb2YgdGhlIGNhbnZhcywgaWYgZml0IGlzIGVuYWJsZWQuXHJcbiAgICAgKiAgICAgICAgIC0gYGFuaW1hdGVgIChib29sZWFuKTogV2hldGhlciB0byBhbmltYXRlIGNoYW5nZSBpbiBwb3NpdGlvbiB3aGVuIHRoZSBsYXlvdXQgY2hhbmdlcy5cclxuICAgICAqICAgICAgICAgLSBgYW5pbWF0aW9uRHVyYXRpb25gIChudW1iZXIpOiBEdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbWlsbGlzZWNvbmRzLCBpZiBlbmFibGVkLlxyXG4gICAgICogICAgICAgICAtIGBib3VuZGluZ0JveGAgKGRpY3Rpb25hcnkpOiBIb3cgdG8gY29uc3RyYWluIHRoZSBsYXlvdXQgaW4gYSBzcGVjaWZpYyBhcmVhLiBLZXlzIGFjY2VwdGVkIGFyZSBlaXRoZXIgYHgxLCB5MSwgeDIsIHkyYCBvciBgeDEsIHkxLCB3LCBoYCwgYWxsIG9mIHdoaWNoIHJlY2VpdmUgYSBwaXhlbCB2YWx1ZS5cclxuICAgICAqXHJcbiAgICAgKiAgICAgNC4gVGhlIGNvbXBsZXRlIGxpc3Qgb2YgbGF5b3V0cyBhbmQgdGhlaXIgYWNjZXB0ZWQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlXHJcbiAgICAgKiAgICAgb24gdGhlIFtDeXRvc2NhcGUuanMgZG9jc10oaHR0cDovL2pzLmN5dG9zY2FwZS5vcmcvI2xheW91dHMpLiBGb3IgdGhlXHJcbiAgICAgKiAgICAgZXh0ZXJuYWwgbGF5b3V0cywgdGhlIG9wdGlvbnMgYXJlIGxpc3RlZCBpbiB0aGUgXCJBUElcIiBzZWN0aW9uIG9mIHRoZVxyXG4gICAgICogICAgIFJFQURNRS5cclxuICAgICAqICAgICBOb3RlIHRoYXQgY2VydGFpbiBrZXlzIGFyZSBub3Qgc3VwcG9ydGVkIGluIERhc2ggc2luY2UgdGhlIHZhbHVlIGlzIGFcclxuICAgICAqICAgICBKYXZhU2NyaXB0IGZ1bmN0aW9uIG9yIGEgY2FsbGJhY2suIFBsZWFzZSB2aXNpdCBbdGhpcyBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL3Bsb3RseS9kYXNoLWN5dG9zY2FwZS9pc3N1ZXMvMjUpXHJcbiAgICAgKiAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXHJcbiAgICAgKi9cclxuICAgIGxheW91dDogUHJvcFR5cGVzLm9iamVjdCxcclxuXHJcbiAgICAvLyBWaWV3cG9ydCBNYW5pcHVsYXRpb25cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpY3Rpb25hcnkgaW5kaWNhdGluZyB0aGUgaW5pdGlhbCBwYW5uaW5nIHBvc2l0aW9uIG9mIHRoZSBncmFwaC4gVGhlXHJcbiAgICAgKiBmb2xsb3dpbmcga2V5cyBhcmUgYWNjZXB0ZWQ6XHJcbiAgICAgKiAgICAgLSBgeGAgKG51bWJlcik6IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIHBvc2l0aW9uLlxyXG4gICAgICogICAgIC0gYHlgIChudW1iZXIpOiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBwb3NpdGlvbi5cclxuICAgICAqL1xyXG4gICAgcGFuOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGluaXRpYWwgem9vbSBsZXZlbCBvZiB0aGUgZ3JhcGguIFlvdSBjYW4gc2V0IGBtaW5ab29tYCBhbmRcclxuICAgICAqIGBtYXhab29tYCB0byBzZXQgcmVzdHJpY3Rpb25zIG9uIHRoZSB6b29tIGxldmVsLlxyXG4gICAgICovXHJcbiAgICB6b29tOiBQcm9wVHlwZXMubnVtYmVyLFxyXG5cclxuICAgIC8vIFZpZXdwb3J0IE11dGFiaWxpdHkgYW5kIGdlc3R1cmUgVG9nZ2xpbmdcclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBwYW5uaW5nIHRoZSBncmFwaCBpcyBlbmFibGVkIChpLmUuLCB0aGUgcG9zaXRpb24gb2YgdGhlIGdyYXBoIGlzXHJcbiAgICAgKiBtdXRhYmxlIG92ZXJhbGwpLlxyXG4gICAgICovXHJcbiAgICBwYW5uaW5nRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHVzZXIgZXZlbnRzIChlLmcuIGRyYWdnaW5nIHRoZSBncmFwaCBiYWNrZ3JvdW5kKSBhcmUgYWxsb3dlZCB0b1xyXG4gICAgICogcGFuIHRoZSBncmFwaC5cclxuICAgICAqL1xyXG4gICAgdXNlclBhbm5pbmdFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgbWluaW11bSBib3VuZCBvbiB0aGUgem9vbSBsZXZlbCBvZiB0aGUgZ3JhcGguIFRoZSB2aWV3cG9ydCBjYW4gbm90IGJlXHJcbiAgICAgKiBzY2FsZWQgc21hbGxlciB0aGFuIHRoaXMgem9vbSBsZXZlbC5cclxuICAgICAqL1xyXG4gICAgbWluWm9vbTogUHJvcFR5cGVzLm51bWJlcixcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgbWF4aW11bSBib3VuZCBvbiB0aGUgem9vbSBsZXZlbCBvZiB0aGUgZ3JhcGguIFRoZSB2aWV3cG9ydCBjYW4gbm90IGJlXHJcbiAgICAgKiBzY2FsZWQgbGFyZ2VyIHRoYW4gdGhpcyB6b29tIGxldmVsLlxyXG4gICAgICovXHJcbiAgICBtYXhab29tOiBQcm9wVHlwZXMubnVtYmVyLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB6b29taW5nIHRoZSBncmFwaCBpcyBlbmFibGVkIChpLmUuLCB0aGUgem9vbSBsZXZlbCBvZiB0aGUgZ3JhcGhcclxuICAgICAqIGlzIG11dGFibGUgb3ZlcmFsbCkuXHJcbiAgICAgKi9cclxuICAgIHpvb21pbmdFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdXNlciBldmVudHMgKGUuZy4gZHJhZ2dpbmcgdGhlIGdyYXBoIGJhY2tncm91bmQpIGFyZSBhbGxvd2VkXHJcbiAgICAgKiB0byBwYW4gdGhlIGdyYXBoLlxyXG4gICAgICovXHJcbiAgICB1c2VyWm9vbWluZ0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBib3ggc2VsZWN0aW9uIChpLmUuIGRyYWcgYSBib3ggb3ZlcmxheSBhcm91bmQsIGFuZCByZWxlYXNlIGl0XHJcbiAgICAgKiB0byBzZWxlY3QpIGlzIGVuYWJsZWQuIElmIGVuYWJsZWQsIHRoZSB1c2VyIG11c3QgdGFwaG9sZCB0byBwYW4gdGhlIGdyYXBoLlxyXG4gICAgICovXHJcbiAgICBib3hTZWxlY3Rpb25FbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgbm9kZXMgc2hvdWxkIGJlIHVuZ3JhYmlmaWVkIChub3QgZ3JhYmJhYmxlIGJ5IHVzZXIpIGJ5XHJcbiAgICAgKiBkZWZhdWx0IChpZiB0cnVlLCBvdmVycmlkZXMgaW5kaXZpZHVhbCBub2RlIHN0YXRlKS5cclxuICAgICAqL1xyXG4gICAgYXV0b3VuZ3JhYmlmeTogUHJvcFR5cGVzLmJvb2wsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIG5vZGVzIHNob3VsZCBiZSBsb2NrZWQgKG5vdCBkcmFnZ2FibGUgYXQgYWxsKSBieSBkZWZhdWx0XHJcbiAgICAgKiAoaWYgdHJ1ZSwgb3ZlcnJpZGVzIGluZGl2aWR1YWwgbm9kZSBzdGF0ZSkuXHJcbiAgICAgKi9cclxuICAgIGF1dG9sb2NrOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgbm9kZXMgc2hvdWxkIGJlIHVuc2VsZWN0aWZpZWQgKGltbXV0YWJsZSBzZWxlY3Rpb24gc3RhdGUpIGJ5XHJcbiAgICAgKiBkZWZhdWx0IChpZiB0cnVlLCBvdmVycmlkZXMgaW5kaXZpZHVhbCBlbGVtZW50IHN0YXRlKS5cclxuICAgICAqL1xyXG4gICAgYXV0b3Vuc2VsZWN0aWZ5OiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdGhlIGxheW91dCBzaG91bGQgYmUgcmVmcmVzaGVkIHdoZW4gZWxlbWVudHMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuXHJcbiAgICAgKi9cclxuICAgIGF1dG9SZWZyZXNoTGF5b3V0OiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvLyBVc2VyIEV2ZW50cyBQcm9wc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbXBsZXRlIG5vZGUgZGljdGlvbmFyeSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuIFJlYWQtb25seS5cclxuICAgICAqXHJcbiAgICAgKiAgICAgMS4gTm9kZS1zcGVjaWZpYyBpdGVtczpcclxuICAgICAqICAgICAgICAgLSBgZWRnZXNEYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgcmVuZGVyZWRQb3NpdGlvbmAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHRpbWVTdGFtcGAgKG51bWJlcilcclxuICAgICAqXHJcbiAgICAgKiAgICAgMi4gR2VuZXJhbCBpdGVtcyAoZm9yIGFsbCBlbGVtZW50cyk6XHJcbiAgICAgKiAgICAgICAgIC0gYGNsYXNzZXNgIChzdHJpbmcpXHJcbiAgICAgKiAgICAgICAgIC0gYGRhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBncmFiYmFibGVgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBncm91cGAgKHN0cmluZylcclxuICAgICAqICAgICAgICAgLSBgbG9ja2VkYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgcG9zaXRpb25gIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RhYmxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgc2VsZWN0ZWRgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzdHlsZWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKlxyXG4gICAgICogICAgIDMuIEl0ZW1zIGZvciBjb21wb3VuZCBub2RlczpcclxuICAgICAqICAgICAgICAgLSBgYW5jZXN0b3JzRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGNoaWxkcmVuRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGRlc2NlbmRhbnRzRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHBhcmVudERhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzaWJsaW5nc0RhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBpc1BhcmVudGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzQ2hpbGRsZXNzYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgaXNDaGlsZGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzT3JwaGFuYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgcmVsYXRpdmVQb3NpdGlvbmAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKi9cclxuICAgIHRhcE5vZGU6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSBkaWN0aW9uYXJ5IG9mIGEgbm9kZSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuIFJlYWQtb25seS5cclxuICAgICAqL1xyXG4gICAgdGFwTm9kZURhdGE6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29tcGxldGUgZWRnZSBkaWN0aW9uYXJ5IHJldHVybmVkIHdoZW4geW91IHRhcCBvciBjbGljayBpdC4gUmVhZC1vbmx5LlxyXG4gICAgICpcclxuICAgICAqICAgICAxLiBFZGdlLXNwZWNpZmljIGl0ZW1zOlxyXG4gICAgICogICAgICAgICAtIGBpc0xvb3BgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBpc1NpbXBsZWAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYG1pZHBvaW50YCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgc291cmNlRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHNvdXJjZUVuZHBvaW50YCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgdGFyZ2V0RGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHRhcmdldEVuZHBvaW50YCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgdGltZVN0YW1wYCAobnVtYmVyKVxyXG4gICAgICpcclxuICAgICAqICAgICAyLiBHZW5lcmFsIGl0ZW1zIChmb3IgYWxsIGVsZW1lbnRzKTpcclxuICAgICAqICAgICAgICAgLSBgY2xhc3Nlc2AgKHN0cmluZylcclxuICAgICAqICAgICAgICAgLSBgZGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGdyYWJiYWJsZWAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGdyb3VwYCAoc3RyaW5nKVxyXG4gICAgICogICAgICAgICAtIGBsb2NrZWRgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RhYmxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgc2VsZWN0ZWRgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzdHlsZWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKi9cclxuICAgIHRhcEVkZ2U6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSBkaWN0aW9uYXJ5IG9mIGFuIGVkZ2UgcmV0dXJuZWQgd2hlbiB5b3UgdGFwIG9yIGNsaWNrIGl0LiBSZWFkLW9ubHkuXHJcbiAgICAgKi9cclxuICAgIHRhcEVkZ2VEYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRhdGEgZGljdGlvbmFyeSBvZiBhIG5vZGUgcmV0dXJuZWQgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdC4gUmVhZC1vbmx5LlxyXG4gICAgICovXHJcbiAgICBtb3VzZW92ZXJOb2RlRGF0YTogUHJvcFR5cGVzLm9iamVjdCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkYXRhIGRpY3Rpb25hcnkgb2YgYW4gZWRnZSByZXR1cm5lZCB3aGVuIHlvdSBob3ZlciBvdmVyIGl0LiBSZWFkLW9ubHkuXHJcbiAgICAgKi9cclxuICAgIG1vdXNlb3ZlckVkZ2VEYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxpc3Qgb2YgZGF0YSBkaWN0aW9uYXJpZXMgb2YgYWxsIHNlbGVjdGVkIG5vZGVzIChlLmcuIHVzaW5nXHJcbiAgICAgKiBTaGlmdCtDbGljayB0byBzZWxlY3QgbXVsdGlwbGUgbm9kZXMsIG9yIFNoaWZ0K0RyYWcgdG8gdXNlIGJveCBzZWxlY3Rpb24pLiBSZWFkLW9ubHkuXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdGVkTm9kZURhdGE6IFByb3BUeXBlcy5hcnJheSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsaXN0IG9mIGRhdGEgZGljdGlvbmFyaWVzIG9mIGFsbCBzZWxlY3RlZCBlZGdlcyAoZS5nLiB1c2luZ1xyXG4gICAgICogU2hpZnQrQ2xpY2sgdG8gc2VsZWN0IG11bHRpcGxlIG5vZGVzLCBvciBTaGlmdCtEcmFnIHRvIHVzZSBib3ggc2VsZWN0aW9uKS4gUmVhZC1vbmx5LlxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZEVkZ2VEYXRhOiBQcm9wVHlwZXMuYXJyYXlcclxufTtcclxuXHJcbkN5dG9zY2FwZS5kZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBzdHlsZToge3dpZHRoOiAnNjAwcHgnLCBoZWlnaHQ6ICc2MDBweCd9LFxyXG4gICAgbGF5b3V0OiB7bmFtZTogJ2dyaWQnfSxcclxuICAgIHBhbjoge3g6IDAsIHk6IDB9LFxyXG4gICAgem9vbTogMSxcclxuICAgIG1pblpvb206IDFlLTUwLFxyXG4gICAgbWF4Wm9vbTogMWU1MCxcclxuICAgIHpvb21pbmdFbmFibGVkOiB0cnVlLFxyXG4gICAgdXNlclpvb21pbmdFbmFibGVkOiB0cnVlLFxyXG4gICAgcGFubmluZ0VuYWJsZWQ6IHRydWUsXHJcbiAgICB1c2VyUGFubmluZ0VuYWJsZWQ6IHRydWUsXHJcbiAgICBib3hTZWxlY3Rpb25FbmFibGVkOiBmYWxzZSxcclxuICAgIGF1dG9sb2NrOiBmYWxzZSxcclxuICAgIGF1dG91bmdyYWJpZnk6IGZhbHNlLFxyXG4gICAgYXV0b3Vuc2VsZWN0aWZ5OiBmYWxzZSxcclxuICAgIGF1dG9SZWZyZXNoTGF5b3V0OiB0cnVlXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDeXRvc2NhcGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/lib/components/Cytoscape.react.js\n"); /***/ }), diff --git a/dash_cytoscape/dash_cytoscape.min.js b/dash_cytoscape/dash_cytoscape.min.js index dfe9abac..b164e61c 100644 --- a/dash_cytoscape/dash_cytoscape.min.js +++ b/dash_cytoscape/dash_cytoscape.min.js @@ -1,4 +1,4 @@ -window.dash_cytoscape=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){e.exports=window.React},function(e,t,n){e.exports=n(5)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Cytoscape=void 0;var r,i=n(4),a=(r=i)&&r.__esModule?r:{default:r};t.Cytoscape=a.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&e.remove(u),s.length>0&&e.add(s),l.forEach(function(t){var n=t.ele1,a=t.ele2;return c(e,n,a,r,i,o)})},c=function(e,t,n,r,i,a){var o=i(i(n,"data"),"id"),s=e.getElementById(o),u={};["data","position","selected","selectable","locked","grabbable","classes"].forEach(function(e){var o=i(n,e);a(o,i(t,e))&&(u[e]=r(o))});var l=i(n,"scratch");a(l,i(t,"scratch"))&&s.scratch(r(l)),Object.keys(u).length>0&&s.json(u)}}]))},function(e,t){e.exports=window.ReactDOM},function(e,t,n){(function(t){var r;"undefined"!=typeof self&&self,r=function(e,n){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(3),a=i?i.navigator:null,o=i?i.document:null,s=r(""),u=r({}),l=r(function(){}),c="undefined"==typeof HTMLElement?"undefined":r(HTMLElement),f=function(e){return e&&e.instanceString&&d.fn(e.instanceString)?e.instanceString():null},d={defined:function(e){return null!=e},string:function(e){return null!=e&&(void 0===e?"undefined":r(e))==s},fn:function(e){return null!=e&&(void 0===e?"undefined":r(e))===l},array:function(e){return Array.isArray?Array.isArray(e):null!=e&&e instanceof Array},plainObject:function(e){return null!=e&&(void 0===e?"undefined":r(e))===u&&!d.array(e)&&e.constructor===Object},object:function(e){return null!=e&&(void 0===e?"undefined":r(e))===u},number:function(e){return null!=e&&(void 0===e?"undefined":r(e))===r(1)&&!isNaN(e)},integer:function(e){return d.number(e)&&Math.floor(e)===e},bool:function(e){return null!=e&&(void 0===e?"undefined":r(e))===r(!0)},htmlElement:function(e){return"undefined"===c?void 0:null!=e&&e instanceof HTMLElement},elementOrCollection:function(e){return d.element(e)||d.collection(e)},element:function(e){return"collection"===f(e)&&e._private.single},collection:function(e){return"collection"===f(e)&&!e._private.single},core:function(e){return"core"===f(e)},style:function(e){return"style"===f(e)},stylesheet:function(e){return"stylesheet"===f(e)},event:function(e){return"event"===f(e)},thread:function(e){return"thread"===f(e)},fabric:function(e){return"fabric"===f(e)},emptyString:function(e){return null==e||!(""!==e&&!e.match(/^\s+$/))},nonemptyString:function(e){return!(!e||!d.string(e)||""===e||e.match(/^\s+$/))},domElement:function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement},boundingBox:function(e){return d.plainObject(e)&&d.number(e.x1)&&d.number(e.x2)&&d.number(e.y1)&&d.number(e.y2)},promise:function(e){return d.object(e)&&d.fn(e.then)},touch:function(){return i&&("ontouchstart"in i||i.DocumentTouch&&o instanceof DocumentTouch)},gecko:function(){return i&&("undefined"!=typeof InstallTrigger||"MozAppearance"in o.documentElement.style)},webkit:function(){return i&&("undefined"!=typeof webkitURL||"WebkitAppearance"in o.documentElement.style)},chromium:function(){return i&&"undefined"!=typeof chrome},khtml:function(){return a&&a.vendor.match(/kde/i)},khtmlEtc:function(){return d.khtml()||d.webkit()||d.chromium()},ms:function(){return a&&a.userAgent.match(/msie|trident|edge/i)},windows:function(){return a&&a.appVersion.match(/Win/i)},mac:function(){return a&&a.appVersion.match(/Mac/i)},linux:function(){return a&&a.appVersion.match(/Linux/i)},unix:function(){return a&&a.appVersion.match(/X11/i)}};e.exports=d},function(e,t,n){"use strict";var r=n(0),i=n(2),a={MAX_INT:Number.MAX_SAFE_INTEGER||9007199254740991,trueify:function(){return!0},falsify:function(){return!1},zeroify:function(){return 0},noop:function(){},error:function(e){console.error?(console.error.apply(console,arguments),console.trace&&console.trace()):(console.log.apply(console,arguments),console.trace&&console.trace())},clone:function(e){return this.extend({},e)},copy:function(e){return null==e?e:r.array(e)?e.slice():r.plainObject(e)?this.clone(e):e},copyArray:function(e){return e.slice()},clonePosition:function(e){return{x:e.x,y:e.y}},uuid:function(e,t){for(t=e="";e++<36;t+=51*e&52?(15^e?8^Math.random()*(20^e?16:4):4).toString(16):"-");return t}};a.makeBoundingBox=i.makeBoundingBox.bind(i),a._staticEmptyObject={},a.staticEmptyObject=function(){return a._staticEmptyObject},a.extend=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n=0&&(e[r]!==t||(e.splice(r,1),n));r--);},a.clearArray=function(e){e.splice(0,e.length)},a.push=function(e,t){for(var n=0;n0?1:e<0?-1:0},r.dist=function(e,t){return Math.sqrt(r.sqdist(e,t))},r.sqdist=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},r.qbezierAt=function(e,t,n,r){return(1-r)*(1-r)*e+2*(1-r)*r*t+r*r*n},r.qbezierPtAt=function(e,t,n,i){return{x:r.qbezierAt(e.x,t.x,n.x,i),y:r.qbezierAt(e.y,t.y,n.y,i)}},r.lineAt=function(e,t,n,i){var a=t.x-e.x,o=t.y-e.y,s=r.dist(e,t),u=a/s,l=o/s;return n=null==n?0:n,i=null!=i?i:n*s,{x:e.x+u*i,y:e.y+l*i}},r.lineAtDist=function(e,t,n){return r.lineAt(e,t,void 0,n)},r.triangleAngle=function(e,t,n){var i=r.dist(t,n),a=r.dist(e,n),o=r.dist(e,t);return Math.acos((i*i+a*a-o*o)/(2*i*a))},r.bound=function(e,t,n){return Math.max(e,Math.min(n,t))},r.makeBoundingBox=function(e){if(null==e)return{x1:1/0,y1:1/0,x2:-1/0,y2:-1/0,w:0,h:0};if(null!=e.x1&&null!=e.y1){if(null!=e.x2&&null!=e.y2&&e.x2>=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},r.updateBoundingBox=function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},r.expandBoundingBoxByPoint=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},r.expandBoundingBox=function(e,t){return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},r.boundingBoxesIntersect=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},r.inBoundingBox=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},r.pointInBoundingBox=function(e,t){return this.inBoundingBox(e,t.x,t.y)},r.boundingBoxInBoundingBox=function(e,t){return r.inBoundingBox(e,t.x1,t.y1)&&r.inBoundingBox(e,t.x2,t.y2)},r.roundRectangleIntersectLine=function(e,t,n,r,i,a,o){var s=this.getRoundRectangleRadius(i,a),u=i/2,l=a/2,c=void 0,f=n-u+s-o,d=r-l-o,h=n+u-s+o,p=d;if((c=this.finiteLinesIntersect(e,t,n,r,f,d,h,p,!1)).length>0)return c;var v=n+u+o,g=r-l+s-o,y=v,m=r+l-s+o;if((c=this.finiteLinesIntersect(e,t,n,r,v,g,y,m,!1)).length>0)return c;var b=n-u+s-o,x=r+l+o,w=n+u-s+o,_=x;if((c=this.finiteLinesIntersect(e,t,n,r,b,x,w,_,!1)).length>0)return c;var E=n-u-o,P=r-l+s-o,C=E,T=r+l-s+o;if((c=this.finiteLinesIntersect(e,t,n,r,E,P,C,T,!1)).length>0)return c;var S=void 0,k=n-u+s,D=r-l+s;if((S=this.intersectLineCircle(e,t,n,r,k,D,s+o)).length>0&&S[0]<=k&&S[1]<=D)return[S[0],S[1]];var I=n+u-s,M=r-l+s;if((S=this.intersectLineCircle(e,t,n,r,I,M,s+o)).length>0&&S[0]>=I&&S[1]<=M)return[S[0],S[1]];var O=n+u-s,z=r+l-s;if((S=this.intersectLineCircle(e,t,n,r,O,z,s+o)).length>0&&S[0]>=O&&S[1]>=z)return[S[0],S[1]];var N=n-u+s,A=r+l-s;return(S=this.intersectLineCircle(e,t,n,r,N,A,s+o)).length>0&&S[0]<=N&&S[1]>=A?[S[0],S[1]]:[]},r.inLineVicinity=function(e,t,n,r,i,a,o){var s=o,u=Math.min(n,i),l=Math.max(n,i),c=Math.min(r,a),f=Math.max(r,a);return u-s<=e&&e<=l+s&&c-s<=t&&t<=f+s},r.inBezierVicinity=function(e,t,n,r,i,a,o,s,u){var l=Math.min(n,o,i)-u,c=Math.max(n,o,i)+u,f=Math.min(r,s,a)-u,d=Math.max(r,s,a)+u;return!(ec||td)},r.solveQuadratic=function(e,t,n,r){var i=t*t-4*e*(n-=r);if(i<0)return[];var a=Math.sqrt(i),o=2*e;return[(-t+a)/o,(-t-a)/o]},r.solveCubic=function(e,t,n,r,i){var a,o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,f=void 0,d=void 0;return s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),a=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,i[1]=0,f=t/3,a>0?(l=(l=s+Math.sqrt(a))<0?-Math.pow(-l,1/3):Math.pow(l,1/3),c=(c=s-Math.sqrt(a))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-f+l+c,f+=(l+c)/2,i[4]=i[2]=-f,f=Math.sqrt(3)*(-c+l)/2,i[3]=f,void(i[5]=-f)):(i[5]=i[3]=0,0===a?(d=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),i[0]=2*d-f,void(i[4]=i[2]=-(d+f))):(u=(o=-o)*o*o,u=Math.acos(s/Math.sqrt(u)),d=2*Math.sqrt(o),i[0]=-f+d*Math.cos(u/3),i[2]=-f+d*Math.cos((u+2*Math.PI)/3),void(i[4]=-f+d*Math.cos((u+4*Math.PI)/3))))},r.sqdistToQuadraticBezier=function(e,t,n,r,i,a,o,s){var u=1*n*n-4*n*i+2*n*o+4*i*i-4*i*o+o*o+r*r-4*r*a+2*r*s+4*a*a-4*a*s+s*s,l=9*n*i-3*n*n-3*n*o-6*i*i+3*i*o+9*r*a-3*r*r-3*r*s-6*a*a+3*a*s,c=3*n*n-6*n*i+n*o-n*e+2*i*i+2*i*e-o*e+3*r*r-6*r*a+r*s-r*t+2*a*a+2*a*t-s*t,f=1*n*i-n*n+n*e-i*e+r*a-r*r+r*t-a*t,d=[];this.solveCubic(u,l,c,f,d);for(var h=[],p=0;p<6;p+=2)Math.abs(d[p+1])<1e-7&&d[p]>=0&&d[p]<=1&&h.push(d[p]);h.push(1),h.push(0);for(var v=-1,g=void 0,y=void 0,m=void 0,b=0;b=0?mu?(e-i)*(e-i)+(t-a)*(t-a):l-f},r.pointInsidePolygonPoints=function(e,t,n){for(var r=void 0,i=void 0,a=void 0,o=void 0,s=0,u=0;u=e&&e>=a||r<=e&&e<=a))continue;(e-r)/(a-r)*(o-i)+i>t&&s++}return s%2!=0},r.pointInsidePolygon=function(e,t,n,i,a,o,s,u,l){var c=new Array(n.length),f=void 0;null!=u[0]?(f=Math.atan(u[1]/u[0]),u[0]<0?f+=Math.PI/2:f=-f-Math.PI/2):f=u;for(var d=Math.cos(-f),h=Math.sin(-f),p=0;p0){var g=this.expandPolygon(c,-l);v=this.joinLines(g)}else v=c;return r.pointInsidePolygonPoints(e,t,v)},r.joinLines=function(e){for(var t=new Array(e.length/2),n=void 0,r=void 0,i=void 0,a=void 0,o=void 0,s=void 0,u=void 0,l=void 0,c=0;c=0&&p<=1&&g.push(p),v>=0&&v<=1&&g.push(v),0===g.length)return[];var y=g[0]*s[0]+e,m=g[0]*s[1]+t;return g.length>1?g[0]==g[1]?[y,m]:[y,m,g[1]*s[0]+e,g[1]*s[1]+t]:[y,m]},r.findCircleNearPoint=function(e,t,n,r,i){var a=r-e,o=i-t,s=Math.sqrt(a*a+o*o);return[e+a/s*n,t+o/s*n]},r.findMaxSqDistanceToOrigin=function(e){for(var t=1e-6,n=void 0,r=0;rt&&(t=n);return t},r.midOfThree=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},r.finiteLinesIntersect=function(e,t,n,r,i,a,o,s,u){var l=e-i,c=n-e,f=o-i,d=t-a,h=r-t,p=s-a,v=f*d-p*l,g=c*d-h*l,y=p*c-f*h;if(0!==y){var m=v/y,b=g/y;return-.001<=m&&m<=1.001&&-.001<=b&&b<=1.001?[e+m*c,t+m*h]:u?[e+m*c,t+m*h]:[]}return 0===v||0===g?this.midOfThree(e,n,o)===o?[o,s]:this.midOfThree(e,n,i)===i?[i,a]:this.midOfThree(i,o,n)===n?[n,r]:[]:[]},r.polygonIntersectLine=function(e,t,n,i,a,o,s,u){var l=[],c=void 0,f=new Array(n.length),d=!0;5===arguments.length&&(d=!1);var h=void 0;if(d){for(var p=0;p0){var v=r.expandPolygon(f,-u);h=r.joinLines(v)}else h=f}else h=n;for(var g=void 0,y=void 0,m=void 0,b=void 0,x=0;x0&&e.remove(u),s.length>0&&e.add(s),l.forEach(function(t){var n=t.ele1,a=t.ele2;return c(e,n,a,r,i,o)})},c=function(e,t,n,r,i,a){var o=i(i(n,"data"),"id"),s=e.getElementById(o),u={};["data","position","selected","selectable","locked","grabbable","classes"].forEach(function(e){var o=i(n,e);a(o,i(t,e))&&(u[e]=r(o))});var l=i(n,"scratch");a(l,i(t,"scratch"))&&s.scratch(r(l)),Object.keys(u).length>0&&s.json(u)}}]))},function(e,t){e.exports=window.ReactDOM},function(e,t,n){(function(t){var r;"undefined"!=typeof self&&self,r=function(e,n){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(3),a=i?i.navigator:null,o=i?i.document:null,s=r(""),u=r({}),l=r(function(){}),c="undefined"==typeof HTMLElement?"undefined":r(HTMLElement),f=function(e){return e&&e.instanceString&&d.fn(e.instanceString)?e.instanceString():null},d={defined:function(e){return null!=e},string:function(e){return null!=e&&(void 0===e?"undefined":r(e))==s},fn:function(e){return null!=e&&(void 0===e?"undefined":r(e))===l},array:function(e){return Array.isArray?Array.isArray(e):null!=e&&e instanceof Array},plainObject:function(e){return null!=e&&(void 0===e?"undefined":r(e))===u&&!d.array(e)&&e.constructor===Object},object:function(e){return null!=e&&(void 0===e?"undefined":r(e))===u},number:function(e){return null!=e&&(void 0===e?"undefined":r(e))===r(1)&&!isNaN(e)},integer:function(e){return d.number(e)&&Math.floor(e)===e},bool:function(e){return null!=e&&(void 0===e?"undefined":r(e))===r(!0)},htmlElement:function(e){return"undefined"===c?void 0:null!=e&&e instanceof HTMLElement},elementOrCollection:function(e){return d.element(e)||d.collection(e)},element:function(e){return"collection"===f(e)&&e._private.single},collection:function(e){return"collection"===f(e)&&!e._private.single},core:function(e){return"core"===f(e)},style:function(e){return"style"===f(e)},stylesheet:function(e){return"stylesheet"===f(e)},event:function(e){return"event"===f(e)},thread:function(e){return"thread"===f(e)},fabric:function(e){return"fabric"===f(e)},emptyString:function(e){return null==e||!(""!==e&&!e.match(/^\s+$/))},nonemptyString:function(e){return!(!e||!d.string(e)||""===e||e.match(/^\s+$/))},domElement:function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement},boundingBox:function(e){return d.plainObject(e)&&d.number(e.x1)&&d.number(e.x2)&&d.number(e.y1)&&d.number(e.y2)},promise:function(e){return d.object(e)&&d.fn(e.then)},touch:function(){return i&&("ontouchstart"in i||i.DocumentTouch&&o instanceof DocumentTouch)},gecko:function(){return i&&("undefined"!=typeof InstallTrigger||"MozAppearance"in o.documentElement.style)},webkit:function(){return i&&("undefined"!=typeof webkitURL||"WebkitAppearance"in o.documentElement.style)},chromium:function(){return i&&"undefined"!=typeof chrome},khtml:function(){return a&&a.vendor.match(/kde/i)},khtmlEtc:function(){return d.khtml()||d.webkit()||d.chromium()},ms:function(){return a&&a.userAgent.match(/msie|trident|edge/i)},windows:function(){return a&&a.appVersion.match(/Win/i)},mac:function(){return a&&a.appVersion.match(/Mac/i)},linux:function(){return a&&a.appVersion.match(/Linux/i)},unix:function(){return a&&a.appVersion.match(/X11/i)}};e.exports=d},function(e,t,n){"use strict";var r=n(0),i=n(2),a={MAX_INT:Number.MAX_SAFE_INTEGER||9007199254740991,trueify:function(){return!0},falsify:function(){return!1},zeroify:function(){return 0},noop:function(){},error:function(e){console.error?(console.error.apply(console,arguments),console.trace&&console.trace()):(console.log.apply(console,arguments),console.trace&&console.trace())},clone:function(e){return this.extend({},e)},copy:function(e){return null==e?e:r.array(e)?e.slice():r.plainObject(e)?this.clone(e):e},copyArray:function(e){return e.slice()},clonePosition:function(e){return{x:e.x,y:e.y}},uuid:function(e,t){for(t=e="";e++<36;t+=51*e&52?(15^e?8^Math.random()*(20^e?16:4):4).toString(16):"-");return t}};a.makeBoundingBox=i.makeBoundingBox.bind(i),a._staticEmptyObject={},a.staticEmptyObject=function(){return a._staticEmptyObject},a.extend=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n=0&&(e[r]!==t||(e.splice(r,1),n));r--);},a.clearArray=function(e){e.splice(0,e.length)},a.push=function(e,t){for(var n=0;n0?1:e<0?-1:0},r.dist=function(e,t){return Math.sqrt(r.sqdist(e,t))},r.sqdist=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},r.qbezierAt=function(e,t,n,r){return(1-r)*(1-r)*e+2*(1-r)*r*t+r*r*n},r.qbezierPtAt=function(e,t,n,i){return{x:r.qbezierAt(e.x,t.x,n.x,i),y:r.qbezierAt(e.y,t.y,n.y,i)}},r.lineAt=function(e,t,n,i){var a=t.x-e.x,o=t.y-e.y,s=r.dist(e,t),u=a/s,l=o/s;return n=null==n?0:n,i=null!=i?i:n*s,{x:e.x+u*i,y:e.y+l*i}},r.lineAtDist=function(e,t,n){return r.lineAt(e,t,void 0,n)},r.triangleAngle=function(e,t,n){var i=r.dist(t,n),a=r.dist(e,n),o=r.dist(e,t);return Math.acos((i*i+a*a-o*o)/(2*i*a))},r.bound=function(e,t,n){return Math.max(e,Math.min(n,t))},r.makeBoundingBox=function(e){if(null==e)return{x1:1/0,y1:1/0,x2:-1/0,y2:-1/0,w:0,h:0};if(null!=e.x1&&null!=e.y1){if(null!=e.x2&&null!=e.y2&&e.x2>=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},r.updateBoundingBox=function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},r.expandBoundingBoxByPoint=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},r.expandBoundingBox=function(e,t){return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},r.boundingBoxesIntersect=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},r.inBoundingBox=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},r.pointInBoundingBox=function(e,t){return this.inBoundingBox(e,t.x,t.y)},r.boundingBoxInBoundingBox=function(e,t){return r.inBoundingBox(e,t.x1,t.y1)&&r.inBoundingBox(e,t.x2,t.y2)},r.roundRectangleIntersectLine=function(e,t,n,r,i,a,o){var s=this.getRoundRectangleRadius(i,a),u=i/2,l=a/2,c=void 0,f=n-u+s-o,d=r-l-o,h=n+u-s+o,p=d;if((c=this.finiteLinesIntersect(e,t,n,r,f,d,h,p,!1)).length>0)return c;var v=n+u+o,g=r-l+s-o,y=v,m=r+l-s+o;if((c=this.finiteLinesIntersect(e,t,n,r,v,g,y,m,!1)).length>0)return c;var b=n-u+s-o,x=r+l+o,w=n+u-s+o,_=x;if((c=this.finiteLinesIntersect(e,t,n,r,b,x,w,_,!1)).length>0)return c;var E=n-u-o,P=r-l+s-o,C=E,T=r+l-s+o;if((c=this.finiteLinesIntersect(e,t,n,r,E,P,C,T,!1)).length>0)return c;var S=void 0,k=n-u+s,D=r-l+s;if((S=this.intersectLineCircle(e,t,n,r,k,D,s+o)).length>0&&S[0]<=k&&S[1]<=D)return[S[0],S[1]];var I=n+u-s,M=r-l+s;if((S=this.intersectLineCircle(e,t,n,r,I,M,s+o)).length>0&&S[0]>=I&&S[1]<=M)return[S[0],S[1]];var O=n+u-s,z=r+l-s;if((S=this.intersectLineCircle(e,t,n,r,O,z,s+o)).length>0&&S[0]>=O&&S[1]>=z)return[S[0],S[1]];var N=n-u+s,A=r+l-s;return(S=this.intersectLineCircle(e,t,n,r,N,A,s+o)).length>0&&S[0]<=N&&S[1]>=A?[S[0],S[1]]:[]},r.inLineVicinity=function(e,t,n,r,i,a,o){var s=o,u=Math.min(n,i),l=Math.max(n,i),c=Math.min(r,a),f=Math.max(r,a);return u-s<=e&&e<=l+s&&c-s<=t&&t<=f+s},r.inBezierVicinity=function(e,t,n,r,i,a,o,s,u){var l=Math.min(n,o,i)-u,c=Math.max(n,o,i)+u,f=Math.min(r,s,a)-u,d=Math.max(r,s,a)+u;return!(ec||td)},r.solveQuadratic=function(e,t,n,r){var i=t*t-4*e*(n-=r);if(i<0)return[];var a=Math.sqrt(i),o=2*e;return[(-t+a)/o,(-t-a)/o]},r.solveCubic=function(e,t,n,r,i){var a,o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,f=void 0,d=void 0;return s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),a=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,i[1]=0,f=t/3,a>0?(l=(l=s+Math.sqrt(a))<0?-Math.pow(-l,1/3):Math.pow(l,1/3),c=(c=s-Math.sqrt(a))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-f+l+c,f+=(l+c)/2,i[4]=i[2]=-f,f=Math.sqrt(3)*(-c+l)/2,i[3]=f,void(i[5]=-f)):(i[5]=i[3]=0,0===a?(d=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),i[0]=2*d-f,void(i[4]=i[2]=-(d+f))):(u=(o=-o)*o*o,u=Math.acos(s/Math.sqrt(u)),d=2*Math.sqrt(o),i[0]=-f+d*Math.cos(u/3),i[2]=-f+d*Math.cos((u+2*Math.PI)/3),void(i[4]=-f+d*Math.cos((u+4*Math.PI)/3))))},r.sqdistToQuadraticBezier=function(e,t,n,r,i,a,o,s){var u=1*n*n-4*n*i+2*n*o+4*i*i-4*i*o+o*o+r*r-4*r*a+2*r*s+4*a*a-4*a*s+s*s,l=9*n*i-3*n*n-3*n*o-6*i*i+3*i*o+9*r*a-3*r*r-3*r*s-6*a*a+3*a*s,c=3*n*n-6*n*i+n*o-n*e+2*i*i+2*i*e-o*e+3*r*r-6*r*a+r*s-r*t+2*a*a+2*a*t-s*t,f=1*n*i-n*n+n*e-i*e+r*a-r*r+r*t-a*t,d=[];this.solveCubic(u,l,c,f,d);for(var h=[],p=0;p<6;p+=2)Math.abs(d[p+1])<1e-7&&d[p]>=0&&d[p]<=1&&h.push(d[p]);h.push(1),h.push(0);for(var v=-1,g=void 0,y=void 0,m=void 0,b=0;b=0?mu?(e-i)*(e-i)+(t-a)*(t-a):l-f},r.pointInsidePolygonPoints=function(e,t,n){for(var r=void 0,i=void 0,a=void 0,o=void 0,s=0,u=0;u=e&&e>=a||r<=e&&e<=a))continue;(e-r)/(a-r)*(o-i)+i>t&&s++}return s%2!=0},r.pointInsidePolygon=function(e,t,n,i,a,o,s,u,l){var c=new Array(n.length),f=void 0;null!=u[0]?(f=Math.atan(u[1]/u[0]),u[0]<0?f+=Math.PI/2:f=-f-Math.PI/2):f=u;for(var d=Math.cos(-f),h=Math.sin(-f),p=0;p0){var g=this.expandPolygon(c,-l);v=this.joinLines(g)}else v=c;return r.pointInsidePolygonPoints(e,t,v)},r.joinLines=function(e){for(var t=new Array(e.length/2),n=void 0,r=void 0,i=void 0,a=void 0,o=void 0,s=void 0,u=void 0,l=void 0,c=0;c=0&&p<=1&&g.push(p),v>=0&&v<=1&&g.push(v),0===g.length)return[];var y=g[0]*s[0]+e,m=g[0]*s[1]+t;return g.length>1?g[0]==g[1]?[y,m]:[y,m,g[1]*s[0]+e,g[1]*s[1]+t]:[y,m]},r.findCircleNearPoint=function(e,t,n,r,i){var a=r-e,o=i-t,s=Math.sqrt(a*a+o*o);return[e+a/s*n,t+o/s*n]},r.findMaxSqDistanceToOrigin=function(e){for(var t=1e-6,n=void 0,r=0;rt&&(t=n);return t},r.midOfThree=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},r.finiteLinesIntersect=function(e,t,n,r,i,a,o,s,u){var l=e-i,c=n-e,f=o-i,d=t-a,h=r-t,p=s-a,v=f*d-p*l,g=c*d-h*l,y=p*c-f*h;if(0!==y){var m=v/y,b=g/y;return-.001<=m&&m<=1.001&&-.001<=b&&b<=1.001?[e+m*c,t+m*h]:u?[e+m*c,t+m*h]:[]}return 0===v||0===g?this.midOfThree(e,n,o)===o?[o,s]:this.midOfThree(e,n,i)===i?[i,a]:this.midOfThree(i,o,n)===n?[n,r]:[]:[]},r.polygonIntersectLine=function(e,t,n,i,a,o,s,u){var l=[],c=void 0,f=new Array(n.length),d=!0;5===arguments.length&&(d=!1);var h=void 0;if(d){for(var p=0;p0){var v=r.expandPolygon(f,-u);h=r.joinLines(v)}else h=f}else h=n;for(var g=void 0,y=void 0,m=void 0,b=void 0,x=0;x=e.deqFastCost*g)break}else if(a){if(p>=e.deqCost*l||p>=e.deqAvgCost*u)break}else if(v>=e.deqNoDrawCost*(1e3/60))break;var y=e.deq(t,d,f);if(!(y.length>0))break;for(var m=0;m0&&(e.onDeqd(t,c),!a&&e.shouldRedraw(t,c,d,f)&&i())},a(t))}}}}},function(e,t,n){"use strict";var r=n(0),i=n(12),a=n(94),o=n(136),s=function(e){return void 0===e&&(e={}),r.plainObject(e)?new i(e):r.string(e)?a.apply(a,arguments):void 0};s.use=function(e){var t=Array.prototype.slice.call(arguments,1);return t.unshift(s),e.apply(null,t),this},s.version=n(137),s.stylesheet=s.Stylesheet=o,e.exports=s},function(e,t,n){"use strict";var r=n(0);e.exports={hex2tuple:function(e){if((4===e.length||7===e.length)&&"#"===e[0]){var t=void 0,n=void 0,r=void 0;return 4===e.length?(t=parseInt(e[1]+e[1],16),n=parseInt(e[2]+e[2],16),r=parseInt(e[3]+e[3],16)):(t=parseInt(e[1]+e[2],16),n=parseInt(e[3]+e[4],16),r=parseInt(e[5]+e[6],16)),[t,n,r]}},hsl2tuple:function(e){var t=void 0,n=void 0,r=void 0,i=void 0,a=void 0,o=void 0,s=void 0,u=void 0;function l(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+this.regex.hsla+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(i=parseFloat(c[3]))<0||i>100)return;if(i/=100,void 0!==(a=c[4])&&((a=parseFloat(a))<0||a>1))return;if(0===r)o=s=u=Math.round(255*i);else{var f=i<.5?i*(1+r):i+r-i*r,d=2*i-f;o=Math.round(255*l(d,f,n+1/3)),s=Math.round(255*l(d,f,n)),u=Math.round(255*l(d,f,n-1/3))}t=[o,s,u,a]}return t},rgb2tuple:function(e){var t=void 0,n=new RegExp("^"+this.regex.rgba+"$").exec(e);if(n){t=[];for(var r=[],i=1;i<=3;i++){var a=n[i];if("%"===a[a.length-1]&&(r[i]=!0),a=parseFloat(a),r[i]&&(a=a/100*255),a<0||a>255)return;t.push(Math.floor(a))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var u=n[4];if(void 0!==u){if((u=parseFloat(u))<0||u>1)return;t.push(u)}}return t},colorname2tuple:function(e){return this.colors[e.toLowerCase()]},color2tuple:function(e){return(r.array(e)?e:null)||this.colorname2tuple(e)||this.hex2tuple(e)||this.rgb2tuple(e)||this.hsl2tuple(e)},colors:{transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}},function(e,t,n){"use strict";var r=n(0);e.exports={mapEmpty:function(e){return null==e||0===Object.keys(e).length},pushMap:function(e){var t=this.getMap(e);null==t?this.setMap(this.extend({},e,{value:[e.value]})):t.push(e.value)},setMap:function(e){for(var t=e.map,n=e.keys,i=n.length,a=0;at?1:0}e.exports={sort:{ascending:r,descending:function(e,t){return-1*r(e,t)}}}},function(e,t,n){"use strict";function r(){this._obj={}}var i=r.prototype;i.set=function(e,t){this._obj[e]=t},i.delete=function(e){this._obj[e]=null},i.has=function(e){return null!=this._obj[e]},i.get=function(e){return this._obj[e]},e.exports=r},function(e,t,n){"use strict";var r=n(1),i={};[n(30),n(31),n(33),n(34),n(35),n(36),n(37),n(38),n(39),n(40),n(41)].forEach(function(e){r.extend(i,e)}),e.exports=i},function(e,t,n){"use strict";var r=n(0),i=function(e){return e={bfs:e.bfs||!e.dfs,dfs:e.dfs||!e.bfs},function(t,n,i){var a;r.plainObject(t)&&!r.elementOrCollection(t)&&(t=(a=t).roots||a.root,n=a.visit,i=a.directed),i=2!==arguments.length||r.fn(n)?i:n,n=r.fn(n)?n:function(){};for(var o,s=this._private.cy,u=t=r.string(t)?this.filter(t):t,l=[],c=[],f={},d={},h={},p=0,v=this.nodes(),g=this.edges(),y=0;y0;){var b=v.pop(),x=h(b),w=b.id();if(c[w]=x,x!==1/0){var _=b.neighborhood().intersect(d);for(g=0;g<_.length;g++){var E=_[g],P=E.id(),C=m(b,E),T=x+C.dist;T0)for(n.unshift(t);l[i.id()];){var a=l[i.id()];n.unshift(a.edge),n.unshift(a.node),i=a.node}return o.collection(n)}}}};e.exports=a},function(e,t){e.exports=n},function(e,t,n){"use strict";var r=n(0),i={kruskal:function(e){var t=this.cy();function n(e){for(var t=0;t0;){var b=n(h,y),x=i.getElementById(h[b]),w=x.id();if(m++,w==f){var _=t(c,f,p,[]);return{found:!0,distance:g[w],path:this.spawn(_),steps:m}}d.push(w),h.splice(b,1);for(var E=x._private.edges,P=0;Pm&&(c[g][y]=m,h[g][y]=y,p[g][y]=a[l])}if(!i)for(l=0;lm&&(c[g][y]=m,h[g][y]=y,p[g][y]=a[l])}for(var b=0;bc&&(c=t)},d=function(e){return l[e]},h=0;h0?C.edgesTo(P)[0]:P.edgesTo(C)[0]);P=P.id(),b[P]>b[_]+T&&(b[P]=b[_]+T,x.nodes.indexOf(P)<0?x.push(P):x.updateItem(P),m[P]=0,y[P]=[]),b[P]==b[_]+T&&(m[P]=m[P]+m[_],y[P].push(_))}else for(E=0;E0;)for(P=g.pop(),E=0;E0:void 0}},clearQueue:function(){return function(){var e=void 0!==this.length?this:[this];if(!(this._private.cy||this).styleEnabled())return this;for(var t=0;t0&&this.spawn(n).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){for(var n=e.match(/\S+/g)||[],r=[],i=0,a=this.length;i0&&this.spawn(r).updateStyle().emit("class"),this},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},t),n}};e.exports=i},function(e,t,n){"use strict";n(0);var r=n(6),i={allAre:function(e){var t=new r(e);return this.every(function(e){return t.matches(e)})},is:function(e){var t=new r(e);return this.some(function(e){return t.matches(e)})},some:function(e,t){for(var n=0;n\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:'"(?:\\\\"|[^"])*"|'+"'(?:\\\\'|[^'])*'",number:n(1).regex.number,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};r.variable="(?:[\\w-]|(?:\\\\"+r.metaChar+"))+",r.value=r.string+"|"+r.number,r.className=r.variable,r.id=r.variable,function(){var e=void 0,t=void 0,n=void 0;for(e=r.comparatorOp.split("|"),n=0;n=0||"="!==t&&(r.comparatorOp+="|\\!"+t)}(),e.exports=r},function(e,t,n){"use strict";var r=n(15).stateSelectorMatches,i=n(0),a=function(e,t){for(var n=!0,r=0;r=0&&(f=f.toLowerCase(),d=d.toLowerCase(),o=o.replace("@",""),h=!0);var p=!1;o.indexOf("!")>=0&&(o=o.replace("!",""),p=!0),h&&(s=d.toLowerCase(),c=f.toLowerCase());var v=!1;switch(o){case"*=":l=f.indexOf(d)>=0;break;case"$=":l=f.indexOf(d,f.length-d.length)>=0;break;case"^=":l=0===f.indexOf(d);break;case"=":l=c===s;break;case">":v=!0,l=c>s;break;case">=":v=!0,l=c>=s;break;case"<":v=!0,l=c0;){var c=a.shift();t(c),o.add(c.id()),s&&i(a,o,c)}return e}function o(e,t,n){if(n.isParent())for(var r=n._private.children,i=0;i1&&void 0!==arguments[1])||arguments[1],o)},i.forEachUp=function(e){return a(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s)},i.forEachUpAndDown=function(e){return a(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],u)},i.ancestors=i.parents,e.exports=i},function(e,t,n){"use strict";var r,i=n(4),a=void 0;(a=r={data:i.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:i.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:i.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:i.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:i.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:i.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=a.data,a.removeAttr=a.removeData,e.exports=r},function(e,t,n){"use strict";var r=n(1),i={};function a(e){return function(t){if(void 0===t&&(t=!0),0!==this.length&&this.isNode()&&!this.removed()){for(var n=0,r=this[0],i=r._private.edges,a=0;at}),minIndegree:o("indegree",function(e,t){return et}),minOutdegree:o("outdegree",function(e,t){return et})}),r.extend(i,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,f=c;c&&(l=l[0]);var d=f?l.position():{x:0,y:0};return i={x:u.x-d.x,y:u.y-d.y},void 0===e?i:i[e]}for(var h=0;h0,y=g;g&&(v=v[0]);var m=y?v.position():{x:0,y:0};void 0!==t?p.position(e,t+m[e]):void 0!==i&&p.position({x:i.x+m.x,y:i.y+m.y})}}else if(!o)return;return this}}).modelPosition=s.point=s.position,s.modelPositions=s.points=s.positions,s.renderedPoint=s.renderedPosition,s.relativePoint=s.relativePosition,e.exports=r},function(e,t,n){"use strict";var r=n(0),i=n(1),a=n(2),o=void 0,s=void 0;o=s={},s.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),i=n.pan(),a=t.x1*r+i.x,o=t.x2*r+i.x,s=t.y1*r+i.y,u=t.y2*r+i.y;return{x1:a,x2:o,y1:s,y2:u,w:o-a,h:u-s}},s.dirtyCompoundBoundsCache=function(){var e=this.cy();return e.styleEnabled()&&e.hasCompoundNodes()?(this.forEachUp(function(e){e._private.compoundBoundsClean=!1,e.isParent()&&e.emit("bounds")}),this):this},s.updateCompoundBounds=function(){var e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(e.batching())return this;var t=[];function n(e){if(e.isParent()){var n=e._private,r=e.children(),i="include"===e.pstyle("compound-sizing-wrt-labels").value,a={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},o=r.boundingBox({includeLabels:i,includeOverlays:!1,useCache:!1}),s=n.position;0!==o.w&&0!==o.h||((o={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=s.x-o.w/2,o.x2=s.x+o.w/2,o.y1=s.y-o.h/2,o.y2=s.y+o.h/2);var u=a.width.left.value;"px"===a.width.left.units&&a.width.val>0&&(u=100*u/a.width.val);var l=a.width.right.value;"px"===a.width.right.units&&a.width.val>0&&(l=100*l/a.width.val);var c=a.height.top.value;"px"===a.height.top.units&&a.height.val>0&&(c=100*c/a.height.val);var f=a.height.bottom.value;"px"===a.height.bottom.units&&a.height.val>0&&(f=100*f/a.height.val);var d=m(a.width.val-o.w,u,l),h=d.biasDiff,p=d.biasComplementDiff,v=m(a.height.val-o.h,c,f),g=v.biasDiff,y=v.biasComplementDiff;n.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(o.w,o.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),n.autoWidth=Math.max(o.w,a.width.val),s.x=(-h+o.x1+o.x2+p)/2,n.autoHeight=Math.max(o.h,a.height.val),s.y=(-g+o.y1+o.y2+y)/2,t.push(e)}function m(e,t,n){var r=0,i=0,a=t+n;return e>0&&a>0&&(r=t/a*e,i=n/a*e),{biasDiff:r,biasComplementDiff:i}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?i:e.y2)},c=function(e,t,n){return i.getPrefixedProperty(e,t,n)},f=function(e,t,n){if(!t.cy().headless()){var r=t._private.rstyle,i=r.arrowWidth/2,a=void 0,o=void 0;"none"!==t.pstyle(n+"-arrow-shape").value&&("source"===n?(a=r.srcX,o=r.srcY):"target"===n?(a=r.tgtX,o=r.tgtY):(a=r.midX,o=r.midY),l(e,a-i,o-i,a+i,o+i))}},d=function(e,t,n){if(!t.cy().headless()){var r=void 0;r=n?n+"-":"";var i=t._private,a=i.rstyle;if(t.pstyle(r+"label").strValue){var o=t.pstyle("text-halign"),s=t.pstyle("text-valign"),u=c(a,"labelWidth",n),f=c(a,"labelHeight",n),d=c(a,"labelX",n),h=c(a,"labelY",n),p=t.pstyle(r+"text-margin-x").pfValue,v=t.pstyle(r+"text-margin-y").pfValue,g=t.isEdge(),y=t.pstyle(r+"text-rotation"),m=t.pstyle("text-outline-width").pfValue,b=t.pstyle("text-border-width").pfValue/2,x=t.pstyle("text-background-padding").pfValue,w=f+2*x,_=u+2*x,E=_/2,P=w/2,C=void 0,T=void 0,S=void 0,k=void 0;if(g)C=d-E,T=d+E,S=h-P,k=h+P;else{switch(o.value){case"left":C=d-_,T=d;break;case"center":C=d-E,T=d+E;break;case"right":C=d,T=d+_}switch(s.value){case"top":S=h-w,k=h;break;case"center":S=h-P,k=h+P;break;case"bottom":S=h,k=h+w}}var D=g&&"autorotate"===y.strValue,I=null!=y.pfValue&&0!==y.pfValue;if(D||I){var M=D?c(i.rstyle,"labelAngle",n):y.pfValue,O=Math.cos(M),z=Math.sin(M),N=function(e,t){return{x:(e-=d)*O-(t-=h)*z+d,y:e*z+t*O+h}},A=N(C,S),B=N(C,k),L=N(T,S),R=N(T,k);C=Math.min(A.x,B.x,L.x,R.x),T=Math.max(A.x,B.x,L.x,R.x),S=Math.min(A.y,B.y,L.y,R.y),k=Math.max(A.y,B.y,L.y,R.y)}C+=p-Math.max(m,b),T+=p+Math.max(m,b),S+=v-Math.max(m,b),k+=v+Math.max(m,b),l(e,C,S,T,k)}return e}},h=function(e){return e?"t":"f"},p=function(e){var t="";return t+=h(e.incudeNodes),t+=h(e.includeEdges),t+=h(e.includeLabels),t+=h(e.includeOverlays)},v=function(e,t){var n=e._private,r=void 0,i=e.cy().headless(),o=t===g?y:p(t);return t.useCache&&!i&&n.bbCache&&n.bbCache[o]?r=n.bbCache[o]:(r=function(e,t){var n=e._private.cy,r=n.styleEnabled(),i=n.headless(),o={x1:1/0,y1:1/0,x2:-1/0,y2:-1/0},s=e._private,c=r?e.pstyle("display").value:"element",h=e.isNode(),p=e.isEdge(),v=void 0,g=void 0,y=void 0,m=void 0,b=void 0,x=void 0,w="none"!==c;if(w){var _=0;r&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(_=e.pstyle("overlay-padding").value);var E=0;if(r&&(E=e.pstyle("width").pfValue/2),h&&t.includeNodes){var P=e.position();b=P.x,x=P.y;var C=e.outerWidth()/2,T=e.outerHeight()/2;l(o,v=b-C-_,y=x-T-_,g=b+C+_,m=x+T+_)}else if(p&&t.includeEdges){var S=s.rstyle||{};if(r&&!i&&(v=Math.min(S.srcX,S.midX,S.tgtX),g=Math.max(S.srcX,S.midX,S.tgtX),y=Math.min(S.srcY,S.midY,S.tgtY),m=Math.max(S.srcY,S.midY,S.tgtY),l(o,v-=E,y-=E,g+=E,m+=E)),r&&!i&&"haystack"===e.pstyle("curve-style").strValue){var k=S.haystackPts||[];if(v=k[0].x,y=k[0].y,v>(g=k[1].x)){var D=v;v=g,g=D}if(y>(m=k[1].y)){var I=y;y=m,m=I}l(o,v-E,y-E,g+E,m+E)}else{for(var M=S.bezierPts||S.linePts||[],O=0;O(g=A.x)){var B=v;v=g,g=B}if((y=N.y)>(m=A.y)){var L=y;y=m,m=L}l(o,v-=E,y-=E,g+=E,m+=E)}}}if(r&&t.includeEdges&&p&&(f(o,e,"mid-source"),f(o,e,"mid-target"),f(o,e,"source"),f(o,e,"target")),r&&"yes"===e.pstyle("ghost").value){var R=e.pstyle("ghost-offset-x").pfValue,j=e.pstyle("ghost-offset-y").pfValue;l(o,o.x1+R,o.y1+j,o.x2+R,o.y2+j)}r&&(v=o.x1,g=o.x2,y=o.y1,m=o.y2,l(o,v-_,y-_,g+_,m+_)),r&&t.includeLabels&&(d(o,e,null),p&&(d(o,e,"source"),d(o,e,"target")))}return o.x1=u(o.x1),o.y1=u(o.y1),o.x2=u(o.x2),o.y2=u(o.y2),o.w=u(o.x2-o.x1),o.h=u(o.y2-o.y1),o.w>0&&o.h>0&&w&&a.expandBoundingBox(o,1),o}(e,t),i||(n.bbCache=n.bbCache||{},n.bbCache[o]=r)),r},g={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeOverlays:!0,useCache:!0},y=p(g);function m(e){return{includeNodes:i.default(e.includeNodes,g.includeNodes),includeEdges:i.default(e.includeEdges,g.includeEdges),includeLabels:i.default(e.includeLabels,g.includeLabels),includeOverlays:i.default(e.includeOverlays,g.includeOverlays),useCache:i.default(e.useCache,g.useCache)}}s.boundingBox=function(e){if(1===this.length&&this[0]._private.bbCache&&(void 0===e||void 0===e.useCache||!0===e.useCache))return e=void 0===e?g:m(e),v(this[0],e);var t={x1:1/0,y1:1/0,x2:-1/0,y2:-1/0},n=m(e=e||i.staticEmptyObject()),r=this.cy().styleEnabled();r&&this.recalculateRenderedStyle(n.useCache),this.updateCompoundBounds();for(var a,o,s={},c=0;c1&&!o){var s=this.length-1,u=this[s],l=u._private.data.id;this[s]=void 0,this[a]=u,r.set(l,{ele:u,index:a})}return this.length--,this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&r.string(e)){var n=e;e=t.mutableElements().filter(n)}for(var i=0;in&&(n=o,r=a)}return{value:n,ele:r}},min:function(e,t){for(var n=1/0,r=void 0,i=0;i=0&&i0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,{unique:!0}).filter(e)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),a.neighbourhood=a.neighborhood,a.closedNeighbourhood=a.closedNeighborhood,a.openNeighbourhood=a.openNeighborhood,r.extend(a,{source:o(function(e){var t=this[0],n=void 0;return t&&(n=t._private.source||t.cy().collection()),n&&e?n.filter(e):n},"source"),target:o(function(e){var t=this[0],n=void 0;return t&&(n=t._private.target||t.cy().collection()),n&&e?n.filter(e):n},"target"),sources:c({attr:"source"}),targets:c({attr:"target"})}),r.extend(a,{edgesWith:o(f(),"edgesWith"),edgesTo:o(f({thisIsSrc:!0}),"edgesTo")}),r.extend(a,{connectedEdges:o(function(e){for(var t=[],n=0;n0);return i.map(function(e){var t=e.connectedEdges().stdFilter(function(t){return e.anySame(t.source())&&e.anySame(t.target())});return e.union(t)})}}),e.exports=a},function(e,t,n){"use strict";var r=n(0),i=n(1),a=n(7),o=n(14),s={add:function(e){var t=void 0,n=this;if(r.elementOrCollection(e)){var s=e;if(s._private.cy===n)t=s.restore();else{for(var u=[],l=0;l=0;t--)(0,e[t])();e.splice(0,e.length)},h=s.length-1;h>=0;h--){var p=s[h],v=p._private;v.stopped?(s.splice(h,1),v.hooked=!1,v.playing=!1,v.started=!1,d(v.frames)):(v.playing||v.applying)&&(v.playing&&v.applying&&(v.applying=!1),v.started||i(t,p,e,n),r(t,p,e,n),v.applying&&(v.applying=!1),d(v.frames),p.completed()&&(s.splice(h,1),v.hooked=!1,v.playing=!1,v.started=!1,d(v.completes)),l=!0)}return n||0!==s.length||0!==u.length||a.push(t),l}for(var s=!1,u=0;u0?(n.dirtyCompoundBoundsCache(),t.notify({type:"draw",eles:n})):t.notify({type:"draw"})),n.unmerge(a),t.emit("step")}},function(e,t,n){"use strict";var r=n(73),i=n(76),a=n(0);function o(e,t){return null!=e&&null!=t&&(!(!a.number(e)||!a.number(t))||!(!e||!t))}e.exports=function(e,t,n,s){var u=!s,l=e._private,c=t._private,f=c.easing,d=c.startTime,h=(s?e:e.cy()).style();if(!c.easingImpl)if(null==f)c.easingImpl=r.linear;else{var p=void 0;p=a.string(f)?h.parse("transition-timing-function",f).value:f;var v=void 0,g=void 0;a.string(p)?(v=p,g=[]):(v=p[1],g=p.slice(2).map(function(e){return+e})),g.length>0?("spring"===v&&g.push(c.duration),c.easingImpl=r[v].apply(null,g)):c.easingImpl=r[v]}var y=c.easingImpl,m=void 0;if(m=0===c.duration?1:(n-d)/c.duration,c.applying&&(m=c.progress),m<0?m=0:m>1&&(m=1),null==c.delay){var b=c.startPosition,x=c.position;if(x&&u&&!e.locked()){var w=e.position();o(b.x,x.x)&&(w.x=i(b.x,x.x,m,y)),o(b.y,x.y)&&(w.y=i(b.y,x.y,m,y)),e.emit("position")}var _=c.startPan,E=c.pan,P=l.pan,C=null!=E&&s;C&&(o(_.x,E.x)&&(P.x=i(_.x,E.x,m,y)),o(_.y,E.y)&&(P.y=i(_.y,E.y,m,y)),e.emit("pan"));var T=c.startZoom,S=c.zoom,k=null!=S&&s;k&&(o(T,S)&&(l.zoom=i(T,S,m,y)),e.emit("zoom")),(C||k)&&e.emit("viewport");var D=c.style;if(D&&D.length>0&&u){for(var I=0;I=a?function(t,r){for(var a=0;a0?i=u:r=u}while(Math.abs(a)>o&&++l1e-4&&Math.abs(c.v)>1e-4;);return a?function(e){return s[e*(s.length-1)|0]}:u}}();e.exports=r},function(e,t,n){"use strict";var r=n(0);function i(e,t,n,r,i){if(1===r)return n;var a=i(t,n,r);return null==e?a:((e.roundValue||e.color)&&(a=Math.round(a)),void 0!==e.min&&(a=Math.max(a,e.min)),void 0!==e.max&&(a=Math.min(a,e.max)),a)}function a(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}e.exports=function(e,t,n,o,s){var u=null!=s?s.type:null;n<0?n=0:n>1&&(n=1);var l=a(e,s),c=a(t,s);if(r.number(l)&&r.number(c))return i(u,l,c,n,o);if(r.array(l)&&r.array(c)){for(var f=[],d=0;d0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchingStyle=e.batchingNotify=!0,e.batchStyleEles=this.collection(),e.batchNotifyEles=this.collection(),e.batchNotifyTypes=[],e.batchNotifyTypes.ids={}),e.batchCount++,this},endBatch:function(){var e=this._private;return e.batchCount--,0===e.batchCount&&(e.batchingStyle=!1,e.batchStyleEles.updateStyle(),e.batchingNotify=!1,this.notify({type:e.batchNotifyTypes,eles:e.batchNotifyEles})),this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch(function(){for(var n=Object.keys(e),r=0;r0;)e.removeChild(e.childNodes[0]);this._private.renderer=null},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};i.invalidateDimensions=i.resize,e.exports=i},function(e,t,n){"use strict";var r=n(0),i=n(7),a={collection:function(e,t){return r.string(e)?this.$(e):r.elementOrCollection(e)?e.collection():r.array(e)?new i(this,e,t):new i(this)},nodes:function(e){var t=this.$(function(e){return e.isNode()});return e?t.filter(e):t},edges:function(e){var t=this.$(function(e){return e.isEdge()});return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};a.elements=a.filter=a.$,e.exports=a},function(e,t,n){"use strict";var r=n(0),i=n(18),a={style:function(e){e&&this.setStyle(e).update();return this._private.style},setStyle:function(e){var t=this._private;return r.stylesheet(e)?t.style=e.generateStyle(this):r.array(e)?t.style=i.fromJson(this,e):r.string(e)?t.style=i.fromString(this,e):t.style=i(this),t.style}};e.exports=a},function(e,t,n){"use strict";var r=n(1),i=n(0),a=n(5),o={apply:function(e){var t=this._private,n=t.cy.collection();t.newStyle&&(t.contextStyles={},t.propDiffs={},this.cleanElements(e,!0));for(var r=0;r0;if(l||c){var f=void 0;l&&c?f=u.properties:l?f=u.properties:c&&(f=u.mappedProperties);for(var d=0;d0){n=!0;break}}t.hasPie=n;var i=e.pstyle("text-transform").strValue,a=e.pstyle("label").strValue,o=e.pstyle("source-label").strValue,s=e.pstyle("target-label").strValue,u=e.pstyle("font-style").strValue,l=e.pstyle("font-size").pfValue+"px",c=e.pstyle("font-family").strValue,f=e.pstyle("font-weight").strValue,d=u+"$"+l+"$"+c+"$"+f+"$"+i+"$"+e.pstyle("text-valign").strValue+"$"+e.pstyle("text-valign").strValue+"$"+e.pstyle("text-outline-width").pfValue+"$"+e.pstyle("text-wrap").strValue+"$"+e.pstyle("text-max-width").pfValue;t.labelStyleKey=d,t.sourceLabelKey=d+"$"+o,t.targetLabelKey=d+"$"+s,t.labelKey=d+"$"+a,t.fontKey=u+"$"+f+"$"+l+"$"+c,t.styleKey=Date.now()}},applyParsedProperty:function(e,t){var n=this,a=t,o=e._private.style,s=void 0,u=n.types,l=n.properties[a.name].type,c=a.bypass,f=o[a.name],d=f&&f.bypass,h=e._private,p=function(){n.checkZOrderTrigger(e,a.name,f?f.value:null,a.value)};if("curve-style"===t.name&&"haystack"===t.value&&e.isEdge()&&(e.isLoop()||e.source().isParent()||e.target().isParent())&&(a=t=this.parse(t.name,"bezier",c)),a.delete)return o[a.name]=void 0,p(),!0;if(a.deleteBypassed)return f?!!f.bypass&&(f.bypassed=void 0,p(),!0):(p(),!0);if(a.deleteBypass)return f?!!f.bypass&&(o[a.name]=f.bypassed,p(),!0):(p(),!0);var v=function(){r.error("Do not assign mappings to elements without corresponding data (e.g. ele `"+e.id()+"` for property `"+a.name+"` with data field `"+a.field+"`); try a `["+a.field+"]` selector to limit scope to elements with `"+a.field+"` defined")};switch(a.mapped){case u.mapData:for(var g=a.field.split("."),y=h.data,m=0;m1&&(b=1),l.color){var x=a.valueMin[0],w=a.valueMax[0],_=a.valueMin[1],E=a.valueMax[1],P=a.valueMin[2],C=a.valueMax[2],T=null==a.valueMin[3]?1:a.valueMin[3],S=null==a.valueMax[3]?1:a.valueMax[3],k=[Math.round(x+(w-x)*b),Math.round(_+(E-_)*b),Math.round(P+(C-P)*b),Math.round(T+(S-T)*b)];s={bypass:a.bypass,name:a.name,value:k,strValue:"rgb("+k[0]+", "+k[1]+", "+k[2]+")"}}else{if(!l.number)return!1;var D=a.valueMin+(a.valueMax-a.valueMin)*b;s=this.parse(a.name,D,a.bypass,"mapping")}s||(s=this.parse(a.name,f.strValue,a.bypass,"mapping")),s||v(),s.mapping=a,a=s;break;case u.data:var I=a.field.split("."),M=h.data;if(M)for(var O=0;O0&&u>0){for(var c={},f=!1,d=0;d0?e.delayAnimation(l).play().promise().then(t):t()}).then(function(){return e.animation({style:c,duration:u,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(e,s),e.emitAndNotify("style"),o.transitioning=!1})}else o.transitioning&&(this.removeBypasses(e,s),e.emitAndNotify("style"),o.transitioning=!1)},checkZOrderTrigger:function(e,t,n,r){var i=this.properties[t];null==i.triggersZOrder||null!=n&&!i.triggersZOrder(n,r)||this._private.cy.notify({type:"zorder",eles:e})}};e.exports=o},function(e,t,n){"use strict";var r=n(0),i=n(1),a={applyBypass:function(e,t,n,a){var o=[];if("*"===t||"**"===t){if(void 0!==n)for(var s=0;sn.length?t.substr(n.length):""}function u(){a=a.length>o.length?a.substr(o.length):""}for(t=t.replace(/[\/][*](\s|.)+?[*][\/]/g,"");;){if(t.match(/^\s*$/))break;var l=t.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){r.error("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+t);break}n=l[0];var c=l[1];if("core"!==c)if(new i(c)._private.invalid){r.error("Skipping parsing of block: Invalid selector found in string stylesheet: "+c),s();continue}var f=l[2],d=!1;a=f;for(var h=[];;){if(a.match(/^\s*$/))break;var p=a.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!p){r.error("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+f),d=!0;break}o=p[0];var v=p[1],g=p[2];if(this.properties[v])this.parse(v,g)?(h.push({name:v,val:g}),u()):(r.error("Skipping property: Invalid property definition in: "+o),u());else r.error("Skipping property: Invalid property name in: "+o),u()}if(d){s();break}this.selector(c);for(var y=0;y node").css({shape:"rectangle",padding:10,"background-color":"#eee","border-color":"#ccc","border-width":1}).selector("edge").css({width:3,"curve-style":"haystack"}).selector(":parent <-> node").css({"curve-style":"bezier","source-endpoint":"outside-to-line","target-endpoint":"outside-to-line"}).selector(":selected").css({"background-color":"#0169D9","line-color":"#0169D9","source-arrow-color":"#0169D9","target-arrow-color":"#0169D9","mid-source-arrow-color":"#0169D9","mid-target-arrow-color":"#0169D9"}).selector("node:parent:selected").css({"background-color":"#CCE1F9","border-color":"#aec8e5"}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}).selector("core").css({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":30,"outside-texture-bg-color":"#000","outside-texture-bg-opacity":.125}),this.defaultLength=this.length},e.exports=a},function(e,t,n){"use strict";var r=n(1),i=n(0),a=n(2),o={parse:function(e,t,n,a){if(i.fn(t))return this.parseImplWarn(e,t,n,a);var o=[e,t,n,"mapping"===a||!0===a||!1===a||null==a?"dontcare":a].join("$"),s=this.propCache=this.propCache||{},u=void 0;return(u=s[o])||(u=s[o]=this.parseImplWarn(e,t,n,a)),(n||"mapping"===a)&&(u=r.copy(u))&&(u.value=r.copy(u.value)),u},parseImplWarn:function(e,t,n,i){var a=this.parseImpl(e,t,n,i);return a||null==t||r.error("The style property `%s: %s` is invalid",e,t),a},parseImpl:function(e,t,n,o){e=r.camel2dash(e);var s=this.properties[e],u=t,l=this.types;if(!s)return null;if(void 0===t)return null;s.alias&&(s=s.pointsTo,e=s.name);var c=i.string(t);c&&(t=t.trim());var f=s.type;if(!f)return null;if(n&&(""===t||null===t))return{name:e,value:t,bypass:!0,deleteBypass:!0};if(i.fn(t))return{name:e,value:t,strValue:"fn",mapped:l.fn,bypass:n};var d=void 0,h=void 0;if(!c||o);else{if(d=new RegExp(l.data.regex).exec(t)){if(n)return!1;var p=l.data;return{name:e,value:d,strValue:""+t,mapped:p,field:d[1],bypass:n}}if(h=new RegExp(l.mapData.regex).exec(t)){if(n)return!1;if(f.multiple)return!1;var v=l.mapData;if(!f.color&&!f.number)return!1;var g=this.parse(e,h[4]);if(!g||g.mapped)return!1;var y=this.parse(e,h[5]);if(!y||y.mapped)return!1;if(g.value===y.value)return!1;if(f.color){var m=g.value,b=y.value;if(!(m[0]!==b[0]||m[1]!==b[1]||m[2]!==b[2]||m[3]!==b[3]&&(null!=m[3]&&1!==m[3]||null!=b[3]&&1!==b[3])))return!1}return{name:e,value:h,strValue:""+t,mapped:v,field:h[1],fieldMin:parseFloat(h[2]),fieldMax:parseFloat(h[3]),valueMin:g.value,valueMax:y.value,bypass:n}}}if(f.multiple&&"multiple"!==o){var x=void 0;if(x=c?t.split(/\s+/):i.array(t)?t:[t],f.evenMultiple&&x.length%2!=0)return null;for(var w=[],_=[],E=[],P=!1,C=0;Cf.max||f.strictMax&&t===f.max))return null;var O={name:e,value:t,strValue:""+t+(k||""),units:k,bypass:n};return f.unitless||"px"!==k&&"em"!==k?O.pfValue=t:O.pfValue="px"!==k&&k?this.getEmSizeInPixels()*t:t,"ms"!==k&&"s"!==k||(O.pfValue="ms"===k?t:1e3*t),"deg"!==k&&"rad"!==k||(O.pfValue="rad"===k?t:a.deg2rad(t)),"%"===k&&(O.pfValue=t/100),O}if(f.propList){var z=[],N=""+t;if("none"===N);else{for(var A=N.split(","),B=0;B0&&s>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:u=(u=(u=Math.min((o-2*t)/n.w,(s-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:u)t.maxZoom?t.maxZoom:s)t.maxZoom||!t.zoomingEnabled?o=!0:(t.zoom=u,a.push("zoom"))}if(i&&(!o||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;r.number(l.x)&&(t.pan.x=l.x,s=!1),r.number(l.y)&&(t.pan.y=l.y,s=!1),s||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify({type:"viewport"})),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify({type:"viewport"})),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(r.string(e)){var n=e;e=this.mutableElements().filter(n)}else r.elementOrCollection(e)||(e=this.mutableElements());if(0!==e.length){var i=e.boundingBox(),a=this.width(),o=this.height();return{x:(a-(t=void 0===t?this._private.zoom:t)*(i.x1+i.x2))/2,y:(o-t*(i.y1+i.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container;return n.sizeCache=n.sizeCache||(r?(e=i.getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}}};o.centre=o.center,o.autolockNodes=o.autolock,o.autoungrabifyNodes=o.autoungrabify,e.exports=o},function(e,t,n){"use strict";var r=n(1),i=n(4),a=n(7),o=n(12),s=n(95),u=n(0),l=n(11),c={},f={};function d(e,t,n){var s=n,f=function(n){r.error("Can not register `"+t+"` for `"+e+"` since `"+n+"` already exists in the prototype and can not be overridden")};if("core"===e){if(o.prototype[t])return f(t);o.prototype[t]=n}else if("collection"===e){if(a.prototype[t])return f(t);a.prototype[t]=n}else if("layout"===e){for(var d=function(e){this.options=e,n.call(this,e),u.plainObject(this._private)||(this._private={}),this._private.cy=e.cy,this._private.listeners=[],this.createEmitter()},p=d.prototype=Object.create(n.prototype),v=[],g=0;g0;)g();l=n.collection();for(var y=function(e){var t=p[e],n=t.maxDegree(!1),r=t.filter(function(e){return e.degree(!1)===n});l=l.add(r)},m=0;mb.length-1;)b.push([]);b[K].push(H),G.depth=K,G.index=b[K].length-1}B()}var J=0;if(t.avoidOverlap)for(var ee=0;eel||0===t)&&(r+=u/c,i++)}return r/=i=Math.max(1,i),0===i&&(r=void 0),ie[e.id()]=r,r},oe=function(e,t){return ae(e)-ae(t)},se=0;se<3;se++){for(var ue=0;ue0&&b[0].length<=3?c/2:0),d=2*Math.PI/b[i].length*a;return 0===i&&1===b[0].length&&(f=1),{x:fe+f*Math.cos(d),y:de+f*Math.sin(d)}}return{x:fe+(a+1-(o+1)/2)*s,y:(i+1)*l}}var h={x:fe+(a+1-(o+1)/2)*s,y:(i+1)*l};return h},pe={},ve=b.length-1;ve>=0;ve--)for(var ge=b[ve],ye=0;ye1&&t.avoidOverlap){h*=1.75;var m=Math.cos(f)-Math.cos(0),b=Math.sin(f)-Math.sin(0),x=Math.sqrt(h*h/(m*m+b*b));d=Math.max(x,d)}return s.layoutPositions(this,t,function(e,n){var r=t.startAngle+n*f*(o?1:-1),i=d*Math.cos(r),a=d*Math.sin(r);return{x:l+i,y:c+a}}),this},e.exports=s},function(e,t,n){"use strict";var r=n(1),i=n(2),a={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function o(e){this.options=r.extend({},a,e)}o.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,a=t.eles.nodes().not(":parent"),o=i.makeBoundingBox(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,u=o.y1+o.h/2,l=[],c=(t.startAngle,0),f=0;f0)Math.abs(m[0].value-x.value)>=g&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var _=y.length>0&&y[0].length>1,E=(Math.min(o.w,o.h)/2-w)/(y.length+_?1:0);w=Math.min(w,E)}for(var P=0,C=0;C1&&t.avoidOverlap){var D=Math.cos(k)-Math.cos(0),I=Math.sin(k)-Math.sin(0),M=Math.sqrt(w*w/(D*D+I*I));P=Math.max(M,P)}T.r=P,P+=w}if(t.equidistant){for(var O=0,z=0,N=0;N0)var l=(d=r.nodeOverlap*s)*i/(m=Math.sqrt(i*i+a*a)),f=d*a/m;else{var d,h=c(e,i,a),p=c(t,-1*i,-1*a),v=p.x-h.x,g=p.y-h.y,y=v*v+g*g,m=Math.sqrt(y);l=(d=(e.nodeRepulsion+t.nodeRepulsion)/y)*v/m,f=d*g/m}e.isLocked||(e.offsetX-=l,e.offsetY-=f),t.isLocked||(t.offsetX+=l,t.offsetY+=f)}},u=function(e,t,n,r){if(n>0)var i=e.maxX-t.minX;else i=t.maxX-e.minX;if(r>0)var a=e.maxY-t.minY;else a=t.maxY-e.minY;return i>=0&&a>=0?Math.sqrt(i*i+a*a):0},c=function(e,t,n){var r=e.positionX,i=e.positionY,a=e.height||1,o=e.width||1,s=n/t,u=a/o,l={};return 0===t&&0n?(l.x=r,l.y=i+a/2,l):0t&&-1*u<=s&&s<=u?(l.x=r-o/2,l.y=i-o*n/2/t,l):0=u)?(l.x=r+a*t/2/n,l.y=i+a/2,l):0>n&&(s<=-1*u||s>=u)?(l.x=r-a*t/2/n,l.y=i-a/2,l):l},f=function(e,t){for(var n=0;n1){var p=t.gravity*f/h,v=t.gravity*d/h;c.offsetX+=p,c.offsetY+=v}}}}},h=function(e,t){var n=[],r=0,i=-1;for(n.push.apply(n,e.graphSet[0]),i+=e.graphSet[0].length;r<=i;){var a=n[r++],o=e.idToIndex[a],s=e.layoutNodes[o],u=s.children;if(0n)var i={x:n*e/r,y:n*t/r};else i={x:e,y:t};return i},g=function e(t,n){var r=t.parentId;if(null!=r){var i=n.layoutNodes[n.idToIndex[r]],a=!1;return(null==i.maxX||t.maxX+i.padRight>i.maxX)&&(i.maxX=t.maxX+i.padRight,a=!0),(null==i.minX||t.minX-i.padLefti.maxY)&&(i.maxY=t.maxY+i.padBottom,a=!0),(null==i.minY||t.minY-i.padTopv&&(d+=p+t.componentSpacing,f=0,h=0,p=0)}}}(0,i),r}).then(function(e){f.layoutNodes=e.layoutNodes,a.stop(),m()});var m=function(){!0===e.animate||!1===e.animate?y({force:!0,next:function(){n.one("layoutstop",e.stop),n.emit({type:"layoutstop",layout:n})}}):e.eles.nodes().layoutPositions(n,e,function(e){var t=f.layoutNodes[f.idToIndex[e.data("id")]];return{x:t.positionX,y:t.positionY}})};return this},l.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},l.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var c=function(e,t,n){for(var r=n.eles.edges(),i=n.eles.nodes(),s={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:e.width(),clientHeight:e.width(),boundingBox:a.makeBoundingBox(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()})},u=n.eles.components(),l={},c=0;c0){s.graphSet.push(E);for(c=0;cr.count?0:r.graph},d=function e(t,n,r,i){var a=i.graphSet[r];if(-1o){var p=c(),v=f();(p-1)*v>=o?c(p-1):(v-1)*p>=o&&f(v-1)}else for(;l*u=o?f(y+1):c(g+1)}var m=a.w/l,b=a.h/u;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=l&&(M=0,I++)},z={},N=0;N(r=i.sqdistToFiniteLine(e,t,w[_],w[_+1],w[_+2],w[_+3])))return m(n,r),!0}else if("bezier"===o.edgeType||"multibezier"===o.edgeType||"self"===o.edgeType||"compound"===o.edgeType)for(w=o.allpts,_=0;_+5(r=i.sqdistToQuadraticBezier(e,t,w[_],w[_+1],w[_+2],w[_+3],w[_+4],w[_+5])))return m(n,r),!0;y=y||a.source,x=x||a.target;var E=u.getArrowWidth(s,c),P=[{name:"source",x:o.arrowStartX,y:o.arrowStartY,angle:o.srcArrowAngle},{name:"target",x:o.arrowEndX,y:o.arrowEndY,angle:o.tgtArrowAngle},{name:"mid-source",x:o.midX,y:o.midY,angle:o.midsrcArrowAngle},{name:"mid-target",x:o.midX,y:o.midY,angle:o.midtgtArrowAngle}];for(_=0;_0&&(b(y),b(x))}function w(e,t,n){return a.getPrefixedProperty(e,t,n)}function _(n,r){var a,o=n._private,s=g;a=r?r+"-":"";var u=n.pstyle(a+"label").value;if("yes"===n.pstyle("text-events").strValue&&u){var l=o.rstyle,c=n.pstyle("text-border-width").pfValue,f=n.pstyle("text-background-padding").pfValue,d=w(l,"labelWidth",r)+c+2*s+2*f,h=w(l,"labelHeight",r)+c+2*s+2*f,p=w(l,"labelX",r),v=w(l,"labelY",r),y=w(o.rscratch,"labelAngle",r),b=p-d/2,x=p+d/2,_=v-h/2,E=v+h/2;if(y){var P=Math.cos(y),C=Math.sin(y),T=function(e,t){return{x:(e-=p)*P-(t-=v)*C+p,y:e*C+t*P+v}},S=T(b,_),k=T(b,E),D=T(x,_),I=T(x,E),M=[S.x,S.y,D.x,D.y,I.x,I.y,k.x,k.y];if(i.pointInsidePolygonPoints(e,t,M))return m(n),!0}else{var O={w:d,h:h,x1:b,x2:x,y1:_,y2:E};if(i.inBoundingBox(O,e,t))return m(n),!0}}}n&&(c=c.interactive);for(var E=c.length-1;E>=0;E--){var P=c[E];P.isNode()?b(P)||_(P):x(P)||_(P)||_(P,"source")||_(P,"target")}return f},getAllInBox:function(e,t,n,r){var a=this.getCachedZSortedEles().interactive,o=[],s=Math.min(e,n),u=Math.max(e,n),l=Math.min(t,r),c=Math.max(t,r);e=s,n=u,t=l,r=c;for(var f=i.makeBoundingBox({x1:e,y1:t,x2:n,y2:r}),d=0;dm?m+"$-$"+y:y+"$-$"+m,v&&(t="unbundled$-$"+p.id);var b=c[t];null==b&&(b=c[t]=[],f.push(t)),b.push(Ut),v&&(b.hasUnbundled=!0),g&&(b.hasBezier=!0)}else d.push(Ut)}for(var x=0;xKt.id()){var _=Qt;Qt=Kt,Kt=_}Jt=Qt.position(),en=Kt.position(),tn=Qt.outerWidth(),rn=Qt.outerHeight(),nn=Kt.outerWidth(),an=Kt.outerHeight(),n=u.nodeShapes[this.getNodeShape(Qt)],a=u.nodeShapes[this.getNodeShape(Kt)],s=!1;var E={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0},P=Jt.x,C=Jt.y,T=tn,S=rn,k=en.x,D=en.y,I=nn,M=an,O=w.length;for(h=0;h=d||w){h={cp:m,segment:x};break}}if(h)break}m=h.cp;var _=(d-v)/(x=h.segment).length,E=x.t1-x.t0,P=f?x.t0+E*_:x.t1-E*_;P=r.bound(0,P,1),t=r.qbezierPtAt(m.p0,m.p1,m.p2,P),s=function(e,t,n,i){var a=r.bound(0,i-.001,1),o=r.bound(0,i+.001,1),s=r.qbezierPtAt(e,t,n,a),l=r.qbezierPtAt(e,t,n,o);return u(s,l)}(m.p0,m.p1,m.p2,P);break;case"straight":case"segments":case"haystack":var C,T,S,k,D=0,I=i.allpts.length;for(y=0;y+3=d));y+=2);P=(d-T)/C;P=r.bound(0,P,1),t=r.lineAt(S,k,P),s=u(S,k)}c("labelX",a,t.x),c("labelY",a,t.y),c("labelAutoAngle",a,s)}};d("source"),d("target"),this.applyLabelDimensions(e)}},o.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},o.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),i=this.calculateLabelDimensions(e,r);a.setPrefixedProperty(n.rstyle,"labelWidth",t,i.width),a.setPrefixedProperty(n.rscratch,"labelWidth",t,i.width),a.setPrefixedProperty(n.rstyle,"labelHeight",t,i.height),a.setPrefixedProperty(n.rscratch,"labelHeight",t,i.height)},o.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",i=e.pstyle(r+"label").strValue,o=e.pstyle("text-transform").value,s=function(e,r){return r?(a.setPrefixedProperty(n.rscratch,e,t,r),r):a.getPrefixedProperty(n.rscratch,e,t)};if(!i)return"";"none"==o||("uppercase"==o?i=i.toUpperCase():"lowercase"==o&&(i=i.toLowerCase()));var u=e.pstyle("text-wrap").value;if("wrap"===u){var l=s("labelKey");if(l&&s("labelWrapKey")===l)return s("labelWrapCachedText");for(var c=i.split("\n"),f=e.pstyle("text-max-width").pfValue,d=[],h=0;hf){for(var v=p.split(/\s+/),g="",y=0;yf)break;x+=i[_],_===i.length-1&&(w=!0)}return w||(x+="…"),x}return i},o.calculateLabelDimensions=function(e,t,n){var r=e._private.labelStyleKey+"$@$"+t;n&&(r+="$@$"+n);var i=this.labelDimCache||(this.labelDimCache={});if(i[r])return i[r];var a=e.pstyle("font-style").strValue,o=1*e.pstyle("font-size").pfValue+"px",s=e.pstyle("font-family").strValue,u=e.pstyle("font-weight").strValue,l=this.labelCalcDiv;l||(l=this.labelCalcDiv=document.createElement("div"),document.body.appendChild(l));var c=l.style;return c.fontFamily=s,c.fontStyle=a,c.fontSize=o,c.fontWeight=u,c.position="absolute",c.left="-9999px",c.top="-9999px",c.zIndex="-1",c.visibility="hidden",c.pointerEvents="none",c.padding="0",c.lineHeight="1","wrap"===e.pstyle("text-wrap").value?c.whiteSpace="pre":c.whiteSpace="normal",l.textContent=t,i[r]={width:Math.ceil(l.clientWidth/1),height:Math.ceil(l.clientHeight/1)},i[r]},o.calculateLabelAngles=function(e){var t=e._private.rscratch,n=e.isEdge(),r=e.pstyle("text-rotation"),i=r.strValue;"none"===i?t.labelAngle=t.sourceLabelAngle=t.targetLabelAngle=0:n&&"autorotate"===i?(t.labelAngle=t.labelAutoAngle,t.sourceLabelAngle=t.sourceLabelAutoAngle,t.targetLabelAngle=t.targetLabelAutoAngle):t.labelAngle=t.sourceLabelAngle=t.targetLabelAngle="autorotate"===i?0:r.pfValue},e.exports=o},function(e,t,n){"use strict";var r={getNodeShape:function(e){var t=e.pstyle("shape").value;if(e.isParent())return"rectangle"===t||"roundrectangle"===t||"cutrectangle"===t||"barrel"===t?t:"rectangle";if("polygon"===t){var n=e.pstyle("shape-polygon-points").value;return this.nodeShapes.makePolygon(n).name}return t}};e.exports=r},function(e,t,n){"use strict";var r={registerCalculationListeners:function(){var e=this.cy,t=e.collection(),n=this,r=function(e,n){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t.merge(e);for(var i=0;i=e.desktopTapThreshold2}var k=n(i);b&&(e.hoverData.tapholdCancelled=!0);s=!0,t(y,["mousemove","vmousemove","tapdrag"],i,{position:{x:h[0],y:h[1]}});var D=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||u.emit("boxstart"),g[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(b){var I={originalEvent:i,type:"cxtdrag",position:{x:h[0],y:h[1]}};w?w.emit(I):u.emit(I),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&y===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit({originalEvent:i,type:"cxtdragout",position:{x:h[0],y:h[1]}}),e.hoverData.cxtOver=y,y&&y.emit({originalEvent:i,type:"cxtdragover",position:{x:h[0],y:h[1]}}))}}else if(e.hoverData.dragging){if(s=!0,u.panningEnabled()&&u.userPanningEnabled()){var M;if(e.hoverData.justStartedPan){var O=e.hoverData.mdownPos;M={x:(h[0]-O[0])*l,y:(h[1]-O[1])*l},e.hoverData.justStartedPan=!1}else M={x:_[0]*l,y:_[1]*l};u.panBy(M),e.hoverData.dragged=!0}h=e.projectIntoViewport(i.clientX,i.clientY)}else if(1!=g[4]||null!=w&&!w.isEdge()){if(w&&w.isEdge()&&w.active()&&w.unactivate(),w&&w.grabbed()||y==x||(x&&t(x,["mouseout","tapdragout"],i,{position:{x:h[0],y:h[1]}}),y&&t(y,["mouseover","tapdragover"],i,{position:{x:h[0],y:h[1]}}),e.hoverData.last=y),w)if(b){if(u.boxSelectionEnabled()&&k)w&&w.grabbed()&&(d(E),w.emit("free")),D();else if(w&&w.grabbed()&&e.nodeIsDraggable(w)){var z=!e.dragData.didDrag;z&&e.redrawHint("eles",!0),e.dragData.didDrag=!0;var N=[];e.hoverData.draggingEles||c(u.collection(E),{inDragLayer:!0});for(var A=0;A0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=[]),t(s,["mouseup","tapend","vmouseup"],r,{position:{x:a[0],y:a[1]}}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||t(l,["click","tap","vclick"],r,{position:{x:a[0],y:a[1]}}),s!=l||e.dragData.didDrag||e.hoverData.selecting||null!=s&&s._private.selectable&&(e.hoverData.dragging||("additive"===i.selectionType()||c?s.selected()?s.unselect():s.select():c||(i.$(":selected").unmerge(s).unselect(),s.select())),e.redrawHint("eles",!0)),e.hoverData.selecting){var p=i.collection(e.getAllInBox(o[0],o[1],o[2],o[3]));e.redrawHint("select",!0),p.length>0&&e.redrawHint("eles",!0),i.emit("boxend");var v=function(e){return e.selectable()&&!e.selected()};"additive"===i.selectionType()?p.emit("box").stdFilter(v).select().emit("boxselect"):(c||i.$(":selected").unmerge(p).unselect(),p.emit("box").stdFilter(v).select().emit("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!o[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var g=l&&l.grabbed();d(u),g&&l.emit("free")}}o[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null}},!1);var b,x,w,_,E,P,C,T,S,k,D,I,M;e.registerBinding(e.container,"wheel",function(t){if(!e.scrollingPage){var n,r=e.cy,i=e.projectIntoViewport(t.clientX,t.clientY),a=[i[0]*r.zoom()+r.pan().x,i[1]*r.zoom()+r.pan().y];e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||0!==e.selection[4]?t.preventDefault():r.panningEnabled()&&r.userPanningEnabled()&&r.zoomingEnabled()&&r.userZoomingEnabled()&&(t.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout(function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()},150),n=null!=t.deltaY?t.deltaY/-250:null!=t.wheelDeltaY?t.wheelDeltaY/1e3:t.wheelDelta/1e3,n*=e.wheelSensitivity,1===t.deltaMode&&(n*=33),r.zoom({level:r.zoom()*Math.pow(10,n),renderedPosition:{x:a[0],y:a[1]}}))}},!0),e.registerBinding(window,"scroll",function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},!0),e.registerBinding(e.container,"mouseout",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),e.registerBinding(e.container,"mouseover",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var O,z,N,A,B=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},L=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",O=function(n){if(m(n)){p(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var r=e.cy,i=e.touchData.now,a=e.touchData.earlier;if(n.touches[0]){var o=e.projectIntoViewport(n.touches[0].clientX,n.touches[0].clientY);i[0]=o[0],i[1]=o[1]}if(n.touches[1]){o=e.projectIntoViewport(n.touches[1].clientX,n.touches[1].clientY);i[2]=o[0],i[3]=o[1]}if(n.touches[2]){o=e.projectIntoViewport(n.touches[2].clientX,n.touches[2].clientY);i[4]=o[0],i[5]=o[1]}if(n.touches[1]){d(e.dragData.touchDragEles);var s=e.findContainerClientCoords();S=s[0],k=s[1],D=s[2],I=s[3],b=n.touches[0].clientX-S,x=n.touches[0].clientY-k,w=n.touches[1].clientX-S,_=n.touches[1].clientY-k,M=0<=b&&b<=D&&0<=w&&w<=D&&0<=x&&x<=I&&0<=_&&_<=I;var l=r.pan(),h=r.zoom();E=B(b,x,w,_),P=L(b,x,w,_),T=[((C=[(b+w)/2,(x+_)/2])[0]-l.x)/h,(C[1]-l.y)/h];if(P<4e4&&!n.touches[2]){var v=e.findNearestElement(i[0],i[1],!0,!0),g=e.findNearestElement(i[2],i[3],!0,!0);return v&&v.isNode()?(v.activate().emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=v):g&&g.isNode()?(g.activate().emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=g):r.emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(n.touches[2]);else if(n.touches[1]);else if(n.touches[0]){var y=e.findNearestElements(i[0],i[1],!0,!0),O=y[0];if(null!=O&&(O.activate(),e.touchData.start=O,e.touchData.starts=y,e.nodeIsGrabbable(O))){var z=e.dragData.touchDragEles=[],N=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),O.selected()?(N=r.$(function(t){return t.selected()&&e.nodeIsGrabbable(t)}),c(N,{addToList:z})):f(O,{addToList:z}),u(O);var A=function(e){return{originalEvent:n,type:e,position:{x:i[0],y:i[1]}}};O.emit(A("grabon")),N?N.forEach(function(e){e.emit(A("grab"))}):O.emit(A("grab"))}t(O,["touchstart","tapstart","vmousedown"],n,{position:{x:i[0],y:i[1]}}),null==O&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||(t(e.touchData.start,["taphold"],n,{position:{x:i[0],y:i[1]}}),e.touchData.start||r.$(":selected").unselect())},e.tapholdDuration)}if(n.touches.length>=1){for(var R=e.touchData.startPosition=[],j=0;j=e.touchTapThreshold2}if(i&&e.touchData.cxt){n.preventDefault();var z=n.touches[0].clientX-S,N=n.touches[0].clientY-k,A=n.touches[1].clientX-S,R=n.touches[1].clientY-k,j=L(z,N,A,R);if(j/P>=2.25||j>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var q={originalEvent:n,type:"cxttapend",position:{x:l[0],y:l[1]}};e.touchData.start?(e.touchData.start.unactivate().emit(q),e.touchData.start=null):u.emit(q)}}if(i&&e.touchData.cxt){q={originalEvent:n,type:"cxtdrag",position:{x:l[0],y:l[1]}};e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(q):u.emit(q),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var F=e.findNearestElement(l[0],l[1],!0,!0);e.touchData.cxtOver&&F===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit({originalEvent:n,type:"cxtdragout",position:{x:l[0],y:l[1]}}),e.touchData.cxtOver=F,F&&F.emit({originalEvent:n,type:"cxtdragover",position:{x:l[0],y:l[1]}}))}else if(i&&n.touches[2]&&u.boxSelectionEnabled())n.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||u.emit("boxstart"),e.touchData.selecting=!0,e.redrawHint("select",!0),s&&0!==s.length&&void 0!==s[0]?(s[2]=(l[0]+l[2]+l[4])/3,s[3]=(l[1]+l[3]+l[5])/3):(s[0]=(l[0]+l[2]+l[4])/3,s[1]=(l[1]+l[3]+l[5])/3,s[2]=(l[0]+l[2]+l[4])/3+1,s[3]=(l[1]+l[3]+l[5])/3+1),s[4]=1,e.touchData.selecting=!0,e.redraw();else if(i&&n.touches[1]&&u.zoomingEnabled()&&u.panningEnabled()&&u.userZoomingEnabled()&&u.userPanningEnabled()){if(n.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),ee=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var V=0;V0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(window,"touchcancel",N=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(window,"touchend",A=function(n){var r=e.touchData.start;if(e.touchData.capture){0===n.touches.length&&(e.touchData.capture=!1),n.preventDefault();var i=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var a,o=e.cy,s=o.zoom(),u=e.touchData.now,l=e.touchData.earlier;if(n.touches[0]){var c=e.projectIntoViewport(n.touches[0].clientX,n.touches[0].clientY);u[0]=c[0],u[1]=c[1]}if(n.touches[1]){c=e.projectIntoViewport(n.touches[1].clientX,n.touches[1].clientY);u[2]=c[0],u[3]=c[1]}if(n.touches[2]){c=e.projectIntoViewport(n.touches[2].clientX,n.touches[2].clientY);u[4]=c[0],u[5]=c[1]}if(r&&r.unactivate(),e.touchData.cxt){if(a={originalEvent:n,type:"cxttapend",position:{x:u[0],y:u[1]}},r?r.emit(a):o.emit(a),!e.touchData.cxtDragged){var f={originalEvent:n,type:"cxttap",position:{x:u[0],y:u[1]}};r?r.emit(f):o.emit(f)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!n.touches[2]&&o.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var h=o.collection(e.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,e.redrawHint("select",!0),o.emit("boxend");h.emit("box").stdFilter(function(e){return e.selectable()&&!e.selected()}).select().emit("boxselect"),h.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=r&&r.unactivate(),n.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(n.touches[1]);else if(n.touches[0]);else if(!n.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var p=e.dragData.touchDragEles;if(null!=r){var v=r._private.grabbed;d(p),e.redrawHint("drag",!0),e.redrawHint("eles",!0),v&&r.emit("free"),t(r,["touchend","tapend","vmouseup","tapdragout"],n,{position:{x:u[0],y:u[1]}}),r.unactivate(),e.touchData.start=null}else{var g=e.findNearestElement(u[0],u[1],!0,!0);t(g,["touchend","tapend","vmouseup","tapdragout"],n,{position:{x:u[0],y:u[1]}})}var y=e.touchData.startPosition[0]-u[0],m=y*y,b=e.touchData.startPosition[1]-u[1],x=(m+b*b)*s*s;null!=r&&!e.dragData.didDrag&&r._private.selectable&&x0)return p[0]}return null},h=Object.keys(f),p=0;p0?d:r.roundRectangleIntersectLine(a,o,e,t,n,i,s)},checkPoint:function(e,t,n,i,a,o,s){var u=r.getRoundRectangleRadius(i,a),l=2*u;if(r.pointInsidePolygon(e,t,this.points,o,s,i,a-l,[0,-1],n))return!0;if(r.pointInsidePolygon(e,t,this.points,o,s,i-l,a,[0,-1],n))return!0;var c=i/2+2*n,f=a/2+2*n,d=[o-c,s-f,o-c,s,o+c,s,o+c,s-f];return!!r.pointInsidePolygonPoints(e,t,d)||(!!r.checkInEllipse(e,t,l,l,o+i/2-u,s+a/2-u,n)||!!r.checkInEllipse(e,t,l,l,o-i/2+u,s+a/2-u,n))}}},registerNodeShapes:function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",r.generateUnitNgonPointsFitToSquare(3,0)),this.generatePolygon("rectangle",r.generateUnitNgonPointsFitToSquare(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle(),this.generatePolygon("diamond",[0,1,1,0,0,-1,-1,0]),this.generatePolygon("pentagon",r.generateUnitNgonPointsFitToSquare(5,0)),this.generatePolygon("hexagon",r.generateUnitNgonPointsFitToSquare(6,0)),this.generatePolygon("heptagon",r.generateUnitNgonPointsFitToSquare(7,0)),this.generatePolygon("octagon",r.generateUnitNgonPointsFitToSquare(8,0));var n=new Array(20),i=r.generateUnitNgonPoints(5,0),a=r.generateUnitNgonPoints(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s0&&t.data.lyrTxrCache.invalidateElements(n)})}u.CANVAS_LAYERS=3,u.SELECT_BOX=0,u.DRAG=1,u.NODE=2,u.BUFFER_COUNT=3,u.TEXTURE_BUFFER=0,u.MOTIONBLUR_BUFFER_NODE=1,u.MOTIONBLUR_BUFFER_DRAG=2,u.redrawHint=function(e,t){var n=this;switch(e){case"eles":n.data.canvasNeedsRedraw[u.NODE]=t;break;case"drag":n.data.canvasNeedsRedraw[u.DRAG]=t;break;case"select":n.data.canvasNeedsRedraw[u.SELECT_BOX]=t}};var c="undefined"!=typeof Path2D;u.path2dEnabled=function(e){if(void 0===e)return this.pathsEnabled;this.pathsEnabled=!!e},u.usePaths=function(){return c&&this.pathsEnabled},[n(126),n(127),n(128),n(129),n(130),n(131),n(132),n(133),n(134),n(135)].forEach(function(e){r.extend(u,e)}),e.exports=s},function(e,t,n){"use strict";var r=n(2),i=n(1),a=n(9),o=n(19),s={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},u=function(e){this.renderer=e,this.onDequeues=[],this.setupDequeueing()},l=u.prototype;l.reasons=s,l.getTextureQueue=function(e){return this.eleImgCaches=this.eleImgCaches||{},this.eleImgCaches[e]=this.eleImgCaches[e]||[]},l.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},l.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new a(function(e,t){return t.reqs-e.reqs})},l.getElementIdToQueue=function(){return this.eleIdToCacheQueue=this.eleIdToCacheQueue||{}},l.getElement=function(e,t,n,i,a){var o=this,u=this.renderer,l=e._private.rscratch,c=u.cy.zoom();if(0===t.w||0===t.h||!e.visible())return null;if(null==i&&(i=Math.ceil(r.log2(c*n))),i<-4)i=-4;else if(c>=3.99||i>2)return null;var f,d=Math.pow(2,i),h=t.h*d,p=t.w*d,v=l.imgCaches=l.imgCaches||{},g=v[i];if(g)return g;if(f=h<=25?25:h<=50?50:50*Math.ceil(h/50),h>1024||p>1024||e.isEdge()||e.isParent())return null;var y=o.getTextureQueue(f),m=y[y.length-2],b=function(){return o.recycleTexture(f,p)||o.addTexture(f,p)};m||(m=y[y.length-1]),m||(m=b()),m.width-m.usedWidthi;T--)S=o.getElement(e,t,n,T,s.downscale);k()}else{var D;if(!E&&!P&&!C)for(T=i-1;T>=-4;T--){var I;if(I=v[T]){D=I;break}}if(_(D))return o.queueElement(e,i),D;m.context.translate(m.usedWidth,0),m.context.scale(d,d),u.drawElement(m.context,e,t,w),m.context.scale(1/d,1/d),m.context.translate(-m.usedWidth,0)}return g=v[i]={ele:e,x:m.usedWidth,texture:m,level:i,scale:d,width:p,height:h,scaledLabelShown:w},m.usedWidth+=Math.ceil(p+8),m.eleCaches.push(g),o.checkTextureFullness(m),g},l.invalidateElement=function(e){var t=e._private.rscratch.imgCaches;if(t)for(var n=-4;n<=2;n++){var r=t[n];if(r){var a=r.texture;a.invalidatedWidth+=r.width,t[n]=null,i.removeFromArray(a.eleCaches,r),this.removeFromQueue(e),this.checkTextureUtility(a)}}},l.checkTextureUtility=function(e){e.invalidatedWidth>=.5*e.width&&this.retireTexture(e)},l.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?i.removeFromArray(t,e):e.fullnessChecks++},l.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t);i.removeFromArray(n,e),e.retired=!0;for(var r=e.eleCaches,a=0;a=t)return o.retired=!1,o.usedWidth=0,o.invalidatedWidth=0,o.fullnessChecks=0,i.clearArray(o.eleCaches),o.context.setTransform(1,0,0,1,0,0),o.context.clearRect(0,0,o.width,o.height),i.removeFromArray(r,o),n.push(o),o}},l.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementIdToQueue(),i=e.id(),a=r[i];if(a)a.level=Math.max(a.level,t),a.reqs++,n.updateItem(a);else{var o={ele:e,level:t,reqs:1};n.push(o),r[i]=o}},l.dequeue=function(e){for(var t=this.getElementQueue(),n=this.getElementIdToQueue(),r=[],i=0;i<1&&t.size()>0;i++){var a=t.pop(),o=a.ele;if(null==o._private.rscratch.imgCaches[a.level]){n[o.id()]=null,r.push(a);var u=o.boundingBox();this.getElement(o,u,e,a.level,s.dequeue)}}return r},l.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementIdToQueue(),r=n[e.id()];null!=r&&(r.reqs=i.MAX_INT,t.updateItem(r),t.pop(),n[e.id()]=null)},l.onDequeue=function(e){this.onDequeues.push(e)},l.offDequeue=function(e){i.removeFromArray(this.onDequeues,e)},l.setupDequeueing=o.setupDequeueing({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;a.validateLayersElesOrdering(n,e);var u,l,c=a.layersByLevel,f=Math.pow(2,n),d=c[n]=c[n]||[];if(a.levelIsComplete(n,e))return d;!function(){var t=function(t){if(a.validateLayersElesOrdering(t,e),a.levelIsComplete(t,e))return l=c[t],!0},i=function(e){if(!l)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};i(1),i(-1);for(var o=d.length-1;o>=0;o--){var s=d[o];s.invalid&&r.removeFromArray(d,s)}}();var h=function(t){var r=(t=t||{}).after;if(function(){if(!u){u=i.makeBoundingBox();for(var t=0;t16e6)return null;var o=a.makeLayer(u,n);if(null!=r){var s=d.indexOf(r)+1;d.splice(s,0,o)}else(void 0===t.insert||t.insert)&&d.unshift(o);return o};if(a.skipping&&!s)return null;for(var p=null,v=e.length/1,g=!s,y=0;y=v||!i.boundingBoxInBoundingBox(p.bb,m.boundingBox()))&&!(p=h({insert:!0,after:p})))return null;l||g?a.queueLayer(p,m):a.drawEleInLayer(p,m,n,t),p.eles.push(m),x[n]=p}}return l||(g?null:d)},l.getEleLevelForLayerLevel=function(e,t){return e},l.drawEleInLayer=function(e,t,n,r){var i=this.renderer,a=e.context,o=t.boundingBox();if(0!==o.w&&0!==o.h&&t.visible()){var s=this.eleTxrCache,u=s.reasons.highQuality;n=this.getEleLevelForLayerLevel(n,r);var l=s.getElement(t,o,null,n,u);l?(d(a,!1),a.drawImage(l.texture.canvas,l.x,0,l.width,l.height,o.x1,o.y1,o.w,o.h),d(a,!0)):i.drawElement(a,t)}},l.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,i=0;i0)return!1;if(a.invalid)return!1;r+=a.eles.length}return r===t.length},l.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},l.invalidateElements=function(e){var t=this;t.lastInvalidationTime=r.performanceNow(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,function(e,n,r){t.invalidateLayer(e)})},l.invalidateLayer=function(e){if(this.lastInvalidationTime=r.performanceNow(),!e.invalid){var t=e.level,n=e.eles,i=this.layersByLevel[t];r.removeFromArray(i,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:d;e.lineWidth=p,e.lineCap="butt",i.strokeStyle(e,f[0],f[1],f[2],n),i.drawEdgePath(t,e,a.allpts,h)},g=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;i.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var y=t.pstyle("ghost-offset-x").pfValue,m=t.pstyle("ghost-offset-y").pfValue,b=t.pstyle("ghost-opacity").value,x=d*b;e.translate(y,m),v(x),g(x),e.translate(-y,-m)}v(),g(),function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l;e.lineWidth=u,"self"!==a.edgeType||o?e.lineCap="round":e.lineCap="butt",i.strokeStyle(e,c[0],c[1],c[2],n),i.drawEdgePath(t,e,a.allpts,"solid")}(),i.drawElementText(e,t,r),n&&e.translate(s.x1,s.y1)}},drawEdgePath:function(e,t,n,r){var i=e._private.rscratch,a=t,o=void 0,s=!1,u=this.usePaths();if(u){var l=n.join("$");i.pathCacheKey&&i.pathCacheKey===l?(o=t=i.pathCache,s=!0):(o=t=new Path2D,i.pathCacheKey=l,i.pathCache=o)}if(a.setLineDash)switch(r){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash([6,3]);break;case"solid":a.setLineDash([])}if(!s&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var c=2;c+30||I>0&&D>0){var O=d-M;switch(_){case"left":O-=g;break;case"center":O-=g/2}var z=h-y-M,N=g+2*M,A=y+2*M;if(k>0){var B=e.fillStyle,L=t.pstyle("text-background-color").value;e.fillStyle="rgba("+L[0]+","+L[1]+","+L[2]+","+k*a+")","roundrectangle"==t.pstyle("text-background-shape").strValue?(s=O,u=z,l=N,c=A,f=(f=2)||5,(o=e).beginPath(),o.moveTo(s+f,u),o.lineTo(s+l-f,u),o.quadraticCurveTo(s+l,u,s+l,u+f),o.lineTo(s+l,u+c-f),o.quadraticCurveTo(s+l,u+c,s+l-f,u+c),o.lineTo(s+f,u+c),o.quadraticCurveTo(s,u+c,s,u+c-f),o.lineTo(s,u+f),o.quadraticCurveTo(s,u,s+f,u),o.closePath(),o.fill()):e.fillRect(O,z,N,A),e.fillStyle=B}if(I>0&&D>0){var R=e.strokeStyle,j=e.lineWidth,q=t.pstyle("text-border-color").value,F=t.pstyle("text-border-style").value;if(e.strokeStyle="rgba("+q[0]+","+q[1]+","+q[2]+","+D*a+")",e.lineWidth=I,e.setLineDash)switch(F){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=I/4,e.setLineDash([]);break;case"solid":e.setLineDash([])}if(e.strokeRect(O,z,N,A),"double"===F){var V=I/2;e.strokeRect(O+V,z+V,N-2*V,A-2*V)}e.setLineDash&&e.setLineDash([]),e.lineWidth=j,e.strokeStyle=R}}var X=2*t.pstyle("text-outline-width").pfValue;if(X>0&&(e.lineWidth=X),"wrap"===t.pstyle("text-wrap").value){var Y=r.getPrefixedProperty(i,"labelWrapCachedLines",n),W=y/Y.length;switch(E){case"top":h-=(Y.length-1)*W;break;case"center":case"bottom":h-=(Y.length-1)*W}for(var U=0;U0&&e.strokeText(Y[U],d,h),e.fillText(Y[U],d,h),h+=W}else X>0&&e.strokeText(p,d,h),e.fillText(p,d,h);0!==P&&(e.rotate(-P),e.translate(-T,-S))}}},e.exports=a},function(e,t,n){"use strict";var r=n(0),i={drawNode:function(e,t,n,i){var a,o,s=this,u=t._private,l=u.rscratch,c=t.position();if(r.number(c.x)&&r.number(c.y)&&t.visible()){var f=t.effectiveOpacity(),d=s.usePaths(),h=void 0,p=!1,v=t.padding();a=t.width()+2*v,o=t.height()+2*v;var g=void 0;n&&(g=n,e.translate(-g.x1,-g.y1));for(var y=t.pstyle("background-image").value,m=new Array(y.length),b=new Array(y.length),x=0,w=0;w0&&void 0!==arguments[0]?arguments[0]:S;s.fillStyle(e,T[0],T[1],T[2],t)},O=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:I;s.strokeStyle(e,k[0],k[1],k[2],t)},z=t.pstyle("shape").strValue,N=t.pstyle("shape-polygon-points").pfValue;if(d){var A=z+"$"+a+"$"+o+("polygon"===z?"$"+N.join("$"):"");e.translate(c.x,c.y),l.pathCacheKey===A?(h=l.pathCache,p=!0):(h=new Path2D,l.pathCacheKey=A,l.pathCache=h)}var B,L,R,j=function(){if(!p){var n=c;d&&(n={x:0,y:0}),s.nodeShapes[s.getNodeShape(t)].draw(h||e,n.x,n.y,a,o)}d?e.fill(h):e.fill()},q=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,r=u.backgrounding,i=0,a=0;a0&&void 0!==arguments[0]&&arguments[0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f;s.hasPie(t)&&(s.drawPie(e,t,r),n&&(d||s.nodeShapes[s.getNodeShape(t)].draw(e,c.x,c.y,a,o)))},V=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,n=(P>0?P:-P)*t,r=P>0?0:255;0!==P&&(s.fillStyle(e,r,r,r,n),d?e.fill(h):e.fill())},X=function(){if(C>0){if(e.lineWidth=C,e.lineCap="butt",e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}if(d?e.stroke(h):e.stroke(),"double"===D){e.lineWidth=C/3;var t=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",d?e.stroke(h):e.stroke(),e.globalCompositeOperation=t}e.setLineDash&&e.setLineDash([])}};if("yes"===t.pstyle("ghost").value){var Y=t.pstyle("ghost-offset-x").pfValue,W=t.pstyle("ghost-offset-y").pfValue,U=t.pstyle("ghost-opacity").value,$=U*f;e.translate(Y,W),M(U*S),j(),q($),F(0!==P||0!==C),V($),O(U*I),X(),e.translate(-Y,-W)}M(),j(),q(),F(0!==P||0!==C),V(),O(),X(),d&&e.translate(-c.x,-c.y),s.drawElementText(e,t,i),B=t.pstyle("overlay-padding").pfValue,L=t.pstyle("overlay-opacity").value,R=t.pstyle("overlay-color").value,L>0&&(s.fillStyle(e,R[0],R[1],R[2],L),s.nodeShapes.roundrectangle.draw(e,c.x,c.y,a+2*B,o+2*B),e.fill()),n&&e.translate(g.x1,g.y1)}},hasPie:function(e){return(e=e[0])._private.hasPie},drawPie:function(e,t,n,r){t=t[0],r=r||t.position();var i=t.cy().style(),a=t.pstyle("pie-size"),o=r.x,s=r.y,u=t.width(),l=t.height(),c=Math.min(u,l)/2,f=0;this.usePaths()&&(o=0,s=0),"%"===a.units?c*=a.pfValue:void 0!==a.pfValue&&(c=a.pfValue/2);for(var d=1;d<=i.pieBackgroundN;d++){var h=t.pstyle("pie-"+d+"-background-size").value,p=t.pstyle("pie-"+d+"-background-color").value,v=t.pstyle("pie-"+d+"-background-opacity").value*n,g=h/100;g+f>1&&(g=1-f);var y=1.5*Math.PI+2*Math.PI*f,m=y+2*Math.PI*g;0===h||f>=1||f+g>1||(e.beginPath(),e.moveTo(o,s),e.arc(o,s,c,y,m),e.closePath(),this.fillStyle(e,p[0],p[1],p[2],v),e.fill(),f+=g)}}};e.exports=i},function(e,t,n){"use strict";var r={},i=n(1);r.getPixelRatio=function(){var e=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/t},r.paintCache=function(e){for(var t,n=this.paintCaches=this.paintCaches||[],r=!0,i=0;is.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!d&&(f[s.NODE]=!0,f[s.SELECT_BOX]=!0);var b=l.style()._private.coreStyle,x=l.zoom(),w=void 0!==a?a:x,_=l.pan(),E={x:_.x,y:_.y},P={zoom:x,pan:{x:_.x,y:_.y}},C=s.prevViewport;void 0===C||P.zoom!==C.zoom||P.pan.x!==C.pan.x||P.pan.y!==C.pan.y||g&&!v||(s.motionBlurPxRatio=1),o&&(E=o),w*=u,E.x*=u,E.y*=u;var T=s.getCachedZSortedEles();function S(e,t,n,r,i){var a=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",s.fillStyle(e,255,255,255,s.motionBlurTransparency),e.fillRect(t,n,r,i),e.globalCompositeOperation=a}function k(e,r){var i,u,l,f;s.clearingMotionBlur||e!==c.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]&&e!==c.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]?(i=E,u=w,l=s.canvasWidth,f=s.canvasHeight):(i={x:_.x*p,y:_.y*p},u=x*p,l=s.canvasWidth*p,f=s.canvasHeight*p),e.setTransform(1,0,0,1,0,0),"motionBlur"===r?S(e,0,0,l,f):t||void 0!==r&&!r||e.clearRect(0,0,l,f),n||(e.translate(i.x,i.y),e.scale(u,u)),o&&e.translate(o.x,o.y),a&&e.scale(a,a)}if(d||(s.textureDrawLastFrame=!1),d){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=l.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var D=s.data.bufferContexts[s.TEXTURE_BUFFER];D.setTransform(1,0,0,1,0,0),D.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:D,drawOnlyNodeLayer:!0,forcedPxRatio:u*s.textureMult}),(P=s.textureCache.viewport={zoom:l.zoom(),pan:l.pan(),width:s.canvasWidth,height:s.canvasHeight}).mpan={x:(0-P.pan.x)/P.zoom,y:(0-P.pan.y)/P.zoom}}f[s.DRAG]=!1,f[s.NODE]=!1;var I=c.contexts[s.NODE],M=s.textureCache.texture;P=s.textureCache.viewport;s.textureCache.bb,I.setTransform(1,0,0,1,0,0),h?S(I,0,0,P.width,P.height):I.clearRect(0,0,P.width,P.height);var O=b["outside-texture-bg-color"].value,z=b["outside-texture-bg-opacity"].value;s.fillStyle(I,O[0],O[1],O[2],z),I.fillRect(0,0,P.width,P.height);x=l.zoom();k(I,!1),I.clearRect(P.mpan.x,P.mpan.y,P.width/P.zoom/u,P.height/P.zoom/u),I.drawImage(M,P.mpan.x,P.mpan.y,P.width/P.zoom/u,P.height/P.zoom/u)}else s.textureOnViewport&&!t&&(s.textureCache=null);var N=l.extent(),A=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles,B=s.hideEdgesOnViewport&&A,L=[];if(L[s.NODE]=!f[s.NODE]&&h&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,L[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),L[s.DRAG]=!f[s.DRAG]&&h&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,L[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),f[s.NODE]||n||r||L[s.NODE]){var R=h&&!L[s.NODE]&&1!==p;k(I=t||(R?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:c.contexts[s.NODE]),h&&!R?"motionBlur":void 0),B?s.drawCachedNodes(I,T.nondrag,u,N):s.drawLayeredElements(I,T.nondrag,u,N),s.debug&&s.drawDebugPoints(I,T.nondrag),n||h||(f[s.NODE]=!1)}if(!r&&(f[s.DRAG]||n||L[s.DRAG])){R=h&&!L[s.DRAG]&&1!==p;k(I=t||(R?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:c.contexts[s.DRAG]),h&&!R?"motionBlur":void 0),B?s.drawCachedNodes(I,T.drag,u,N):s.drawCachedElements(I,T.drag,u,N),s.debug&&s.drawDebugPoints(I,T.drag),n||h||(f[s.DRAG]=!1)}if(s.showFps||!r&&f[s.SELECT_BOX]&&!n){if(k(I=t||c.contexts[s.SELECT_BOX]),1==s.selection[4]&&(s.hoverData.selecting||s.touchData.selecting)){x=s.cy.zoom();var j=b["selection-box-border-width"].value/x;I.lineWidth=j,I.fillStyle="rgba("+b["selection-box-color"].value[0]+","+b["selection-box-color"].value[1]+","+b["selection-box-color"].value[2]+","+b["selection-box-opacity"].value+")",I.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),j>0&&(I.strokeStyle="rgba("+b["selection-box-border-color"].value[0]+","+b["selection-box-border-color"].value[1]+","+b["selection-box-border-color"].value[2]+","+b["selection-box-opacity"].value+")",I.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(c.bgActivePosistion&&!s.hoverData.selecting){x=s.cy.zoom();var q=c.bgActivePosistion;I.fillStyle="rgba("+b["active-bg-color"].value[0]+","+b["active-bg-color"].value[1]+","+b["active-bg-color"].value[2]+","+b["active-bg-opacity"].value+")",I.beginPath(),I.arc(q.x,q.y,b["active-bg-size"].pfValue/x,0,2*Math.PI),I.fill()}var F=s.lastRedrawTime;if(s.showFps&&F){F=Math.round(F);var V=Math.round(1e3/F);I.setTransform(1,0,0,1,0,0),I.fillStyle="rgba(255, 0, 0, 0.75)",I.strokeStyle="rgba(255, 0, 0, 0.75)",I.lineWidth=1,I.fillText("1 frame = "+F+" ms = "+V+" fps",0,20);I.strokeRect(0,30,250,20),I.fillRect(0,30,250*Math.min(V/60,1),20)}n||(f[s.SELECT_BOX]=!1)}if(h&&1!==p){var X=c.contexts[s.NODE],Y=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],W=c.contexts[s.DRAG],U=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],$=function(e,t,n){e.setTransform(1,0,0,1,0,0),n||!m?e.clearRect(0,0,s.canvasWidth,s.canvasHeight):S(e,0,0,s.canvasWidth,s.canvasHeight);var r=p;e.drawImage(t,0,0,s.canvasWidth*r,s.canvasHeight*r,0,0,s.canvasWidth,s.canvasHeight)};(f[s.NODE]||L[s.NODE])&&($(X,Y,L[s.NODE]),f[s.NODE]=!1),(f[s.DRAG]||L[s.DRAG])&&($(W,U,L[s.DRAG]),f[s.DRAG]=!1)}s.prevViewport=P,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),h&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!d,s.mbFrames=0,f[s.NODE]=!0,f[s.DRAG]=!0,s.redraw()},100)),t||l.emit("render")},e.exports=r},function(e,t,n){"use strict";for(var r=n(2),i={drawPolygonPath:function(e,t,n,r,i,a){var o=r/2,s=i/2;e.beginPath&&e.beginPath(),e.moveTo(t+o*a[0],n+s*a[1]);for(var u=1;u0&&o>0){h.clearRect(0,0,a,o),h.globalCompositeOperation="source-over";var p=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,p),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var v=t.pan(),g={x:v.x*l,y:v.y*l};l*=t.zoom(),h.translate(g.x,g.y),h.scale(l,l),this.drawElements(h,p),h.scale(1/l,1/l),h.translate(-g.x,-g.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,a,o),h.fill())}return d},i.png=function(e){return o(e,this.bufferCanvasImage(e),"image/png")},i.jpg=function(e){return o(e,this.bufferCanvasImage(e),"image/jpeg")},e.exports=i},function(e,t,n){"use strict";var r={nodeShapeImpl:function(e,t,n,r,i,a,o){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,i,a);case"polygon":return this.drawPolygonPath(t,n,r,i,a,o);case"roundrectangle":return this.drawRoundRectanglePath(t,n,r,i,a);case"cutrectangle":return this.drawCutRectanglePath(t,n,r,i,a);case"bottomroundrectangle":return this.drawBottomRoundRectanglePath(t,n,r,i,a);case"barrel":return this.drawBarrelPath(t,n,r,i,a)}}};e.exports=r},function(e,t,n){"use strict";var r=n(0),i=n(1),a=n(18),o=function e(){if(!(this instanceof e))return new e;this.length=0},s=o.prototype;s.instanceString=function(){return"stylesheet"},s.selector=function(e){return this[this.length++]={selector:e,properties:[]},this},s.css=function(e,t){var n=this.length-1;if(r.string(e))this[n].properties.push({name:e,value:t});else if(r.plainObject(e))for(var o=e,s=0;s=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(11),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(0))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,a,o,s,u=1,l={},c=!1,f=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},r=function(e){a.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(p,0,e)}:(o="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(o+t,"*")}),d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n1)for(var n=1;n=t||n<0||d&&e-c>=o}function w(){var e=g();if(x(e))return _(e);u=setTimeout(w,function(e){var n=t-(e-l);return d?v(n,o-(e-c)):n}(e))}function _(e){return u=void 0,h&&i?b(e):(i=a=void 0,s)}function E(){var e=g(),n=x(e);if(i=arguments,a=this,l=e,n){if(void 0===u)return function(e){return c=e,u=setTimeout(w,t),f?b(e):s}(l);if(d)return u=setTimeout(w,t),b(l)}return void 0===u&&(u=setTimeout(w,t)),s}return t=m(t)||0,y(r)&&(f=!!r.leading,o=(d="maxWait"in r)?p(m(r.maxWait)||0,t):o,h="trailing"in r?!!r.trailing:h),E.cancel=function(){void 0!==u&&clearTimeout(u),c=0,i=l=a=u=void 0},E.flush=function(){return void 0===u?s:_(g())},E}}).call(this,n(0))},function(e,t,n){e.exports=n(15)},function(e,t,n){var r,i,a;(function(){var n,o,s,u,l,c,f,d,h,p,v,g,y,m,b;s=Math.floor,p=Math.min,o=function(e,t){return et?1:0},h=function(e,t,n,r,i){var a;if(null==n&&(n=0),null==i&&(i=o),n<0)throw new Error("lo must be non-negative");for(null==r&&(r=e.length);nn;0<=n?t++:t--)l.push(t);return l}.apply(this).reverse()).length;rv;0<=v?++c:--c)g.push(l(e,n));return g},m=function(e,t,n,r){var i,a,s;for(null==r&&(r=o),i=e[n];n>t&&r(i,a=e[s=n-1>>1])<0;)e[n]=a,n=s;return e[n]=i},b=function(e,t,n){var r,i,a,s,u;for(null==n&&(n=o),i=e.length,u=t,a=e[t],r=2*t+1;r1e-4&&Math.abs(c.v)>1e-4;);return a?function(e){return s[e*(s.length-1)|0]}:u}}();e.exports=r},function(e,t,n){"use strict";var r=n(0);function i(e,t,n,r,i){if(1===r)return n;var a=i(t,n,r);return null==e?a:((e.roundValue||e.color)&&(a=Math.round(a)),void 0!==e.min&&(a=Math.max(a,e.min)),void 0!==e.max&&(a=Math.min(a,e.max)),a)}function a(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}e.exports=function(e,t,n,o,s){var u=null!=s?s.type:null;n<0?n=0:n>1&&(n=1);var l=a(e,s),c=a(t,s);if(r.number(l)&&r.number(c))return i(u,l,c,n,o);if(r.array(l)&&r.array(c)){for(var f=[],d=0;d0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchingStyle=e.batchingNotify=!0,e.batchStyleEles=this.collection(),e.batchNotifyEles=this.collection(),e.batchNotifyTypes=[],e.batchNotifyTypes.ids={}),e.batchCount++,this},endBatch:function(){var e=this._private;return e.batchCount--,0===e.batchCount&&(e.batchingStyle=!1,e.batchStyleEles.updateStyle(),e.batchingNotify=!1,this.notify({type:e.batchNotifyTypes,eles:e.batchNotifyEles})),this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch(function(){for(var n=Object.keys(e),r=0;r0;)e.removeChild(e.childNodes[0]);this._private.renderer=null},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};i.invalidateDimensions=i.resize,e.exports=i},function(e,t,n){"use strict";var r=n(0),i=n(7),a={collection:function(e,t){return r.string(e)?this.$(e):r.elementOrCollection(e)?e.collection():r.array(e)?new i(this,e,t):new i(this)},nodes:function(e){var t=this.$(function(e){return e.isNode()});return e?t.filter(e):t},edges:function(e){var t=this.$(function(e){return e.isEdge()});return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};a.elements=a.filter=a.$,e.exports=a},function(e,t,n){"use strict";var r=n(0),i=n(18),a={style:function(e){e&&this.setStyle(e).update();return this._private.style},setStyle:function(e){var t=this._private;return r.stylesheet(e)?t.style=e.generateStyle(this):r.array(e)?t.style=i.fromJson(this,e):r.string(e)?t.style=i.fromString(this,e):t.style=i(this),t.style}};e.exports=a},function(e,t,n){"use strict";var r=n(1),i=n(0),a=n(5),o={apply:function(e){var t=this._private,n=t.cy.collection();t.newStyle&&(t.contextStyles={},t.propDiffs={},this.cleanElements(e,!0));for(var r=0;r0;if(l||c){var f=void 0;l&&c?f=u.properties:l?f=u.properties:c&&(f=u.mappedProperties);for(var d=0;d0){n=!0;break}}t.hasPie=n;var i=e.pstyle("text-transform").strValue,a=e.pstyle("label").strValue,o=e.pstyle("source-label").strValue,s=e.pstyle("target-label").strValue,u=e.pstyle("font-style").strValue,l=e.pstyle("font-size").pfValue+"px",c=e.pstyle("font-family").strValue,f=e.pstyle("font-weight").strValue,d=u+"$"+l+"$"+c+"$"+f+"$"+i+"$"+e.pstyle("text-valign").strValue+"$"+e.pstyle("text-valign").strValue+"$"+e.pstyle("text-outline-width").pfValue+"$"+e.pstyle("text-wrap").strValue+"$"+e.pstyle("text-max-width").pfValue;t.labelStyleKey=d,t.sourceLabelKey=d+"$"+o,t.targetLabelKey=d+"$"+s,t.labelKey=d+"$"+a,t.fontKey=u+"$"+f+"$"+l+"$"+c,t.styleKey=Date.now()}},applyParsedProperty:function(e,t){var n=this,a=t,o=e._private.style,s=void 0,u=n.types,l=n.properties[a.name].type,c=a.bypass,f=o[a.name],d=f&&f.bypass,h=e._private,p=function(){n.checkZOrderTrigger(e,a.name,f?f.value:null,a.value)};if("curve-style"===t.name&&"haystack"===t.value&&e.isEdge()&&(e.isLoop()||e.source().isParent()||e.target().isParent())&&(a=t=this.parse(t.name,"bezier",c)),a.delete)return o[a.name]=void 0,p(),!0;if(a.deleteBypassed)return f?!!f.bypass&&(f.bypassed=void 0,p(),!0):(p(),!0);if(a.deleteBypass)return f?!!f.bypass&&(o[a.name]=f.bypassed,p(),!0):(p(),!0);var v=function(){r.error("Do not assign mappings to elements without corresponding data (e.g. ele `"+e.id()+"` for property `"+a.name+"` with data field `"+a.field+"`); try a `["+a.field+"]` selector to limit scope to elements with `"+a.field+"` defined")};switch(a.mapped){case u.mapData:for(var g=a.field.split("."),y=h.data,m=0;m1&&(b=1),l.color){var x=a.valueMin[0],w=a.valueMax[0],_=a.valueMin[1],E=a.valueMax[1],P=a.valueMin[2],C=a.valueMax[2],T=null==a.valueMin[3]?1:a.valueMin[3],S=null==a.valueMax[3]?1:a.valueMax[3],k=[Math.round(x+(w-x)*b),Math.round(_+(E-_)*b),Math.round(P+(C-P)*b),Math.round(T+(S-T)*b)];s={bypass:a.bypass,name:a.name,value:k,strValue:"rgb("+k[0]+", "+k[1]+", "+k[2]+")"}}else{if(!l.number)return!1;var D=a.valueMin+(a.valueMax-a.valueMin)*b;s=this.parse(a.name,D,a.bypass,"mapping")}s||(s=this.parse(a.name,f.strValue,a.bypass,"mapping")),s||v(),s.mapping=a,a=s;break;case u.data:var I=a.field.split("."),M=h.data;if(M)for(var O=0;O0&&u>0){for(var c={},f=!1,d=0;d0?e.delayAnimation(l).play().promise().then(t):t()}).then(function(){return e.animation({style:c,duration:u,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(e,s),e.emitAndNotify("style"),o.transitioning=!1})}else o.transitioning&&(this.removeBypasses(e,s),e.emitAndNotify("style"),o.transitioning=!1)},checkZOrderTrigger:function(e,t,n,r){var i=this.properties[t];null==i.triggersZOrder||null!=n&&!i.triggersZOrder(n,r)||this._private.cy.notify({type:"zorder",eles:e})}};e.exports=o},function(e,t,n){"use strict";var r=n(0),i=n(1),a={applyBypass:function(e,t,n,a){var o=[];if("*"===t||"**"===t){if(void 0!==n)for(var s=0;sn.length?t.substr(n.length):""}function u(){a=a.length>o.length?a.substr(o.length):""}for(t=t.replace(/[\/][*](\s|.)+?[*][\/]/g,"");;){if(t.match(/^\s*$/))break;var l=t.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){r.error("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+t);break}n=l[0];var c=l[1];if("core"!==c)if(new i(c)._private.invalid){r.error("Skipping parsing of block: Invalid selector found in string stylesheet: "+c),s();continue}var f=l[2],d=!1;a=f;for(var h=[];;){if(a.match(/^\s*$/))break;var p=a.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!p){r.error("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+f),d=!0;break}o=p[0];var v=p[1],g=p[2];if(this.properties[v])this.parse(v,g)?(h.push({name:v,val:g}),u()):(r.error("Skipping property: Invalid property definition in: "+o),u());else r.error("Skipping property: Invalid property name in: "+o),u()}if(d){s();break}this.selector(c);for(var y=0;y node").css({shape:"rectangle",padding:10,"background-color":"#eee","border-color":"#ccc","border-width":1}).selector("edge").css({width:3,"curve-style":"haystack"}).selector(":parent <-> node").css({"curve-style":"bezier","source-endpoint":"outside-to-line","target-endpoint":"outside-to-line"}).selector(":selected").css({"background-color":"#0169D9","line-color":"#0169D9","source-arrow-color":"#0169D9","target-arrow-color":"#0169D9","mid-source-arrow-color":"#0169D9","mid-target-arrow-color":"#0169D9"}).selector("node:parent:selected").css({"background-color":"#CCE1F9","border-color":"#aec8e5"}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}).selector("core").css({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":30,"outside-texture-bg-color":"#000","outside-texture-bg-opacity":.125}),this.defaultLength=this.length},e.exports=a},function(e,t,n){"use strict";var r=n(1),i=n(0),a=n(2),o={parse:function(e,t,n,a){if(i.fn(t))return this.parseImplWarn(e,t,n,a);var o=[e,t,n,"mapping"===a||!0===a||!1===a||null==a?"dontcare":a].join("$"),s=this.propCache=this.propCache||{},u=void 0;return(u=s[o])||(u=s[o]=this.parseImplWarn(e,t,n,a)),(n||"mapping"===a)&&(u=r.copy(u))&&(u.value=r.copy(u.value)),u},parseImplWarn:function(e,t,n,i){var a=this.parseImpl(e,t,n,i);return a||null==t||r.error("The style property `%s: %s` is invalid",e,t),a},parseImpl:function(e,t,n,o){e=r.camel2dash(e);var s=this.properties[e],u=t,l=this.types;if(!s)return null;if(void 0===t)return null;s.alias&&(s=s.pointsTo,e=s.name);var c=i.string(t);c&&(t=t.trim());var f=s.type;if(!f)return null;if(n&&(""===t||null===t))return{name:e,value:t,bypass:!0,deleteBypass:!0};if(i.fn(t))return{name:e,value:t,strValue:"fn",mapped:l.fn,bypass:n};var d=void 0,h=void 0;if(!c||o);else{if(d=new RegExp(l.data.regex).exec(t)){if(n)return!1;var p=l.data;return{name:e,value:d,strValue:""+t,mapped:p,field:d[1],bypass:n}}if(h=new RegExp(l.mapData.regex).exec(t)){if(n)return!1;if(f.multiple)return!1;var v=l.mapData;if(!f.color&&!f.number)return!1;var g=this.parse(e,h[4]);if(!g||g.mapped)return!1;var y=this.parse(e,h[5]);if(!y||y.mapped)return!1;if(g.value===y.value)return!1;if(f.color){var m=g.value,b=y.value;if(!(m[0]!==b[0]||m[1]!==b[1]||m[2]!==b[2]||m[3]!==b[3]&&(null!=m[3]&&1!==m[3]||null!=b[3]&&1!==b[3])))return!1}return{name:e,value:h,strValue:""+t,mapped:v,field:h[1],fieldMin:parseFloat(h[2]),fieldMax:parseFloat(h[3]),valueMin:g.value,valueMax:y.value,bypass:n}}}if(f.multiple&&"multiple"!==o){var x=void 0;if(x=c?t.split(/\s+/):i.array(t)?t:[t],f.evenMultiple&&x.length%2!=0)return null;for(var w=[],_=[],E=[],P=!1,C=0;Cf.max||f.strictMax&&t===f.max))return null;var O={name:e,value:t,strValue:""+t+(k||""),units:k,bypass:n};return f.unitless||"px"!==k&&"em"!==k?O.pfValue=t:O.pfValue="px"!==k&&k?this.getEmSizeInPixels()*t:t,"ms"!==k&&"s"!==k||(O.pfValue="ms"===k?t:1e3*t),"deg"!==k&&"rad"!==k||(O.pfValue="rad"===k?t:a.deg2rad(t)),"%"===k&&(O.pfValue=t/100),O}if(f.propList){var z=[],N=""+t;if("none"===N);else{for(var A=N.split(","),B=0;B0&&s>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:u=(u=(u=Math.min((o-2*t)/n.w,(s-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:u)t.maxZoom?t.maxZoom:s)t.maxZoom||!t.zoomingEnabled?o=!0:(t.zoom=u,a.push("zoom"))}if(i&&(!o||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;r.number(l.x)&&(t.pan.x=l.x,s=!1),r.number(l.y)&&(t.pan.y=l.y,s=!1),s||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify({type:"viewport"})),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify({type:"viewport"})),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(r.string(e)){var n=e;e=this.mutableElements().filter(n)}else r.elementOrCollection(e)||(e=this.mutableElements());if(0!==e.length){var i=e.boundingBox(),a=this.width(),o=this.height();return{x:(a-(t=void 0===t?this._private.zoom:t)*(i.x1+i.x2))/2,y:(o-t*(i.y1+i.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container;return n.sizeCache=n.sizeCache||(r?(e=i.getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}}};o.centre=o.center,o.autolockNodes=o.autolock,o.autoungrabifyNodes=o.autoungrabify,e.exports=o},function(e,t,n){"use strict";var r=n(1),i=n(4),a=n(7),o=n(12),s=n(95),u=n(0),l=n(11),c={},f={};function d(e,t,n){var s=n,f=function(n){r.error("Can not register `"+t+"` for `"+e+"` since `"+n+"` already exists in the prototype and can not be overridden")};if("core"===e){if(o.prototype[t])return f(t);o.prototype[t]=n}else if("collection"===e){if(a.prototype[t])return f(t);a.prototype[t]=n}else if("layout"===e){for(var d=function(e){this.options=e,n.call(this,e),u.plainObject(this._private)||(this._private={}),this._private.cy=e.cy,this._private.listeners=[],this.createEmitter()},p=d.prototype=Object.create(n.prototype),v=[],g=0;g0;)g();l=n.collection();for(var y=function(e){var t=p[e],n=t.maxDegree(!1),r=t.filter(function(e){return e.degree(!1)===n});l=l.add(r)},m=0;mb.length-1;)b.push([]);b[K].push(H),G.depth=K,G.index=b[K].length-1}B()}var J=0;if(t.avoidOverlap)for(var ee=0;eel||0===t)&&(r+=u/c,i++)}return r/=i=Math.max(1,i),0===i&&(r=void 0),ie[e.id()]=r,r},oe=function(e,t){return ae(e)-ae(t)},se=0;se<3;se++){for(var ue=0;ue0&&b[0].length<=3?c/2:0),d=2*Math.PI/b[i].length*a;return 0===i&&1===b[0].length&&(f=1),{x:fe+f*Math.cos(d),y:de+f*Math.sin(d)}}return{x:fe+(a+1-(o+1)/2)*s,y:(i+1)*l}}var h={x:fe+(a+1-(o+1)/2)*s,y:(i+1)*l};return h},pe={},ve=b.length-1;ve>=0;ve--)for(var ge=b[ve],ye=0;ye1&&t.avoidOverlap){h*=1.75;var m=Math.cos(f)-Math.cos(0),b=Math.sin(f)-Math.sin(0),x=Math.sqrt(h*h/(m*m+b*b));d=Math.max(x,d)}return s.layoutPositions(this,t,function(e,n){var r=t.startAngle+n*f*(o?1:-1),i=d*Math.cos(r),a=d*Math.sin(r);return{x:l+i,y:c+a}}),this},e.exports=s},function(e,t,n){"use strict";var r=n(1),i=n(2),a={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function o(e){this.options=r.extend({},a,e)}o.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,a=t.eles.nodes().not(":parent"),o=i.makeBoundingBox(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,u=o.y1+o.h/2,l=[],c=(t.startAngle,0),f=0;f0)Math.abs(m[0].value-x.value)>=g&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var _=y.length>0&&y[0].length>1,E=(Math.min(o.w,o.h)/2-w)/(y.length+_?1:0);w=Math.min(w,E)}for(var P=0,C=0;C1&&t.avoidOverlap){var D=Math.cos(k)-Math.cos(0),I=Math.sin(k)-Math.sin(0),M=Math.sqrt(w*w/(D*D+I*I));P=Math.max(M,P)}T.r=P,P+=w}if(t.equidistant){for(var O=0,z=0,N=0;N0)var l=(d=r.nodeOverlap*s)*i/(m=Math.sqrt(i*i+a*a)),f=d*a/m;else{var d,h=c(e,i,a),p=c(t,-1*i,-1*a),v=p.x-h.x,g=p.y-h.y,y=v*v+g*g,m=Math.sqrt(y);l=(d=(e.nodeRepulsion+t.nodeRepulsion)/y)*v/m,f=d*g/m}e.isLocked||(e.offsetX-=l,e.offsetY-=f),t.isLocked||(t.offsetX+=l,t.offsetY+=f)}},u=function(e,t,n,r){if(n>0)var i=e.maxX-t.minX;else i=t.maxX-e.minX;if(r>0)var a=e.maxY-t.minY;else a=t.maxY-e.minY;return i>=0&&a>=0?Math.sqrt(i*i+a*a):0},c=function(e,t,n){var r=e.positionX,i=e.positionY,a=e.height||1,o=e.width||1,s=n/t,u=a/o,l={};return 0===t&&0n?(l.x=r,l.y=i+a/2,l):0t&&-1*u<=s&&s<=u?(l.x=r-o/2,l.y=i-o*n/2/t,l):0=u)?(l.x=r+a*t/2/n,l.y=i+a/2,l):0>n&&(s<=-1*u||s>=u)?(l.x=r-a*t/2/n,l.y=i-a/2,l):l},f=function(e,t){for(var n=0;n1){var p=t.gravity*f/h,v=t.gravity*d/h;c.offsetX+=p,c.offsetY+=v}}}}},h=function(e,t){var n=[],r=0,i=-1;for(n.push.apply(n,e.graphSet[0]),i+=e.graphSet[0].length;r<=i;){var a=n[r++],o=e.idToIndex[a],s=e.layoutNodes[o],u=s.children;if(0n)var i={x:n*e/r,y:n*t/r};else i={x:e,y:t};return i},g=function e(t,n){var r=t.parentId;if(null!=r){var i=n.layoutNodes[n.idToIndex[r]],a=!1;return(null==i.maxX||t.maxX+i.padRight>i.maxX)&&(i.maxX=t.maxX+i.padRight,a=!0),(null==i.minX||t.minX-i.padLefti.maxY)&&(i.maxY=t.maxY+i.padBottom,a=!0),(null==i.minY||t.minY-i.padTopv&&(d+=p+t.componentSpacing,f=0,h=0,p=0)}}}(0,i),r}).then(function(e){f.layoutNodes=e.layoutNodes,a.stop(),m()});var m=function(){!0===e.animate||!1===e.animate?y({force:!0,next:function(){n.one("layoutstop",e.stop),n.emit({type:"layoutstop",layout:n})}}):e.eles.nodes().layoutPositions(n,e,function(e){var t=f.layoutNodes[f.idToIndex[e.data("id")]];return{x:t.positionX,y:t.positionY}})};return this},l.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},l.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var c=function(e,t,n){for(var r=n.eles.edges(),i=n.eles.nodes(),s={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:e.width(),clientHeight:e.width(),boundingBox:a.makeBoundingBox(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()})},u=n.eles.components(),l={},c=0;c0){s.graphSet.push(E);for(c=0;cr.count?0:r.graph},d=function e(t,n,r,i){var a=i.graphSet[r];if(-1o){var p=c(),v=f();(p-1)*v>=o?c(p-1):(v-1)*p>=o&&f(v-1)}else for(;l*u=o?f(y+1):c(g+1)}var m=a.w/l,b=a.h/u;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=l&&(M=0,I++)},z={},N=0;N(r=i.sqdistToFiniteLine(e,t,w[_],w[_+1],w[_+2],w[_+3])))return m(n,r),!0}else if("bezier"===o.edgeType||"multibezier"===o.edgeType||"self"===o.edgeType||"compound"===o.edgeType)for(w=o.allpts,_=0;_+5(r=i.sqdistToQuadraticBezier(e,t,w[_],w[_+1],w[_+2],w[_+3],w[_+4],w[_+5])))return m(n,r),!0;y=y||a.source,x=x||a.target;var E=u.getArrowWidth(s,c),P=[{name:"source",x:o.arrowStartX,y:o.arrowStartY,angle:o.srcArrowAngle},{name:"target",x:o.arrowEndX,y:o.arrowEndY,angle:o.tgtArrowAngle},{name:"mid-source",x:o.midX,y:o.midY,angle:o.midsrcArrowAngle},{name:"mid-target",x:o.midX,y:o.midY,angle:o.midtgtArrowAngle}];for(_=0;_0&&(b(y),b(x))}function w(e,t,n){return a.getPrefixedProperty(e,t,n)}function _(n,r){var a,o=n._private,s=g;a=r?r+"-":"";var u=n.pstyle(a+"label").value;if("yes"===n.pstyle("text-events").strValue&&u){var l=o.rstyle,c=n.pstyle("text-border-width").pfValue,f=n.pstyle("text-background-padding").pfValue,d=w(l,"labelWidth",r)+c+2*s+2*f,h=w(l,"labelHeight",r)+c+2*s+2*f,p=w(l,"labelX",r),v=w(l,"labelY",r),y=w(o.rscratch,"labelAngle",r),b=p-d/2,x=p+d/2,_=v-h/2,E=v+h/2;if(y){var P=Math.cos(y),C=Math.sin(y),T=function(e,t){return{x:(e-=p)*P-(t-=v)*C+p,y:e*C+t*P+v}},S=T(b,_),k=T(b,E),D=T(x,_),I=T(x,E),M=[S.x,S.y,D.x,D.y,I.x,I.y,k.x,k.y];if(i.pointInsidePolygonPoints(e,t,M))return m(n),!0}else{var O={w:d,h:h,x1:b,x2:x,y1:_,y2:E};if(i.inBoundingBox(O,e,t))return m(n),!0}}}n&&(c=c.interactive);for(var E=c.length-1;E>=0;E--){var P=c[E];P.isNode()?b(P)||_(P):x(P)||_(P)||_(P,"source")||_(P,"target")}return f},getAllInBox:function(e,t,n,r){var a=this.getCachedZSortedEles().interactive,o=[],s=Math.min(e,n),u=Math.max(e,n),l=Math.min(t,r),c=Math.max(t,r);e=s,n=u,t=l,r=c;for(var f=i.makeBoundingBox({x1:e,y1:t,x2:n,y2:r}),d=0;dm?m+"$-$"+y:y+"$-$"+m,v&&(t="unbundled$-$"+p.id);var b=c[t];null==b&&(b=c[t]=[],f.push(t)),b.push(Zt),v&&(b.hasUnbundled=!0),g&&(b.hasBezier=!0)}else d.push(Zt)}for(var x=0;xKt.id()){var _=Qt;Qt=Kt,Kt=_}Jt=Qt.position(),en=Kt.position(),tn=Qt.outerWidth(),rn=Qt.outerHeight(),nn=Kt.outerWidth(),an=Kt.outerHeight(),n=u.nodeShapes[this.getNodeShape(Qt)],a=u.nodeShapes[this.getNodeShape(Kt)],s=!1;var E={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0},P=Jt.x,C=Jt.y,T=tn,S=rn,k=en.x,D=en.y,I=nn,M=an,O=w.length;for(h=0;h=d||w){h={cp:m,segment:x};break}}if(h)break}m=h.cp;var _=(d-v)/(x=h.segment).length,E=x.t1-x.t0,P=f?x.t0+E*_:x.t1-E*_;P=r.bound(0,P,1),t=r.qbezierPtAt(m.p0,m.p1,m.p2,P),s=function(e,t,n,i){var a=r.bound(0,i-.001,1),o=r.bound(0,i+.001,1),s=r.qbezierPtAt(e,t,n,a),l=r.qbezierPtAt(e,t,n,o);return u(s,l)}(m.p0,m.p1,m.p2,P);break;case"straight":case"segments":case"haystack":var C,T,S,k,D=0,I=i.allpts.length;for(y=0;y+3=d));y+=2);P=(d-T)/C;P=r.bound(0,P,1),t=r.lineAt(S,k,P),s=u(S,k)}c("labelX",a,t.x),c("labelY",a,t.y),c("labelAutoAngle",a,s)}};d("source"),d("target"),this.applyLabelDimensions(e)}},o.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},o.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),i=this.calculateLabelDimensions(e,r);a.setPrefixedProperty(n.rstyle,"labelWidth",t,i.width),a.setPrefixedProperty(n.rscratch,"labelWidth",t,i.width),a.setPrefixedProperty(n.rstyle,"labelHeight",t,i.height),a.setPrefixedProperty(n.rscratch,"labelHeight",t,i.height)},o.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",i=e.pstyle(r+"label").strValue,o=e.pstyle("text-transform").value,s=function(e,r){return r?(a.setPrefixedProperty(n.rscratch,e,t,r),r):a.getPrefixedProperty(n.rscratch,e,t)};if(!i)return"";"none"==o||("uppercase"==o?i=i.toUpperCase():"lowercase"==o&&(i=i.toLowerCase()));var u=e.pstyle("text-wrap").value;if("wrap"===u){var l=s("labelKey");if(l&&s("labelWrapKey")===l)return s("labelWrapCachedText");for(var c=i.split("\n"),f=e.pstyle("text-max-width").pfValue,d=[],h=0;hf){for(var v=p.split(/\s+/),g="",y=0;yf)break;x+=i[_],_===i.length-1&&(w=!0)}return w||(x+="…"),x}return i},o.calculateLabelDimensions=function(e,t,n){var r=e._private.labelStyleKey+"$@$"+t;n&&(r+="$@$"+n);var i=this.labelDimCache||(this.labelDimCache={});if(i[r])return i[r];var a=e.pstyle("font-style").strValue,o=1*e.pstyle("font-size").pfValue+"px",s=e.pstyle("font-family").strValue,u=e.pstyle("font-weight").strValue,l=this.labelCalcDiv;l||(l=this.labelCalcDiv=document.createElement("div"),document.body.appendChild(l));var c=l.style;return c.fontFamily=s,c.fontStyle=a,c.fontSize=o,c.fontWeight=u,c.position="absolute",c.left="-9999px",c.top="-9999px",c.zIndex="-1",c.visibility="hidden",c.pointerEvents="none",c.padding="0",c.lineHeight="1","wrap"===e.pstyle("text-wrap").value?c.whiteSpace="pre":c.whiteSpace="normal",l.textContent=t,i[r]={width:Math.ceil(l.clientWidth/1),height:Math.ceil(l.clientHeight/1)},i[r]},o.calculateLabelAngles=function(e){var t=e._private.rscratch,n=e.isEdge(),r=e.pstyle("text-rotation"),i=r.strValue;"none"===i?t.labelAngle=t.sourceLabelAngle=t.targetLabelAngle=0:n&&"autorotate"===i?(t.labelAngle=t.labelAutoAngle,t.sourceLabelAngle=t.sourceLabelAutoAngle,t.targetLabelAngle=t.targetLabelAutoAngle):t.labelAngle=t.sourceLabelAngle=t.targetLabelAngle="autorotate"===i?0:r.pfValue},e.exports=o},function(e,t,n){"use strict";var r={getNodeShape:function(e){var t=e.pstyle("shape").value;if(e.isParent())return"rectangle"===t||"roundrectangle"===t||"cutrectangle"===t||"barrel"===t?t:"rectangle";if("polygon"===t){var n=e.pstyle("shape-polygon-points").value;return this.nodeShapes.makePolygon(n).name}return t}};e.exports=r},function(e,t,n){"use strict";var r={registerCalculationListeners:function(){var e=this.cy,t=e.collection(),n=this,r=function(e,n){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t.merge(e);for(var i=0;i=e.desktopTapThreshold2}var k=n(i);b&&(e.hoverData.tapholdCancelled=!0);s=!0,t(y,["mousemove","vmousemove","tapdrag"],i,{position:{x:h[0],y:h[1]}});var D=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||u.emit("boxstart"),g[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(b){var I={originalEvent:i,type:"cxtdrag",position:{x:h[0],y:h[1]}};w?w.emit(I):u.emit(I),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&y===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit({originalEvent:i,type:"cxtdragout",position:{x:h[0],y:h[1]}}),e.hoverData.cxtOver=y,y&&y.emit({originalEvent:i,type:"cxtdragover",position:{x:h[0],y:h[1]}}))}}else if(e.hoverData.dragging){if(s=!0,u.panningEnabled()&&u.userPanningEnabled()){var M;if(e.hoverData.justStartedPan){var O=e.hoverData.mdownPos;M={x:(h[0]-O[0])*l,y:(h[1]-O[1])*l},e.hoverData.justStartedPan=!1}else M={x:_[0]*l,y:_[1]*l};u.panBy(M),e.hoverData.dragged=!0}h=e.projectIntoViewport(i.clientX,i.clientY)}else if(1!=g[4]||null!=w&&!w.isEdge()){if(w&&w.isEdge()&&w.active()&&w.unactivate(),w&&w.grabbed()||y==x||(x&&t(x,["mouseout","tapdragout"],i,{position:{x:h[0],y:h[1]}}),y&&t(y,["mouseover","tapdragover"],i,{position:{x:h[0],y:h[1]}}),e.hoverData.last=y),w)if(b){if(u.boxSelectionEnabled()&&k)w&&w.grabbed()&&(d(E),w.emit("free")),D();else if(w&&w.grabbed()&&e.nodeIsDraggable(w)){var z=!e.dragData.didDrag;z&&e.redrawHint("eles",!0),e.dragData.didDrag=!0;var N=[];e.hoverData.draggingEles||c(u.collection(E),{inDragLayer:!0});for(var A=0;A0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=[]),t(s,["mouseup","tapend","vmouseup"],r,{position:{x:a[0],y:a[1]}}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||t(l,["click","tap","vclick"],r,{position:{x:a[0],y:a[1]}}),s!=l||e.dragData.didDrag||e.hoverData.selecting||null!=s&&s._private.selectable&&(e.hoverData.dragging||("additive"===i.selectionType()||c?s.selected()?s.unselect():s.select():c||(i.$(":selected").unmerge(s).unselect(),s.select())),e.redrawHint("eles",!0)),e.hoverData.selecting){var p=i.collection(e.getAllInBox(o[0],o[1],o[2],o[3]));e.redrawHint("select",!0),p.length>0&&e.redrawHint("eles",!0),i.emit("boxend");var v=function(e){return e.selectable()&&!e.selected()};"additive"===i.selectionType()?p.emit("box").stdFilter(v).select().emit("boxselect"):(c||i.$(":selected").unmerge(p).unselect(),p.emit("box").stdFilter(v).select().emit("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!o[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var g=l&&l.grabbed();d(u),g&&l.emit("free")}}o[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null}},!1);var b,x,w,_,E,P,C,T,S,k,D,I,M;e.registerBinding(e.container,"wheel",function(t){if(!e.scrollingPage){var n,r=e.cy,i=e.projectIntoViewport(t.clientX,t.clientY),a=[i[0]*r.zoom()+r.pan().x,i[1]*r.zoom()+r.pan().y];e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||0!==e.selection[4]?t.preventDefault():r.panningEnabled()&&r.userPanningEnabled()&&r.zoomingEnabled()&&r.userZoomingEnabled()&&(t.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout(function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()},150),n=null!=t.deltaY?t.deltaY/-250:null!=t.wheelDeltaY?t.wheelDeltaY/1e3:t.wheelDelta/1e3,n*=e.wheelSensitivity,1===t.deltaMode&&(n*=33),r.zoom({level:r.zoom()*Math.pow(10,n),renderedPosition:{x:a[0],y:a[1]}}))}},!0),e.registerBinding(window,"scroll",function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},!0),e.registerBinding(e.container,"mouseout",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),e.registerBinding(e.container,"mouseover",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var O,z,N,A,B=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},L=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",O=function(n){if(m(n)){p(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var r=e.cy,i=e.touchData.now,a=e.touchData.earlier;if(n.touches[0]){var o=e.projectIntoViewport(n.touches[0].clientX,n.touches[0].clientY);i[0]=o[0],i[1]=o[1]}if(n.touches[1]){o=e.projectIntoViewport(n.touches[1].clientX,n.touches[1].clientY);i[2]=o[0],i[3]=o[1]}if(n.touches[2]){o=e.projectIntoViewport(n.touches[2].clientX,n.touches[2].clientY);i[4]=o[0],i[5]=o[1]}if(n.touches[1]){d(e.dragData.touchDragEles);var s=e.findContainerClientCoords();S=s[0],k=s[1],D=s[2],I=s[3],b=n.touches[0].clientX-S,x=n.touches[0].clientY-k,w=n.touches[1].clientX-S,_=n.touches[1].clientY-k,M=0<=b&&b<=D&&0<=w&&w<=D&&0<=x&&x<=I&&0<=_&&_<=I;var l=r.pan(),h=r.zoom();E=B(b,x,w,_),P=L(b,x,w,_),T=[((C=[(b+w)/2,(x+_)/2])[0]-l.x)/h,(C[1]-l.y)/h];if(P<4e4&&!n.touches[2]){var v=e.findNearestElement(i[0],i[1],!0,!0),g=e.findNearestElement(i[2],i[3],!0,!0);return v&&v.isNode()?(v.activate().emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=v):g&&g.isNode()?(g.activate().emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=g):r.emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(n.touches[2]);else if(n.touches[1]);else if(n.touches[0]){var y=e.findNearestElements(i[0],i[1],!0,!0),O=y[0];if(null!=O&&(O.activate(),e.touchData.start=O,e.touchData.starts=y,e.nodeIsGrabbable(O))){var z=e.dragData.touchDragEles=[],N=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),O.selected()?(N=r.$(function(t){return t.selected()&&e.nodeIsGrabbable(t)}),c(N,{addToList:z})):f(O,{addToList:z}),u(O);var A=function(e){return{originalEvent:n,type:e,position:{x:i[0],y:i[1]}}};O.emit(A("grabon")),N?N.forEach(function(e){e.emit(A("grab"))}):O.emit(A("grab"))}t(O,["touchstart","tapstart","vmousedown"],n,{position:{x:i[0],y:i[1]}}),null==O&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||(t(e.touchData.start,["taphold"],n,{position:{x:i[0],y:i[1]}}),e.touchData.start||r.$(":selected").unselect())},e.tapholdDuration)}if(n.touches.length>=1){for(var R=e.touchData.startPosition=[],j=0;j=e.touchTapThreshold2}if(i&&e.touchData.cxt){n.preventDefault();var z=n.touches[0].clientX-S,N=n.touches[0].clientY-k,A=n.touches[1].clientX-S,R=n.touches[1].clientY-k,j=L(z,N,A,R);if(j/P>=2.25||j>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var q={originalEvent:n,type:"cxttapend",position:{x:l[0],y:l[1]}};e.touchData.start?(e.touchData.start.unactivate().emit(q),e.touchData.start=null):u.emit(q)}}if(i&&e.touchData.cxt){q={originalEvent:n,type:"cxtdrag",position:{x:l[0],y:l[1]}};e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(q):u.emit(q),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var F=e.findNearestElement(l[0],l[1],!0,!0);e.touchData.cxtOver&&F===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit({originalEvent:n,type:"cxtdragout",position:{x:l[0],y:l[1]}}),e.touchData.cxtOver=F,F&&F.emit({originalEvent:n,type:"cxtdragover",position:{x:l[0],y:l[1]}}))}else if(i&&n.touches[2]&&u.boxSelectionEnabled())n.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||u.emit("boxstart"),e.touchData.selecting=!0,e.redrawHint("select",!0),s&&0!==s.length&&void 0!==s[0]?(s[2]=(l[0]+l[2]+l[4])/3,s[3]=(l[1]+l[3]+l[5])/3):(s[0]=(l[0]+l[2]+l[4])/3,s[1]=(l[1]+l[3]+l[5])/3,s[2]=(l[0]+l[2]+l[4])/3+1,s[3]=(l[1]+l[3]+l[5])/3+1),s[4]=1,e.touchData.selecting=!0,e.redraw();else if(i&&n.touches[1]&&u.zoomingEnabled()&&u.panningEnabled()&&u.userZoomingEnabled()&&u.userPanningEnabled()){if(n.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),ee=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var V=0;V0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(window,"touchcancel",N=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(window,"touchend",A=function(n){var r=e.touchData.start;if(e.touchData.capture){0===n.touches.length&&(e.touchData.capture=!1),n.preventDefault();var i=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var a,o=e.cy,s=o.zoom(),u=e.touchData.now,l=e.touchData.earlier;if(n.touches[0]){var c=e.projectIntoViewport(n.touches[0].clientX,n.touches[0].clientY);u[0]=c[0],u[1]=c[1]}if(n.touches[1]){c=e.projectIntoViewport(n.touches[1].clientX,n.touches[1].clientY);u[2]=c[0],u[3]=c[1]}if(n.touches[2]){c=e.projectIntoViewport(n.touches[2].clientX,n.touches[2].clientY);u[4]=c[0],u[5]=c[1]}if(r&&r.unactivate(),e.touchData.cxt){if(a={originalEvent:n,type:"cxttapend",position:{x:u[0],y:u[1]}},r?r.emit(a):o.emit(a),!e.touchData.cxtDragged){var f={originalEvent:n,type:"cxttap",position:{x:u[0],y:u[1]}};r?r.emit(f):o.emit(f)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!n.touches[2]&&o.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var h=o.collection(e.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,e.redrawHint("select",!0),o.emit("boxend");h.emit("box").stdFilter(function(e){return e.selectable()&&!e.selected()}).select().emit("boxselect"),h.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=r&&r.unactivate(),n.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(n.touches[1]);else if(n.touches[0]);else if(!n.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var p=e.dragData.touchDragEles;if(null!=r){var v=r._private.grabbed;d(p),e.redrawHint("drag",!0),e.redrawHint("eles",!0),v&&r.emit("free"),t(r,["touchend","tapend","vmouseup","tapdragout"],n,{position:{x:u[0],y:u[1]}}),r.unactivate(),e.touchData.start=null}else{var g=e.findNearestElement(u[0],u[1],!0,!0);t(g,["touchend","tapend","vmouseup","tapdragout"],n,{position:{x:u[0],y:u[1]}})}var y=e.touchData.startPosition[0]-u[0],m=y*y,b=e.touchData.startPosition[1]-u[1],x=(m+b*b)*s*s;null!=r&&!e.dragData.didDrag&&r._private.selectable&&x0)return p[0]}return null},h=Object.keys(f),p=0;p0?d:r.roundRectangleIntersectLine(a,o,e,t,n,i,s)},checkPoint:function(e,t,n,i,a,o,s){var u=r.getRoundRectangleRadius(i,a),l=2*u;if(r.pointInsidePolygon(e,t,this.points,o,s,i,a-l,[0,-1],n))return!0;if(r.pointInsidePolygon(e,t,this.points,o,s,i-l,a,[0,-1],n))return!0;var c=i/2+2*n,f=a/2+2*n,d=[o-c,s-f,o-c,s,o+c,s,o+c,s-f];return!!r.pointInsidePolygonPoints(e,t,d)||(!!r.checkInEllipse(e,t,l,l,o+i/2-u,s+a/2-u,n)||!!r.checkInEllipse(e,t,l,l,o-i/2+u,s+a/2-u,n))}}},registerNodeShapes:function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",r.generateUnitNgonPointsFitToSquare(3,0)),this.generatePolygon("rectangle",r.generateUnitNgonPointsFitToSquare(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle(),this.generatePolygon("diamond",[0,1,1,0,0,-1,-1,0]),this.generatePolygon("pentagon",r.generateUnitNgonPointsFitToSquare(5,0)),this.generatePolygon("hexagon",r.generateUnitNgonPointsFitToSquare(6,0)),this.generatePolygon("heptagon",r.generateUnitNgonPointsFitToSquare(7,0)),this.generatePolygon("octagon",r.generateUnitNgonPointsFitToSquare(8,0));var n=new Array(20),i=r.generateUnitNgonPoints(5,0),a=r.generateUnitNgonPoints(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s0&&t.data.lyrTxrCache.invalidateElements(n)})}u.CANVAS_LAYERS=3,u.SELECT_BOX=0,u.DRAG=1,u.NODE=2,u.BUFFER_COUNT=3,u.TEXTURE_BUFFER=0,u.MOTIONBLUR_BUFFER_NODE=1,u.MOTIONBLUR_BUFFER_DRAG=2,u.redrawHint=function(e,t){var n=this;switch(e){case"eles":n.data.canvasNeedsRedraw[u.NODE]=t;break;case"drag":n.data.canvasNeedsRedraw[u.DRAG]=t;break;case"select":n.data.canvasNeedsRedraw[u.SELECT_BOX]=t}};var c="undefined"!=typeof Path2D;u.path2dEnabled=function(e){if(void 0===e)return this.pathsEnabled;this.pathsEnabled=!!e},u.usePaths=function(){return c&&this.pathsEnabled},[n(126),n(127),n(128),n(129),n(130),n(131),n(132),n(133),n(134),n(135)].forEach(function(e){r.extend(u,e)}),e.exports=s},function(e,t,n){"use strict";var r=n(2),i=n(1),a=n(9),o=n(19),s={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},u=function(e){this.renderer=e,this.onDequeues=[],this.setupDequeueing()},l=u.prototype;l.reasons=s,l.getTextureQueue=function(e){return this.eleImgCaches=this.eleImgCaches||{},this.eleImgCaches[e]=this.eleImgCaches[e]||[]},l.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},l.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new a(function(e,t){return t.reqs-e.reqs})},l.getElementIdToQueue=function(){return this.eleIdToCacheQueue=this.eleIdToCacheQueue||{}},l.getElement=function(e,t,n,i,a){var o=this,u=this.renderer,l=e._private.rscratch,c=u.cy.zoom();if(0===t.w||0===t.h||!e.visible())return null;if(null==i&&(i=Math.ceil(r.log2(c*n))),i<-4)i=-4;else if(c>=3.99||i>2)return null;var f,d=Math.pow(2,i),h=t.h*d,p=t.w*d,v=l.imgCaches=l.imgCaches||{},g=v[i];if(g)return g;if(f=h<=25?25:h<=50?50:50*Math.ceil(h/50),h>1024||p>1024||e.isEdge()||e.isParent())return null;var y=o.getTextureQueue(f),m=y[y.length-2],b=function(){return o.recycleTexture(f,p)||o.addTexture(f,p)};m||(m=y[y.length-1]),m||(m=b()),m.width-m.usedWidthi;T--)S=o.getElement(e,t,n,T,s.downscale);k()}else{var D;if(!E&&!P&&!C)for(T=i-1;T>=-4;T--){var I;if(I=v[T]){D=I;break}}if(_(D))return o.queueElement(e,i),D;m.context.translate(m.usedWidth,0),m.context.scale(d,d),u.drawElement(m.context,e,t,w),m.context.scale(1/d,1/d),m.context.translate(-m.usedWidth,0)}return g=v[i]={ele:e,x:m.usedWidth,texture:m,level:i,scale:d,width:p,height:h,scaledLabelShown:w},m.usedWidth+=Math.ceil(p+8),m.eleCaches.push(g),o.checkTextureFullness(m),g},l.invalidateElement=function(e){var t=e._private.rscratch.imgCaches;if(t)for(var n=-4;n<=2;n++){var r=t[n];if(r){var a=r.texture;a.invalidatedWidth+=r.width,t[n]=null,i.removeFromArray(a.eleCaches,r),this.removeFromQueue(e),this.checkTextureUtility(a)}}},l.checkTextureUtility=function(e){e.invalidatedWidth>=.5*e.width&&this.retireTexture(e)},l.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?i.removeFromArray(t,e):e.fullnessChecks++},l.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t);i.removeFromArray(n,e),e.retired=!0;for(var r=e.eleCaches,a=0;a=t)return o.retired=!1,o.usedWidth=0,o.invalidatedWidth=0,o.fullnessChecks=0,i.clearArray(o.eleCaches),o.context.setTransform(1,0,0,1,0,0),o.context.clearRect(0,0,o.width,o.height),i.removeFromArray(r,o),n.push(o),o}},l.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementIdToQueue(),i=e.id(),a=r[i];if(a)a.level=Math.max(a.level,t),a.reqs++,n.updateItem(a);else{var o={ele:e,level:t,reqs:1};n.push(o),r[i]=o}},l.dequeue=function(e){for(var t=this.getElementQueue(),n=this.getElementIdToQueue(),r=[],i=0;i<1&&t.size()>0;i++){var a=t.pop(),o=a.ele;if(null==o._private.rscratch.imgCaches[a.level]){n[o.id()]=null,r.push(a);var u=o.boundingBox();this.getElement(o,u,e,a.level,s.dequeue)}}return r},l.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementIdToQueue(),r=n[e.id()];null!=r&&(r.reqs=i.MAX_INT,t.updateItem(r),t.pop(),n[e.id()]=null)},l.onDequeue=function(e){this.onDequeues.push(e)},l.offDequeue=function(e){i.removeFromArray(this.onDequeues,e)},l.setupDequeueing=o.setupDequeueing({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;a.validateLayersElesOrdering(n,e);var u,l,c=a.layersByLevel,f=Math.pow(2,n),d=c[n]=c[n]||[];if(a.levelIsComplete(n,e))return d;!function(){var t=function(t){if(a.validateLayersElesOrdering(t,e),a.levelIsComplete(t,e))return l=c[t],!0},i=function(e){if(!l)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};i(1),i(-1);for(var o=d.length-1;o>=0;o--){var s=d[o];s.invalid&&r.removeFromArray(d,s)}}();var h=function(t){var r=(t=t||{}).after;if(function(){if(!u){u=i.makeBoundingBox();for(var t=0;t16e6)return null;var o=a.makeLayer(u,n);if(null!=r){var s=d.indexOf(r)+1;d.splice(s,0,o)}else(void 0===t.insert||t.insert)&&d.unshift(o);return o};if(a.skipping&&!s)return null;for(var p=null,v=e.length/1,g=!s,y=0;y=v||!i.boundingBoxInBoundingBox(p.bb,m.boundingBox()))&&!(p=h({insert:!0,after:p})))return null;l||g?a.queueLayer(p,m):a.drawEleInLayer(p,m,n,t),p.eles.push(m),x[n]=p}}return l||(g?null:d)},l.getEleLevelForLayerLevel=function(e,t){return e},l.drawEleInLayer=function(e,t,n,r){var i=this.renderer,a=e.context,o=t.boundingBox();if(0!==o.w&&0!==o.h&&t.visible()){var s=this.eleTxrCache,u=s.reasons.highQuality;n=this.getEleLevelForLayerLevel(n,r);var l=s.getElement(t,o,null,n,u);l?(d(a,!1),a.drawImage(l.texture.canvas,l.x,0,l.width,l.height,o.x1,o.y1,o.w,o.h),d(a,!0)):i.drawElement(a,t)}},l.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,i=0;i0)return!1;if(a.invalid)return!1;r+=a.eles.length}return r===t.length},l.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},l.invalidateElements=function(e){var t=this;t.lastInvalidationTime=r.performanceNow(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,function(e,n,r){t.invalidateLayer(e)})},l.invalidateLayer=function(e){if(this.lastInvalidationTime=r.performanceNow(),!e.invalid){var t=e.level,n=e.eles,i=this.layersByLevel[t];r.removeFromArray(i,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:d;e.lineWidth=p,e.lineCap="butt",i.strokeStyle(e,f[0],f[1],f[2],n),i.drawEdgePath(t,e,a.allpts,h)},g=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;i.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var y=t.pstyle("ghost-offset-x").pfValue,m=t.pstyle("ghost-offset-y").pfValue,b=t.pstyle("ghost-opacity").value,x=d*b;e.translate(y,m),v(x),g(x),e.translate(-y,-m)}v(),g(),function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l;e.lineWidth=u,"self"!==a.edgeType||o?e.lineCap="round":e.lineCap="butt",i.strokeStyle(e,c[0],c[1],c[2],n),i.drawEdgePath(t,e,a.allpts,"solid")}(),i.drawElementText(e,t,r),n&&e.translate(s.x1,s.y1)}},drawEdgePath:function(e,t,n,r){var i=e._private.rscratch,a=t,o=void 0,s=!1,u=this.usePaths();if(u){var l=n.join("$");i.pathCacheKey&&i.pathCacheKey===l?(o=t=i.pathCache,s=!0):(o=t=new Path2D,i.pathCacheKey=l,i.pathCache=o)}if(a.setLineDash)switch(r){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash([6,3]);break;case"solid":a.setLineDash([])}if(!s&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var c=2;c+30||I>0&&D>0){var O=d-M;switch(_){case"left":O-=g;break;case"center":O-=g/2}var z=h-y-M,N=g+2*M,A=y+2*M;if(k>0){var B=e.fillStyle,L=t.pstyle("text-background-color").value;e.fillStyle="rgba("+L[0]+","+L[1]+","+L[2]+","+k*a+")","roundrectangle"==t.pstyle("text-background-shape").strValue?(s=O,u=z,l=N,c=A,f=(f=2)||5,(o=e).beginPath(),o.moveTo(s+f,u),o.lineTo(s+l-f,u),o.quadraticCurveTo(s+l,u,s+l,u+f),o.lineTo(s+l,u+c-f),o.quadraticCurveTo(s+l,u+c,s+l-f,u+c),o.lineTo(s+f,u+c),o.quadraticCurveTo(s,u+c,s,u+c-f),o.lineTo(s,u+f),o.quadraticCurveTo(s,u,s+f,u),o.closePath(),o.fill()):e.fillRect(O,z,N,A),e.fillStyle=B}if(I>0&&D>0){var R=e.strokeStyle,j=e.lineWidth,q=t.pstyle("text-border-color").value,F=t.pstyle("text-border-style").value;if(e.strokeStyle="rgba("+q[0]+","+q[1]+","+q[2]+","+D*a+")",e.lineWidth=I,e.setLineDash)switch(F){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=I/4,e.setLineDash([]);break;case"solid":e.setLineDash([])}if(e.strokeRect(O,z,N,A),"double"===F){var V=I/2;e.strokeRect(O+V,z+V,N-2*V,A-2*V)}e.setLineDash&&e.setLineDash([]),e.lineWidth=j,e.strokeStyle=R}}var X=2*t.pstyle("text-outline-width").pfValue;if(X>0&&(e.lineWidth=X),"wrap"===t.pstyle("text-wrap").value){var Y=r.getPrefixedProperty(i,"labelWrapCachedLines",n),W=y/Y.length;switch(E){case"top":h-=(Y.length-1)*W;break;case"center":case"bottom":h-=(Y.length-1)*W}for(var Z=0;Z0&&e.strokeText(Y[Z],d,h),e.fillText(Y[Z],d,h),h+=W}else X>0&&e.strokeText(p,d,h),e.fillText(p,d,h);0!==P&&(e.rotate(-P),e.translate(-T,-S))}}},e.exports=a},function(e,t,n){"use strict";var r=n(0),i={drawNode:function(e,t,n,i){var a,o,s=this,u=t._private,l=u.rscratch,c=t.position();if(r.number(c.x)&&r.number(c.y)&&t.visible()){var f=t.effectiveOpacity(),d=s.usePaths(),h=void 0,p=!1,v=t.padding();a=t.width()+2*v,o=t.height()+2*v;var g=void 0;n&&(g=n,e.translate(-g.x1,-g.y1));for(var y=t.pstyle("background-image").value,m=new Array(y.length),b=new Array(y.length),x=0,w=0;w0&&void 0!==arguments[0]?arguments[0]:S;s.fillStyle(e,T[0],T[1],T[2],t)},O=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:I;s.strokeStyle(e,k[0],k[1],k[2],t)},z=t.pstyle("shape").strValue,N=t.pstyle("shape-polygon-points").pfValue;if(d){var A=z+"$"+a+"$"+o+("polygon"===z?"$"+N.join("$"):"");e.translate(c.x,c.y),l.pathCacheKey===A?(h=l.pathCache,p=!0):(h=new Path2D,l.pathCacheKey=A,l.pathCache=h)}var B,L,R,j=function(){if(!p){var n=c;d&&(n={x:0,y:0}),s.nodeShapes[s.getNodeShape(t)].draw(h||e,n.x,n.y,a,o)}d?e.fill(h):e.fill()},q=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,r=u.backgrounding,i=0,a=0;a0&&void 0!==arguments[0]&&arguments[0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f;s.hasPie(t)&&(s.drawPie(e,t,r),n&&(d||s.nodeShapes[s.getNodeShape(t)].draw(e,c.x,c.y,a,o)))},V=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,n=(P>0?P:-P)*t,r=P>0?0:255;0!==P&&(s.fillStyle(e,r,r,r,n),d?e.fill(h):e.fill())},X=function(){if(C>0){if(e.lineWidth=C,e.lineCap="butt",e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}if(d?e.stroke(h):e.stroke(),"double"===D){e.lineWidth=C/3;var t=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",d?e.stroke(h):e.stroke(),e.globalCompositeOperation=t}e.setLineDash&&e.setLineDash([])}};if("yes"===t.pstyle("ghost").value){var Y=t.pstyle("ghost-offset-x").pfValue,W=t.pstyle("ghost-offset-y").pfValue,Z=t.pstyle("ghost-opacity").value,U=Z*f;e.translate(Y,W),M(Z*S),j(),q(U),F(0!==P||0!==C),V(U),O(Z*I),X(),e.translate(-Y,-W)}M(),j(),q(),F(0!==P||0!==C),V(),O(),X(),d&&e.translate(-c.x,-c.y),s.drawElementText(e,t,i),B=t.pstyle("overlay-padding").pfValue,L=t.pstyle("overlay-opacity").value,R=t.pstyle("overlay-color").value,L>0&&(s.fillStyle(e,R[0],R[1],R[2],L),s.nodeShapes.roundrectangle.draw(e,c.x,c.y,a+2*B,o+2*B),e.fill()),n&&e.translate(g.x1,g.y1)}},hasPie:function(e){return(e=e[0])._private.hasPie},drawPie:function(e,t,n,r){t=t[0],r=r||t.position();var i=t.cy().style(),a=t.pstyle("pie-size"),o=r.x,s=r.y,u=t.width(),l=t.height(),c=Math.min(u,l)/2,f=0;this.usePaths()&&(o=0,s=0),"%"===a.units?c*=a.pfValue:void 0!==a.pfValue&&(c=a.pfValue/2);for(var d=1;d<=i.pieBackgroundN;d++){var h=t.pstyle("pie-"+d+"-background-size").value,p=t.pstyle("pie-"+d+"-background-color").value,v=t.pstyle("pie-"+d+"-background-opacity").value*n,g=h/100;g+f>1&&(g=1-f);var y=1.5*Math.PI+2*Math.PI*f,m=y+2*Math.PI*g;0===h||f>=1||f+g>1||(e.beginPath(),e.moveTo(o,s),e.arc(o,s,c,y,m),e.closePath(),this.fillStyle(e,p[0],p[1],p[2],v),e.fill(),f+=g)}}};e.exports=i},function(e,t,n){"use strict";var r={},i=n(1);r.getPixelRatio=function(){var e=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/t},r.paintCache=function(e){for(var t,n=this.paintCaches=this.paintCaches||[],r=!0,i=0;is.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!d&&(f[s.NODE]=!0,f[s.SELECT_BOX]=!0);var b=l.style()._private.coreStyle,x=l.zoom(),w=void 0!==a?a:x,_=l.pan(),E={x:_.x,y:_.y},P={zoom:x,pan:{x:_.x,y:_.y}},C=s.prevViewport;void 0===C||P.zoom!==C.zoom||P.pan.x!==C.pan.x||P.pan.y!==C.pan.y||g&&!v||(s.motionBlurPxRatio=1),o&&(E=o),w*=u,E.x*=u,E.y*=u;var T=s.getCachedZSortedEles();function S(e,t,n,r,i){var a=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",s.fillStyle(e,255,255,255,s.motionBlurTransparency),e.fillRect(t,n,r,i),e.globalCompositeOperation=a}function k(e,r){var i,u,l,f;s.clearingMotionBlur||e!==c.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]&&e!==c.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]?(i=E,u=w,l=s.canvasWidth,f=s.canvasHeight):(i={x:_.x*p,y:_.y*p},u=x*p,l=s.canvasWidth*p,f=s.canvasHeight*p),e.setTransform(1,0,0,1,0,0),"motionBlur"===r?S(e,0,0,l,f):t||void 0!==r&&!r||e.clearRect(0,0,l,f),n||(e.translate(i.x,i.y),e.scale(u,u)),o&&e.translate(o.x,o.y),a&&e.scale(a,a)}if(d||(s.textureDrawLastFrame=!1),d){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=l.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var D=s.data.bufferContexts[s.TEXTURE_BUFFER];D.setTransform(1,0,0,1,0,0),D.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:D,drawOnlyNodeLayer:!0,forcedPxRatio:u*s.textureMult}),(P=s.textureCache.viewport={zoom:l.zoom(),pan:l.pan(),width:s.canvasWidth,height:s.canvasHeight}).mpan={x:(0-P.pan.x)/P.zoom,y:(0-P.pan.y)/P.zoom}}f[s.DRAG]=!1,f[s.NODE]=!1;var I=c.contexts[s.NODE],M=s.textureCache.texture;P=s.textureCache.viewport;s.textureCache.bb,I.setTransform(1,0,0,1,0,0),h?S(I,0,0,P.width,P.height):I.clearRect(0,0,P.width,P.height);var O=b["outside-texture-bg-color"].value,z=b["outside-texture-bg-opacity"].value;s.fillStyle(I,O[0],O[1],O[2],z),I.fillRect(0,0,P.width,P.height);x=l.zoom();k(I,!1),I.clearRect(P.mpan.x,P.mpan.y,P.width/P.zoom/u,P.height/P.zoom/u),I.drawImage(M,P.mpan.x,P.mpan.y,P.width/P.zoom/u,P.height/P.zoom/u)}else s.textureOnViewport&&!t&&(s.textureCache=null);var N=l.extent(),A=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles,B=s.hideEdgesOnViewport&&A,L=[];if(L[s.NODE]=!f[s.NODE]&&h&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,L[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),L[s.DRAG]=!f[s.DRAG]&&h&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,L[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),f[s.NODE]||n||r||L[s.NODE]){var R=h&&!L[s.NODE]&&1!==p;k(I=t||(R?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:c.contexts[s.NODE]),h&&!R?"motionBlur":void 0),B?s.drawCachedNodes(I,T.nondrag,u,N):s.drawLayeredElements(I,T.nondrag,u,N),s.debug&&s.drawDebugPoints(I,T.nondrag),n||h||(f[s.NODE]=!1)}if(!r&&(f[s.DRAG]||n||L[s.DRAG])){R=h&&!L[s.DRAG]&&1!==p;k(I=t||(R?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:c.contexts[s.DRAG]),h&&!R?"motionBlur":void 0),B?s.drawCachedNodes(I,T.drag,u,N):s.drawCachedElements(I,T.drag,u,N),s.debug&&s.drawDebugPoints(I,T.drag),n||h||(f[s.DRAG]=!1)}if(s.showFps||!r&&f[s.SELECT_BOX]&&!n){if(k(I=t||c.contexts[s.SELECT_BOX]),1==s.selection[4]&&(s.hoverData.selecting||s.touchData.selecting)){x=s.cy.zoom();var j=b["selection-box-border-width"].value/x;I.lineWidth=j,I.fillStyle="rgba("+b["selection-box-color"].value[0]+","+b["selection-box-color"].value[1]+","+b["selection-box-color"].value[2]+","+b["selection-box-opacity"].value+")",I.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),j>0&&(I.strokeStyle="rgba("+b["selection-box-border-color"].value[0]+","+b["selection-box-border-color"].value[1]+","+b["selection-box-border-color"].value[2]+","+b["selection-box-opacity"].value+")",I.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(c.bgActivePosistion&&!s.hoverData.selecting){x=s.cy.zoom();var q=c.bgActivePosistion;I.fillStyle="rgba("+b["active-bg-color"].value[0]+","+b["active-bg-color"].value[1]+","+b["active-bg-color"].value[2]+","+b["active-bg-opacity"].value+")",I.beginPath(),I.arc(q.x,q.y,b["active-bg-size"].pfValue/x,0,2*Math.PI),I.fill()}var F=s.lastRedrawTime;if(s.showFps&&F){F=Math.round(F);var V=Math.round(1e3/F);I.setTransform(1,0,0,1,0,0),I.fillStyle="rgba(255, 0, 0, 0.75)",I.strokeStyle="rgba(255, 0, 0, 0.75)",I.lineWidth=1,I.fillText("1 frame = "+F+" ms = "+V+" fps",0,20);I.strokeRect(0,30,250,20),I.fillRect(0,30,250*Math.min(V/60,1),20)}n||(f[s.SELECT_BOX]=!1)}if(h&&1!==p){var X=c.contexts[s.NODE],Y=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],W=c.contexts[s.DRAG],Z=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],U=function(e,t,n){e.setTransform(1,0,0,1,0,0),n||!m?e.clearRect(0,0,s.canvasWidth,s.canvasHeight):S(e,0,0,s.canvasWidth,s.canvasHeight);var r=p;e.drawImage(t,0,0,s.canvasWidth*r,s.canvasHeight*r,0,0,s.canvasWidth,s.canvasHeight)};(f[s.NODE]||L[s.NODE])&&(U(X,Y,L[s.NODE]),f[s.NODE]=!1),(f[s.DRAG]||L[s.DRAG])&&(U(W,Z,L[s.DRAG]),f[s.DRAG]=!1)}s.prevViewport=P,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),h&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!d,s.mbFrames=0,f[s.NODE]=!0,f[s.DRAG]=!0,s.redraw()},100)),t||l.emit("render")},e.exports=r},function(e,t,n){"use strict";for(var r=n(2),i={drawPolygonPath:function(e,t,n,r,i,a){var o=r/2,s=i/2;e.beginPath&&e.beginPath(),e.moveTo(t+o*a[0],n+s*a[1]);for(var u=1;u0&&o>0){h.clearRect(0,0,a,o),h.globalCompositeOperation="source-over";var p=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,p),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var v=t.pan(),g={x:v.x*l,y:v.y*l};l*=t.zoom(),h.translate(g.x,g.y),h.scale(l,l),this.drawElements(h,p),h.scale(1/l,1/l),h.translate(-g.x,-g.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,a,o),h.fill())}return d},i.png=function(e){return o(e,this.bufferCanvasImage(e),"image/png")},i.jpg=function(e){return o(e,this.bufferCanvasImage(e),"image/jpeg")},e.exports=i},function(e,t,n){"use strict";var r={nodeShapeImpl:function(e,t,n,r,i,a,o){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,i,a);case"polygon":return this.drawPolygonPath(t,n,r,i,a,o);case"roundrectangle":return this.drawRoundRectanglePath(t,n,r,i,a);case"cutrectangle":return this.drawCutRectanglePath(t,n,r,i,a);case"bottomroundrectangle":return this.drawBottomRoundRectanglePath(t,n,r,i,a);case"barrel":return this.drawBarrelPath(t,n,r,i,a)}}};e.exports=r},function(e,t,n){"use strict";var r=n(0),i=n(1),a=n(18),o=function e(){if(!(this instanceof e))return new e;this.length=0},s=o.prototype;s.instanceString=function(){return"stylesheet"},s.selector=function(e){return this[this.length++]={selector:e,properties:[]},this},s.css=function(e,t){var n=this.length-1;if(r.string(e))this[n].properties.push({name:e,value:t});else if(r.plainObject(e))for(var o=e,s=0;s=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(11),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(0))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,a,o,s,u=1,l={},c=!1,f=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},r=function(e){a.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(p,0,e)}:(o="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(o+t,"*")}),d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n1)for(var n=1;n=t||n<0||d&&e-c>=o}function w(){var e=g();if(x(e))return _(e);u=setTimeout(w,function(e){var n=t-(e-l);return d?v(n,o-(e-c)):n}(e))}function _(e){return u=void 0,h&&i?b(e):(i=a=void 0,s)}function E(){var e=g(),n=x(e);if(i=arguments,a=this,l=e,n){if(void 0===u)return function(e){return c=e,u=setTimeout(w,t),f?b(e):s}(l);if(d)return u=setTimeout(w,t),b(l)}return void 0===u&&(u=setTimeout(w,t)),s}return t=m(t)||0,y(r)&&(f=!!r.leading,o=(d="maxWait"in r)?p(m(r.maxWait)||0,t):o,h="trailing"in r?!!r.trailing:h),E.cancel=function(){void 0!==u&&clearTimeout(u),c=0,i=l=a=u=void 0},E.flush=function(){return void 0===u?s:_(g())},E}}).call(this,n(0))},function(e,t,n){e.exports=n(15)},function(e,t,n){var r,i,a;(function(){var n,o,s,u,l,c,f,d,h,p,v,g,y,m,b;s=Math.floor,p=Math.min,o=function(e,t){return et?1:0},h=function(e,t,n,r,i){var a;if(null==n&&(n=0),null==i&&(i=o),n<0)throw new Error("lo must be non-negative");for(null==r&&(r=e.length);nn;0<=n?t++:t--)l.push(t);return l}.apply(this).reverse()).length;rv;0<=v?++c:--c)g.push(l(e,n));return g},m=function(e,t,n,r){var i,a,s;for(null==r&&(r=o),i=e[n];n>t&&r(i,a=e[s=n-1>>1])<0;)e[n]=a,n=s;return e[n]=i},b=function(e,t,n){var r,i,a,s,u;for(null==n&&(n=o),i=e.length,u=t,a=e[t],r=2*t+1;r @@ -20,4 +20,4 @@ https://github.com/jquery/jquery/blob/master/src/event.js * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(){var a,o=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",u="Expected a function",l="__lodash_hash_undefined__",c=500,f="__lodash_placeholder__",d=1,h=2,p=4,v=1,g=2,y=1,m=2,b=4,x=8,w=16,_=32,E=64,P=128,C=256,T=512,S=30,k="...",D=800,I=16,M=1,O=2,z=1/0,N=9007199254740991,A=1.7976931348623157e308,B=NaN,L=4294967295,R=L-1,j=L>>>1,q=[["ary",P],["bind",y],["bindKey",m],["curry",x],["curryRight",w],["flip",T],["partial",_],["partialRight",E],["rearg",C]],F="[object Arguments]",V="[object Array]",X="[object AsyncFunction]",Y="[object Boolean]",W="[object Date]",U="[object DOMException]",$="[object Error]",Z="[object Function]",H="[object GeneratorFunction]",G="[object Map]",Q="[object Number]",K="[object Null]",J="[object Object]",ee="[object Proxy]",te="[object RegExp]",ne="[object Set]",re="[object String]",ie="[object Symbol]",ae="[object Undefined]",oe="[object WeakMap]",se="[object WeakSet]",ue="[object ArrayBuffer]",le="[object DataView]",ce="[object Float32Array]",fe="[object Float64Array]",de="[object Int8Array]",he="[object Int16Array]",pe="[object Int32Array]",ve="[object Uint8Array]",ge="[object Uint8ClampedArray]",ye="[object Uint16Array]",me="[object Uint32Array]",be=/\b__p \+= '';/g,xe=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,_e=/&(?:amp|lt|gt|quot|#39);/g,Ee=/[&<>"']/g,Pe=RegExp(_e.source),Ce=RegExp(Ee.source),Te=/<%-([\s\S]+?)%>/g,Se=/<%([\s\S]+?)%>/g,ke=/<%=([\s\S]+?)%>/g,De=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ie=/^\w*$/,Me=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Oe=/[\\^$.*+?()[\]{}|]/g,ze=RegExp(Oe.source),Ne=/^\s+|\s+$/g,Ae=/^\s+/,Be=/\s+$/,Le=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Re=/\{\n\/\* \[wrapped with (.+)\] \*/,je=/,? & /,qe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Fe=/\\(\\)?/g,Ve=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Xe=/\w*$/,Ye=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,Ue=/^\[object .+?Constructor\]$/,$e=/^0o[0-7]+$/i,Ze=/^(?:0|[1-9]\d*)$/,He=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ge=/($^)/,Qe=/['\n\r\u2028\u2029\\]/g,Ke="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Je="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",et="[\\ud800-\\udfff]",tt="["+Je+"]",nt="["+Ke+"]",rt="\\d+",it="[\\u2700-\\u27bf]",at="[a-z\\xdf-\\xf6\\xf8-\\xff]",ot="[^\\ud800-\\udfff"+Je+rt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",st="\\ud83c[\\udffb-\\udfff]",ut="[^\\ud800-\\udfff]",lt="(?:\\ud83c[\\udde6-\\uddff]){2}",ct="[\\ud800-\\udbff][\\udc00-\\udfff]",ft="[A-Z\\xc0-\\xd6\\xd8-\\xde]",dt="(?:"+at+"|"+ot+")",ht="(?:"+ft+"|"+ot+")",pt="(?:"+nt+"|"+st+")"+"?",vt="[\\ufe0e\\ufe0f]?"+pt+("(?:\\u200d(?:"+[ut,lt,ct].join("|")+")[\\ufe0e\\ufe0f]?"+pt+")*"),gt="(?:"+[it,lt,ct].join("|")+")"+vt,yt="(?:"+[ut+nt+"?",nt,lt,ct,et].join("|")+")",mt=RegExp("['’]","g"),bt=RegExp(nt,"g"),xt=RegExp(st+"(?="+st+")|"+yt+vt,"g"),wt=RegExp([ft+"?"+at+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tt,ft,"$"].join("|")+")",ht+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tt,ft+dt,"$"].join("|")+")",ft+"?"+dt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ft+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",rt,gt].join("|"),"g"),_t=RegExp("[\\u200d\\ud800-\\udfff"+Ke+"\\ufe0e\\ufe0f]"),Et=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ct=-1,Tt={};Tt[ce]=Tt[fe]=Tt[de]=Tt[he]=Tt[pe]=Tt[ve]=Tt[ge]=Tt[ye]=Tt[me]=!0,Tt[F]=Tt[V]=Tt[ue]=Tt[Y]=Tt[le]=Tt[W]=Tt[$]=Tt[Z]=Tt[G]=Tt[Q]=Tt[J]=Tt[te]=Tt[ne]=Tt[re]=Tt[oe]=!1;var St={};St[F]=St[V]=St[ue]=St[le]=St[Y]=St[W]=St[ce]=St[fe]=St[de]=St[he]=St[pe]=St[G]=St[Q]=St[J]=St[te]=St[ne]=St[re]=St[ie]=St[ve]=St[ge]=St[ye]=St[me]=!0,St[$]=St[Z]=St[oe]=!1;var kt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Dt=parseFloat,It=parseInt,Mt="object"==typeof e&&e&&e.Object===Object&&e,Ot="object"==typeof self&&self&&self.Object===Object&&self,zt=Mt||Ot||Function("return this")(),Nt=t&&!t.nodeType&&t,At=Nt&&"object"==typeof r&&r&&!r.nodeType&&r,Bt=At&&At.exports===Nt,Lt=Bt&&Mt.process,Rt=function(){try{var e=At&&At.require&&At.require("util").types;return e||Lt&&Lt.binding&&Lt.binding("util")}catch(e){}}(),jt=Rt&&Rt.isArrayBuffer,qt=Rt&&Rt.isDate,Ft=Rt&&Rt.isMap,Vt=Rt&&Rt.isRegExp,Xt=Rt&&Rt.isSet,Yt=Rt&&Rt.isTypedArray;function Wt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Ut(e,t,n,r){for(var i=-1,a=null==e?0:e.length;++i-1}function Kt(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function wn(e,t){for(var n=e.length;n--&&un(t,e[n],0)>-1;);return n}var _n=hn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),En=hn({"&":"&","<":"<",">":">",'"':""","'":"'"});function Pn(e){return"\\"+kt[e]}function Cn(e){return _t.test(e)}function Tn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function Sn(e,t){return function(n){return e(t(n))}}function kn(e,t){for(var n=-1,r=e.length,i=0,a=[];++n",""":'"',"'":"'"});var Nn=function e(t){var n,r=(t=null==t?zt:Nn.defaults(zt.Object(),t,Nn.pick(zt,Pt))).Array,i=t.Date,Ke=t.Error,Je=t.Function,et=t.Math,tt=t.Object,nt=t.RegExp,rt=t.String,it=t.TypeError,at=r.prototype,ot=Je.prototype,st=tt.prototype,ut=t["__core-js_shared__"],lt=ot.toString,ct=st.hasOwnProperty,ft=0,dt=(n=/[^.]+$/.exec(ut&&ut.keys&&ut.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ht=st.toString,pt=lt.call(tt),vt=zt._,gt=nt("^"+lt.call(ct).replace(Oe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),yt=Bt?t.Buffer:a,xt=t.Symbol,_t=t.Uint8Array,kt=yt?yt.allocUnsafe:a,Mt=Sn(tt.getPrototypeOf,tt),Ot=tt.create,Nt=st.propertyIsEnumerable,At=at.splice,Lt=xt?xt.isConcatSpreadable:a,Rt=xt?xt.iterator:a,an=xt?xt.toStringTag:a,hn=function(){try{var e=Ra(tt,"defineProperty");return e({},"",{}),e}catch(e){}}(),An=t.clearTimeout!==zt.clearTimeout&&t.clearTimeout,Bn=i&&i.now!==zt.Date.now&&i.now,Ln=t.setTimeout!==zt.setTimeout&&t.setTimeout,Rn=et.ceil,jn=et.floor,qn=tt.getOwnPropertySymbols,Fn=yt?yt.isBuffer:a,Vn=t.isFinite,Xn=at.join,Yn=Sn(tt.keys,tt),Wn=et.max,Un=et.min,$n=i.now,Zn=t.parseInt,Hn=et.random,Gn=at.reverse,Qn=Ra(t,"DataView"),Kn=Ra(t,"Map"),Jn=Ra(t,"Promise"),er=Ra(t,"Set"),tr=Ra(t,"WeakMap"),nr=Ra(tt,"create"),rr=tr&&new tr,ir={},ar=co(Qn),or=co(Kn),sr=co(Jn),ur=co(er),lr=co(tr),cr=xt?xt.prototype:a,fr=cr?cr.valueOf:a,dr=cr?cr.toString:a;function hr(e){if(ks(e)&&!ys(e)&&!(e instanceof yr)){if(e instanceof gr)return e;if(ct.call(e,"__wrapped__"))return fo(e)}return new gr(e)}var pr=function(){function e(){}return function(t){if(!Ss(t))return{};if(Ot)return Ot(t);e.prototype=t;var n=new e;return e.prototype=a,n}}();function vr(){}function gr(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=a}function yr(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=L,this.__views__=[]}function mr(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Ar(e,t,n,r,i,o){var s,u=t&d,l=t&h,c=t&p;if(n&&(s=i?n(e,r,i,o):n(e)),s!==a)return s;if(!Ss(e))return e;var f=ys(e);if(f){if(s=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&ct.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!u)return na(e,s)}else{var v=Fa(e),g=v==Z||v==H;if(ws(e))return Gi(e,u);if(v==J||v==F||g&&!i){if(s=l||g?{}:Xa(e),!u)return l?function(e,t){return ra(e,qa(e),t)}(e,function(e,t){return e&&ra(t,au(t),e)}(s,e)):function(e,t){return ra(e,ja(e),t)}(e,Mr(s,e))}else{if(!St[v])return i?e:{};s=function(e,t,n){var r,i,a,o=e.constructor;switch(t){case ue:return Qi(e);case Y:case W:return new o(+e);case le:return function(e,t){var n=t?Qi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case ce:case fe:case de:case he:case pe:case ve:case ge:case ye:case me:return Ki(e,n);case G:return new o;case Q:case re:return new o(e);case te:return(a=new(i=e).constructor(i.source,Xe.exec(i))).lastIndex=i.lastIndex,a;case ne:return new o;case ie:return r=e,fr?tt(fr.call(r)):{}}}(e,v,u)}}o||(o=new _r);var y=o.get(e);if(y)return y;if(o.set(e,s),zs(e))return e.forEach(function(r){s.add(Ar(r,t,n,r,e,o))}),s;if(Ds(e))return e.forEach(function(r,i){s.set(i,Ar(r,t,n,i,e,o))}),s;var m=f?a:(c?l?Ma:Ia:l?au:iu)(e);return $t(m||e,function(r,i){m&&(r=e[i=r]),kr(s,i,Ar(r,t,n,i,e,o))}),s}function Br(e,t,n){var r=n.length;if(null==e)return!r;for(e=tt(e);r--;){var i=n[r],o=t[i],s=e[i];if(s===a&&!(i in e)||!o(s))return!1}return!0}function Lr(e,t,n){if("function"!=typeof e)throw new it(u);return ro(function(){e.apply(a,n)},t)}function Rr(e,t,n,r){var i=-1,a=Qt,s=!0,u=e.length,l=[],c=t.length;if(!u)return l;n&&(t=Jt(t,yn(n))),r?(a=Kt,s=!1):t.length>=o&&(a=bn,s=!1,t=new wr(t));e:for(;++i-1},br.prototype.set=function(e,t){var n=this.__data__,r=Dr(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},xr.prototype.clear=function(){this.size=0,this.__data__={hash:new mr,map:new(Kn||br),string:new mr}},xr.prototype.delete=function(e){var t=Ba(this,e).delete(e);return this.size-=t?1:0,t},xr.prototype.get=function(e){return Ba(this,e).get(e)},xr.prototype.has=function(e){return Ba(this,e).has(e)},xr.prototype.set=function(e,t){var n=Ba(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},wr.prototype.add=wr.prototype.push=function(e){return this.__data__.set(e,l),this},wr.prototype.has=function(e){return this.__data__.has(e)},_r.prototype.clear=function(){this.__data__=new br,this.size=0},_r.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},_r.prototype.get=function(e){return this.__data__.get(e)},_r.prototype.has=function(e){return this.__data__.has(e)},_r.prototype.set=function(e,t){var n=this.__data__;if(n instanceof br){var r=n.__data__;if(!Kn||r.length0&&n(s)?t>1?Yr(s,t-1,n,r,i):en(i,s):r||(i[i.length]=s)}return i}var Wr=sa(),Ur=sa(!0);function $r(e,t){return e&&Wr(e,t,iu)}function Zr(e,t){return e&&Ur(e,t,iu)}function Hr(e,t){return Gt(t,function(t){return Ps(e[t])})}function Gr(e,t){for(var n=0,r=(t=Ui(t,e)).length;null!=e&&nt}function ei(e,t){return null!=e&&ct.call(e,t)}function ti(e,t){return null!=e&&t in tt(e)}function ni(e,t,n){for(var i=n?Kt:Qt,o=e[0].length,s=e.length,u=s,l=r(s),c=1/0,f=[];u--;){var d=e[u];u&&t&&(d=Jt(d,yn(t))),c=Un(d.length,c),l[u]=!n&&(t||o>=120&&d.length>=120)?new wr(u&&d):a}d=e[0];var h=-1,p=l[0];e:for(;++h=s)return u;var l=n[r];return u*("desc"==l?-1:1)}}return e.index-t.index}(e,t,n)})}function mi(e,t,n){for(var r=-1,i=t.length,a={};++r-1;)s!==e&&At.call(s,u,1),At.call(e,u,1);return e}function xi(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==a){var a=i;Wa(i)?At.call(e,i,1):Ri(e,i)}}return e}function wi(e,t){return e+jn(Hn()*(t-e+1))}function _i(e,t){var n="";if(!e||t<1||t>N)return n;do{t%2&&(n+=e),(t=jn(t/2))&&(e+=e)}while(t);return n}function Ei(e,t){return io(Ja(e,t,Iu),e+"")}function Pi(e){return Pr(hu(e))}function Ci(e,t){var n=hu(e);return so(n,Nr(t,0,n.length))}function Ti(e,t,n,r){if(!Ss(e))return e;for(var i=-1,o=(t=Ui(t,e)).length,s=o-1,u=e;null!=u&&++ia?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=r(a);++i>>1,o=e[a];null!==o&&!As(o)&&(n?o<=t:o=o){var c=t?null:_a(e);if(c)return Dn(c);s=!1,i=bn,l=new wr}else l=t?[]:u;e:for(;++r=r?e:Ii(e,t,n)}var Hi=An||function(e){return zt.clearTimeout(e)};function Gi(e,t){if(t)return e.slice();var n=e.length,r=kt?kt(n):new e.constructor(n);return e.copy(r),r}function Qi(e){var t=new e.constructor(e.byteLength);return new _t(t).set(new _t(e)),t}function Ki(e,t){var n=t?Qi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Ji(e,t){if(e!==t){var n=e!==a,r=null===e,i=e==e,o=As(e),s=t!==a,u=null===t,l=t==t,c=As(t);if(!u&&!c&&!o&&e>t||o&&s&&l&&!u&&!c||r&&s&&l||!n&&l||!i)return 1;if(!r&&!o&&!c&&e1?n[i-1]:a,s=i>2?n[2]:a;for(o=e.length>3&&"function"==typeof o?(i--,o):a,s&&Ua(n[0],n[1],s)&&(o=i<3?a:o,i=1),t=tt(t);++r-1?i[o?t[s]:s]:a}}function da(e){return Da(function(t){var n=t.length,r=n,i=gr.prototype.thru;for(e&&t.reverse();r--;){var o=t[r];if("function"!=typeof o)throw new it(u);if(i&&!s&&"wrapper"==za(o))var s=new gr([],!0)}for(r=s?r:n;++r1&&x.reverse(),d&&cu))return!1;var c=o.get(e);if(c&&o.get(t))return c==t;var f=-1,d=!0,h=n&g?new wr:a;for(o.set(e,t),o.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Le,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return $t(q,function(n){var r="_."+n[0];t&n[1]&&!Qt(e,r)&&e.push(r)}),e.sort()}(function(e){var t=e.match(Re);return t?t[1].split(je):[]}(r),n)))}function oo(e){var t=0,n=0;return function(){var r=$n(),i=I-(r-n);if(n=r,i>0){if(++t>=D)return arguments[0]}else t=0;return e.apply(a,arguments)}}function so(e,t){var n=-1,r=e.length,i=r-1;for(t=t===a?r:t;++n1?e[t-1]:a;return n="function"==typeof n?(e.pop(),n):a,Oo(e,n)});function jo(e){var t=hr(e);return t.__chain__=!0,t}function qo(e,t){return t(e)}var Fo=Da(function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return zr(t,e)};return!(t>1||this.__actions__.length)&&r instanceof yr&&Wa(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:qo,args:[i],thisArg:a}),new gr(r,this.__chain__).thru(function(e){return t&&!e.length&&e.push(a),e})):this.thru(i)});var Vo=ia(function(e,t,n){ct.call(e,n)?++e[n]:Or(e,n,1)});var Xo=fa(go),Yo=fa(yo);function Wo(e,t){return(ys(e)?$t:jr)(e,Aa(t,3))}function Uo(e,t){return(ys(e)?Zt:qr)(e,Aa(t,3))}var $o=ia(function(e,t,n){ct.call(e,n)?e[n].push(t):Or(e,n,[t])});var Zo=Ei(function(e,t,n){var i=-1,a="function"==typeof t,o=bs(e)?r(e.length):[];return jr(e,function(e){o[++i]=a?Wt(t,e,n):ri(e,t,n)}),o}),Ho=ia(function(e,t,n){Or(e,n,t)});function Go(e,t){return(ys(e)?Jt:di)(e,Aa(t,3))}var Qo=ia(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]});var Ko=Ei(function(e,t){if(null==e)return[];var n=t.length;return n>1&&Ua(e,t[0],t[1])?t=[]:n>2&&Ua(t[0],t[1],t[2])&&(t=[t[0]]),yi(e,Yr(t,1),[])}),Jo=Bn||function(){return zt.Date.now()};function es(e,t,n){return t=n?a:t,t=e&&null==t?e.length:t,Pa(e,P,a,a,a,a,t)}function ts(e,t){var n;if("function"!=typeof t)throw new it(u);return e=Fs(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=a),n}}var ns=Ei(function(e,t,n){var r=y;if(n.length){var i=kn(n,Na(ns));r|=_}return Pa(e,r,t,n,i)}),rs=Ei(function(e,t,n){var r=y|m;if(n.length){var i=kn(n,Na(rs));r|=_}return Pa(t,r,e,n,i)});function is(e,t,n){var r,i,o,s,l,c,f=0,d=!1,h=!1,p=!0;if("function"!=typeof e)throw new it(u);function v(t){var n=r,o=i;return r=i=a,f=t,s=e.apply(o,n)}function g(e){var n=e-c;return c===a||n>=t||n<0||h&&e-f>=o}function y(){var e=Jo();if(g(e))return m(e);l=ro(y,function(e){var n=t-(e-c);return h?Un(n,o-(e-f)):n}(e))}function m(e){return l=a,p&&r?v(e):(r=i=a,s)}function b(){var e=Jo(),n=g(e);if(r=arguments,i=this,c=e,n){if(l===a)return function(e){return f=e,l=ro(y,t),d?v(e):s}(c);if(h)return l=ro(y,t),v(c)}return l===a&&(l=ro(y,t)),s}return t=Xs(t)||0,Ss(n)&&(d=!!n.leading,o=(h="maxWait"in n)?Wn(Xs(n.maxWait)||0,t):o,p="trailing"in n?!!n.trailing:p),b.cancel=function(){l!==a&&Hi(l),f=0,r=c=i=l=a},b.flush=function(){return l===a?s:m(Jo())},b}var as=Ei(function(e,t){return Lr(e,1,t)}),os=Ei(function(e,t,n){return Lr(e,Xs(t)||0,n)});function ss(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new it(u);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ss.Cache||xr),n}function us(e){if("function"!=typeof e)throw new it(u);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ss.Cache=xr;var ls=$i(function(e,t){var n=(t=1==t.length&&ys(t[0])?Jt(t[0],yn(Aa())):Jt(Yr(t,1),yn(Aa()))).length;return Ei(function(r){for(var i=-1,a=Un(r.length,n);++i=t}),gs=ii(function(){return arguments}())?ii:function(e){return ks(e)&&ct.call(e,"callee")&&!Nt.call(e,"callee")},ys=r.isArray,ms=jt?yn(jt):function(e){return ks(e)&&Kr(e)==ue};function bs(e){return null!=e&&Ts(e.length)&&!Ps(e)}function xs(e){return ks(e)&&bs(e)}var ws=Fn||Xu,_s=qt?yn(qt):function(e){return ks(e)&&Kr(e)==W};function Es(e){if(!ks(e))return!1;var t=Kr(e);return t==$||t==U||"string"==typeof e.message&&"string"==typeof e.name&&!Ms(e)}function Ps(e){if(!Ss(e))return!1;var t=Kr(e);return t==Z||t==H||t==X||t==ee}function Cs(e){return"number"==typeof e&&e==Fs(e)}function Ts(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=N}function Ss(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ks(e){return null!=e&&"object"==typeof e}var Ds=Ft?yn(Ft):function(e){return ks(e)&&Fa(e)==G};function Is(e){return"number"==typeof e||ks(e)&&Kr(e)==Q}function Ms(e){if(!ks(e)||Kr(e)!=J)return!1;var t=Mt(e);if(null===t)return!0;var n=ct.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&<.call(n)==pt}var Os=Vt?yn(Vt):function(e){return ks(e)&&Kr(e)==te};var zs=Xt?yn(Xt):function(e){return ks(e)&&Fa(e)==ne};function Ns(e){return"string"==typeof e||!ys(e)&&ks(e)&&Kr(e)==re}function As(e){return"symbol"==typeof e||ks(e)&&Kr(e)==ie}var Bs=Yt?yn(Yt):function(e){return ks(e)&&Ts(e.length)&&!!Tt[Kr(e)]};var Ls=ba(fi),Rs=ba(function(e,t){return e<=t});function js(e){if(!e)return[];if(bs(e))return Ns(e)?On(e):na(e);if(Rt&&e[Rt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Rt]());var t=Fa(e);return(t==G?Tn:t==ne?Dn:hu)(e)}function qs(e){return e?(e=Xs(e))===z||e===-z?(e<0?-1:1)*A:e==e?e:0:0===e?e:0}function Fs(e){var t=qs(e),n=t%1;return t==t?n?t-n:t:0}function Vs(e){return e?Nr(Fs(e),0,L):0}function Xs(e){if("number"==typeof e)return e;if(As(e))return B;if(Ss(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ss(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Ne,"");var n=We.test(e);return n||$e.test(e)?It(e.slice(2),n?2:8):Ye.test(e)?B:+e}function Ys(e){return ra(e,au(e))}function Ws(e){return null==e?"":Bi(e)}var Us=aa(function(e,t){if(Ga(t)||bs(t))ra(t,iu(t),e);else for(var n in t)ct.call(t,n)&&kr(e,n,t[n])}),$s=aa(function(e,t){ra(t,au(t),e)}),Zs=aa(function(e,t,n,r){ra(t,au(t),e,r)}),Hs=aa(function(e,t,n,r){ra(t,iu(t),e,r)}),Gs=Da(zr);var Qs=Ei(function(e,t){e=tt(e);var n=-1,r=t.length,i=r>2?t[2]:a;for(i&&Ua(t[0],t[1],i)&&(r=1);++n1),t}),ra(e,Ma(e),n),r&&(n=Ar(n,d|h|p,Sa));for(var i=t.length;i--;)Ri(n,t[i]);return n});var lu=Da(function(e,t){return null==e?{}:function(e,t){return mi(e,t,function(t,n){return eu(e,n)})}(e,t)});function cu(e,t){if(null==e)return{};var n=Jt(Ma(e),function(e){return[e]});return t=Aa(t),mi(e,n,function(e,n){return t(e,n[0])})}var fu=Ea(iu),du=Ea(au);function hu(e){return null==e?[]:mn(e,iu(e))}var pu=la(function(e,t,n){return t=t.toLowerCase(),e+(n?vu(t):t)});function vu(e){return Eu(Ws(e).toLowerCase())}function gu(e){return(e=Ws(e))&&e.replace(He,_n).replace(bt,"")}var yu=la(function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}),mu=la(function(e,t,n){return e+(n?" ":"")+t.toLowerCase()}),bu=ua("toLowerCase");var xu=la(function(e,t,n){return e+(n?"_":"")+t.toLowerCase()});var wu=la(function(e,t,n){return e+(n?" ":"")+Eu(t)});var _u=la(function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}),Eu=ua("toUpperCase");function Pu(e,t,n){return e=Ws(e),(t=n?a:t)===a?function(e){return Et.test(e)}(e)?function(e){return e.match(wt)||[]}(e):function(e){return e.match(qe)||[]}(e):e.match(t)||[]}var Cu=Ei(function(e,t){try{return Wt(e,a,t)}catch(e){return Es(e)?e:new Ke(e)}}),Tu=Da(function(e,t){return $t(t,function(t){t=lo(t),Or(e,t,ns(e[t],e))}),e});function Su(e){return function(){return e}}var ku=da(),Du=da(!0);function Iu(e){return e}function Mu(e){return ui("function"==typeof e?e:Ar(e,d))}var Ou=Ei(function(e,t){return function(n){return ri(n,e,t)}}),zu=Ei(function(e,t){return function(n){return ri(e,n,t)}});function Nu(e,t,n){var r=iu(t),i=Hr(t,r);null!=n||Ss(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=Hr(t,iu(t)));var a=!(Ss(n)&&"chain"in n&&!n.chain),o=Ps(e);return $t(i,function(n){var r=t[n];e[n]=r,o&&(e.prototype[n]=function(){var t=this.__chain__;if(a||t){var n=e(this.__wrapped__);return(n.__actions__=na(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,en([this.value()],arguments))})}),e}function Au(){}var Bu=ga(Jt),Lu=ga(Ht),Ru=ga(rn);function ju(e){return $a(e)?dn(lo(e)):function(e){return function(t){return Gr(t,e)}}(e)}var qu=ma(),Fu=ma(!0);function Vu(){return[]}function Xu(){return!1}var Yu=va(function(e,t){return e+t},0),Wu=wa("ceil"),Uu=va(function(e,t){return e/t},1),$u=wa("floor");var Zu,Hu=va(function(e,t){return e*t},1),Gu=wa("round"),Qu=va(function(e,t){return e-t},0);return hr.after=function(e,t){if("function"!=typeof t)throw new it(u);return e=Fs(e),function(){if(--e<1)return t.apply(this,arguments)}},hr.ary=es,hr.assign=Us,hr.assignIn=$s,hr.assignInWith=Zs,hr.assignWith=Hs,hr.at=Gs,hr.before=ts,hr.bind=ns,hr.bindAll=Tu,hr.bindKey=rs,hr.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return ys(e)?e:[e]},hr.chain=jo,hr.chunk=function(e,t,n){t=(n?Ua(e,t,n):t===a)?1:Wn(Fs(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,s=0,u=r(Rn(i/t));oi?0:i+n),(r=r===a||r>i?i:Fs(r))<0&&(r+=i),r=n>r?0:Vs(r);n>>0)?(e=Ws(e))&&("string"==typeof t||null!=t&&!Os(t))&&!(t=Bi(t))&&Cn(e)?Zi(On(e),0,n):e.split(t,n):[]},hr.spread=function(e,t){if("function"!=typeof e)throw new it(u);return t=null==t?0:Wn(Fs(t),0),Ei(function(n){var r=n[t],i=Zi(n,0,t);return r&&en(i,r),Wt(e,this,i)})},hr.tail=function(e){var t=null==e?0:e.length;return t?Ii(e,1,t):[]},hr.take=function(e,t,n){return e&&e.length?Ii(e,0,(t=n||t===a?1:Fs(t))<0?0:t):[]},hr.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Ii(e,(t=r-(t=n||t===a?1:Fs(t)))<0?0:t,r):[]},hr.takeRightWhile=function(e,t){return e&&e.length?qi(e,Aa(t,3),!1,!0):[]},hr.takeWhile=function(e,t){return e&&e.length?qi(e,Aa(t,3)):[]},hr.tap=function(e,t){return t(e),e},hr.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new it(u);return Ss(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),is(e,t,{leading:r,maxWait:t,trailing:i})},hr.thru=qo,hr.toArray=js,hr.toPairs=fu,hr.toPairsIn=du,hr.toPath=function(e){return ys(e)?Jt(e,lo):As(e)?[e]:na(uo(Ws(e)))},hr.toPlainObject=Ys,hr.transform=function(e,t,n){var r=ys(e),i=r||ws(e)||Bs(e);if(t=Aa(t,4),null==n){var a=e&&e.constructor;n=i?r?new a:[]:Ss(e)&&Ps(a)?pr(Mt(e)):{}}return(i?$t:$r)(e,function(e,r,i){return t(n,e,r,i)}),n},hr.unary=function(e){return es(e,1)},hr.union=ko,hr.unionBy=Do,hr.unionWith=Io,hr.uniq=function(e){return e&&e.length?Li(e):[]},hr.uniqBy=function(e,t){return e&&e.length?Li(e,Aa(t,2)):[]},hr.uniqWith=function(e,t){return t="function"==typeof t?t:a,e&&e.length?Li(e,a,t):[]},hr.unset=function(e,t){return null==e||Ri(e,t)},hr.unzip=Mo,hr.unzipWith=Oo,hr.update=function(e,t,n){return null==e?e:ji(e,t,Wi(n))},hr.updateWith=function(e,t,n,r){return r="function"==typeof r?r:a,null==e?e:ji(e,t,Wi(n),r)},hr.values=hu,hr.valuesIn=function(e){return null==e?[]:mn(e,au(e))},hr.without=zo,hr.words=Pu,hr.wrap=function(e,t){return cs(Wi(t),e)},hr.xor=No,hr.xorBy=Ao,hr.xorWith=Bo,hr.zip=Lo,hr.zipObject=function(e,t){return Xi(e||[],t||[],kr)},hr.zipObjectDeep=function(e,t){return Xi(e||[],t||[],Ti)},hr.zipWith=Ro,hr.entries=fu,hr.entriesIn=du,hr.extend=$s,hr.extendWith=Zs,Nu(hr,hr),hr.add=Yu,hr.attempt=Cu,hr.camelCase=pu,hr.capitalize=vu,hr.ceil=Wu,hr.clamp=function(e,t,n){return n===a&&(n=t,t=a),n!==a&&(n=(n=Xs(n))==n?n:0),t!==a&&(t=(t=Xs(t))==t?t:0),Nr(Xs(e),t,n)},hr.clone=function(e){return Ar(e,p)},hr.cloneDeep=function(e){return Ar(e,d|p)},hr.cloneDeepWith=function(e,t){return Ar(e,d|p,t="function"==typeof t?t:a)},hr.cloneWith=function(e,t){return Ar(e,p,t="function"==typeof t?t:a)},hr.conformsTo=function(e,t){return null==t||Br(e,t,iu(t))},hr.deburr=gu,hr.defaultTo=function(e,t){return null==e||e!=e?t:e},hr.divide=Uu,hr.endsWith=function(e,t,n){e=Ws(e),t=Bi(t);var r=e.length,i=n=n===a?r:Nr(Fs(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},hr.eq=hs,hr.escape=function(e){return(e=Ws(e))&&Ce.test(e)?e.replace(Ee,En):e},hr.escapeRegExp=function(e){return(e=Ws(e))&&ze.test(e)?e.replace(Oe,"\\$&"):e},hr.every=function(e,t,n){var r=ys(e)?Ht:Fr;return n&&Ua(e,t,n)&&(t=a),r(e,Aa(t,3))},hr.find=Xo,hr.findIndex=go,hr.findKey=function(e,t){return on(e,Aa(t,3),$r)},hr.findLast=Yo,hr.findLastIndex=yo,hr.findLastKey=function(e,t){return on(e,Aa(t,3),Zr)},hr.floor=$u,hr.forEach=Wo,hr.forEachRight=Uo,hr.forIn=function(e,t){return null==e?e:Wr(e,Aa(t,3),au)},hr.forInRight=function(e,t){return null==e?e:Ur(e,Aa(t,3),au)},hr.forOwn=function(e,t){return e&&$r(e,Aa(t,3))},hr.forOwnRight=function(e,t){return e&&Zr(e,Aa(t,3))},hr.get=Js,hr.gt=ps,hr.gte=vs,hr.has=function(e,t){return null!=e&&Va(e,t,ei)},hr.hasIn=eu,hr.head=bo,hr.identity=Iu,hr.includes=function(e,t,n,r){e=bs(e)?e:hu(e),n=n&&!r?Fs(n):0;var i=e.length;return n<0&&(n=Wn(i+n,0)),Ns(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&un(e,t,n)>-1},hr.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:Fs(n);return i<0&&(i=Wn(r+i,0)),un(e,t,i)},hr.inRange=function(e,t,n){return t=qs(t),n===a?(n=t,t=0):n=qs(n),function(e,t,n){return e>=Un(t,n)&&e=-N&&e<=N},hr.isSet=zs,hr.isString=Ns,hr.isSymbol=As,hr.isTypedArray=Bs,hr.isUndefined=function(e){return e===a},hr.isWeakMap=function(e){return ks(e)&&Fa(e)==oe},hr.isWeakSet=function(e){return ks(e)&&Kr(e)==se},hr.join=function(e,t){return null==e?"":Xn.call(e,t)},hr.kebabCase=yu,hr.last=Eo,hr.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return n!==a&&(i=(i=Fs(n))<0?Wn(r+i,0):Un(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):sn(e,cn,i,!0)},hr.lowerCase=mu,hr.lowerFirst=bu,hr.lt=Ls,hr.lte=Rs,hr.max=function(e){return e&&e.length?Vr(e,Iu,Jr):a},hr.maxBy=function(e,t){return e&&e.length?Vr(e,Aa(t,2),Jr):a},hr.mean=function(e){return fn(e,Iu)},hr.meanBy=function(e,t){return fn(e,Aa(t,2))},hr.min=function(e){return e&&e.length?Vr(e,Iu,fi):a},hr.minBy=function(e,t){return e&&e.length?Vr(e,Aa(t,2),fi):a},hr.stubArray=Vu,hr.stubFalse=Xu,hr.stubObject=function(){return{}},hr.stubString=function(){return""},hr.stubTrue=function(){return!0},hr.multiply=Hu,hr.nth=function(e,t){return e&&e.length?gi(e,Fs(t)):a},hr.noConflict=function(){return zt._===this&&(zt._=vt),this},hr.noop=Au,hr.now=Jo,hr.pad=function(e,t,n){e=Ws(e);var r=(t=Fs(t))?Mn(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return ya(jn(i),n)+e+ya(Rn(i),n)},hr.padEnd=function(e,t,n){e=Ws(e);var r=(t=Fs(t))?Mn(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=Hn();return Un(e+i*(t-e+Dt("1e-"+((i+"").length-1))),t)}return wi(e,t)},hr.reduce=function(e,t,n){var r=ys(e)?tn:pn,i=arguments.length<3;return r(e,Aa(t,4),n,i,jr)},hr.reduceRight=function(e,t,n){var r=ys(e)?nn:pn,i=arguments.length<3;return r(e,Aa(t,4),n,i,qr)},hr.repeat=function(e,t,n){return t=(n?Ua(e,t,n):t===a)?1:Fs(t),_i(Ws(e),t)},hr.replace=function(){var e=arguments,t=Ws(e[0]);return e.length<3?t:t.replace(e[1],e[2])},hr.result=function(e,t,n){var r=-1,i=(t=Ui(t,e)).length;for(i||(i=1,e=a);++rN)return[];var n=L,r=Un(e,L);t=Aa(t),e-=L;for(var i=gn(r,t);++n=o)return e;var u=n-Mn(r);if(u<1)return r;var l=s?Zi(s,0,u).join(""):e.slice(0,u);if(i===a)return l+r;if(s&&(u+=l.length-u),Os(i)){if(e.slice(u).search(i)){var c,f=l;for(i.global||(i=nt(i.source,Ws(Xe.exec(i))+"g")),i.lastIndex=0;c=i.exec(f);)var d=c.index;l=l.slice(0,d===a?u:d)}}else if(e.indexOf(Bi(i),u)!=u){var h=l.lastIndexOf(i);h>-1&&(l=l.slice(0,h))}return l+r},hr.unescape=function(e){return(e=Ws(e))&&Pe.test(e)?e.replace(_e,zn):e},hr.uniqueId=function(e){var t=++ft;return Ws(e)+t},hr.upperCase=_u,hr.upperFirst=Eu,hr.each=Wo,hr.eachRight=Uo,hr.first=bo,Nu(hr,(Zu={},$r(hr,function(e,t){ct.call(hr.prototype,t)||(Zu[t]=e)}),Zu),{chain:!1}),hr.VERSION="4.17.11",$t(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){hr[e].placeholder=hr}),$t(["drop","take"],function(e,t){yr.prototype[e]=function(n){n=n===a?1:Wn(Fs(n),0);var r=this.__filtered__&&!t?new yr(this):this.clone();return r.__filtered__?r.__takeCount__=Un(n,r.__takeCount__):r.__views__.push({size:Un(n,L),type:e+(r.__dir__<0?"Right":"")}),r},yr.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}}),$t(["filter","map","takeWhile"],function(e,t){var n=t+1,r=n==M||3==n;yr.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Aa(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}}),$t(["head","last"],function(e,t){var n="take"+(t?"Right":"");yr.prototype[e]=function(){return this[n](1).value()[0]}}),$t(["initial","tail"],function(e,t){var n="drop"+(t?"":"Right");yr.prototype[e]=function(){return this.__filtered__?new yr(this):this[n](1)}}),yr.prototype.compact=function(){return this.filter(Iu)},yr.prototype.find=function(e){return this.filter(e).head()},yr.prototype.findLast=function(e){return this.reverse().find(e)},yr.prototype.invokeMap=Ei(function(e,t){return"function"==typeof e?new yr(this):this.map(function(n){return ri(n,e,t)})}),yr.prototype.reject=function(e){return this.filter(us(Aa(e)))},yr.prototype.slice=function(e,t){e=Fs(e);var n=this;return n.__filtered__&&(e>0||t<0)?new yr(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==a&&(n=(t=Fs(t))<0?n.dropRight(-t):n.take(t-e)),n)},yr.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},yr.prototype.toArray=function(){return this.take(L)},$r(yr.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=hr[r?"take"+("last"==t?"Right":""):t],o=r||/^find/.test(t);i&&(hr.prototype[t]=function(){var t=this.__wrapped__,s=r?[1]:arguments,u=t instanceof yr,l=s[0],c=u||ys(t),f=function(e){var t=i.apply(hr,en([e],s));return r&&d?t[0]:t};c&&n&&"function"==typeof l&&1!=l.length&&(u=c=!1);var d=this.__chain__,h=!!this.__actions__.length,p=o&&!d,v=u&&!h;if(!o&&c){t=v?t:new yr(this);var g=e.apply(t,s);return g.__actions__.push({func:qo,args:[f],thisArg:a}),new gr(g,d)}return p&&v?e.apply(this,s):(g=this.thru(f),p?r?g.value()[0]:g.value():g)})}),$t(["pop","push","shift","sort","splice","unshift"],function(e){var t=at[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);hr.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(ys(i)?i:[],e)}return this[n](function(n){return t.apply(ys(n)?n:[],e)})}}),$r(yr.prototype,function(e,t){var n=hr[t];if(n){var r=n.name+"";(ir[r]||(ir[r]=[])).push({name:t,func:n})}}),ir[ha(a,m).name]=[{name:"wrapper",func:a}],yr.prototype.clone=function(){var e=new yr(this.__wrapped__);return e.__actions__=na(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=na(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=na(this.__views__),e},yr.prototype.reverse=function(){if(this.__filtered__){var e=new yr(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},yr.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=ys(e),r=t<0,i=n?e.length:0,a=function(e,t,n){for(var r=-1,i=n.length;++r=this.__values__.length;return{done:e,value:e?a:this.__values__[this.__index__++]}},hr.prototype.plant=function(e){for(var t,n=this;n instanceof vr;){var r=fo(n);r.__index__=0,r.__values__=a,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},hr.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof yr){var t=e;return this.__actions__.length&&(t=new yr(this)),(t=t.reverse()).__actions__.push({func:qo,args:[So],thisArg:a}),new gr(t,this.__chain__)}return this.thru(So)},hr.prototype.toJSON=hr.prototype.valueOf=hr.prototype.value=function(){return Fi(this.__wrapped__,this.__actions__)},hr.prototype.first=hr.prototype.head,Rt&&(hr.prototype[Rt]=function(){return this}),hr}();zt._=Nn,(i=function(){return Nn}.call(t,n,t,r))===a||(r.exports=i)}).call(this)}).call(this,n(0),n(17)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}}]); \ No newline at end of file + */(function(){var a,o=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",u="Expected a function",l="__lodash_hash_undefined__",c=500,f="__lodash_placeholder__",d=1,h=2,p=4,v=1,g=2,y=1,m=2,b=4,x=8,w=16,_=32,E=64,P=128,C=256,T=512,S=30,k="...",D=800,I=16,M=1,O=2,z=1/0,N=9007199254740991,A=1.7976931348623157e308,B=NaN,L=4294967295,R=L-1,j=L>>>1,q=[["ary",P],["bind",y],["bindKey",m],["curry",x],["curryRight",w],["flip",T],["partial",_],["partialRight",E],["rearg",C]],F="[object Arguments]",V="[object Array]",X="[object AsyncFunction]",Y="[object Boolean]",W="[object Date]",Z="[object DOMException]",U="[object Error]",$="[object Function]",H="[object GeneratorFunction]",G="[object Map]",Q="[object Number]",K="[object Null]",J="[object Object]",ee="[object Proxy]",te="[object RegExp]",ne="[object Set]",re="[object String]",ie="[object Symbol]",ae="[object Undefined]",oe="[object WeakMap]",se="[object WeakSet]",ue="[object ArrayBuffer]",le="[object DataView]",ce="[object Float32Array]",fe="[object Float64Array]",de="[object Int8Array]",he="[object Int16Array]",pe="[object Int32Array]",ve="[object Uint8Array]",ge="[object Uint8ClampedArray]",ye="[object Uint16Array]",me="[object Uint32Array]",be=/\b__p \+= '';/g,xe=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,_e=/&(?:amp|lt|gt|quot|#39);/g,Ee=/[&<>"']/g,Pe=RegExp(_e.source),Ce=RegExp(Ee.source),Te=/<%-([\s\S]+?)%>/g,Se=/<%([\s\S]+?)%>/g,ke=/<%=([\s\S]+?)%>/g,De=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ie=/^\w*$/,Me=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Oe=/[\\^$.*+?()[\]{}|]/g,ze=RegExp(Oe.source),Ne=/^\s+|\s+$/g,Ae=/^\s+/,Be=/\s+$/,Le=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Re=/\{\n\/\* \[wrapped with (.+)\] \*/,je=/,? & /,qe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Fe=/\\(\\)?/g,Ve=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Xe=/\w*$/,Ye=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,Ze=/^\[object .+?Constructor\]$/,Ue=/^0o[0-7]+$/i,$e=/^(?:0|[1-9]\d*)$/,He=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ge=/($^)/,Qe=/['\n\r\u2028\u2029\\]/g,Ke="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Je="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",et="[\\ud800-\\udfff]",tt="["+Je+"]",nt="["+Ke+"]",rt="\\d+",it="[\\u2700-\\u27bf]",at="[a-z\\xdf-\\xf6\\xf8-\\xff]",ot="[^\\ud800-\\udfff"+Je+rt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",st="\\ud83c[\\udffb-\\udfff]",ut="[^\\ud800-\\udfff]",lt="(?:\\ud83c[\\udde6-\\uddff]){2}",ct="[\\ud800-\\udbff][\\udc00-\\udfff]",ft="[A-Z\\xc0-\\xd6\\xd8-\\xde]",dt="(?:"+at+"|"+ot+")",ht="(?:"+ft+"|"+ot+")",pt="(?:"+nt+"|"+st+")"+"?",vt="[\\ufe0e\\ufe0f]?"+pt+("(?:\\u200d(?:"+[ut,lt,ct].join("|")+")[\\ufe0e\\ufe0f]?"+pt+")*"),gt="(?:"+[it,lt,ct].join("|")+")"+vt,yt="(?:"+[ut+nt+"?",nt,lt,ct,et].join("|")+")",mt=RegExp("['’]","g"),bt=RegExp(nt,"g"),xt=RegExp(st+"(?="+st+")|"+yt+vt,"g"),wt=RegExp([ft+"?"+at+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tt,ft,"$"].join("|")+")",ht+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tt,ft+dt,"$"].join("|")+")",ft+"?"+dt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ft+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",rt,gt].join("|"),"g"),_t=RegExp("[\\u200d\\ud800-\\udfff"+Ke+"\\ufe0e\\ufe0f]"),Et=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ct=-1,Tt={};Tt[ce]=Tt[fe]=Tt[de]=Tt[he]=Tt[pe]=Tt[ve]=Tt[ge]=Tt[ye]=Tt[me]=!0,Tt[F]=Tt[V]=Tt[ue]=Tt[Y]=Tt[le]=Tt[W]=Tt[U]=Tt[$]=Tt[G]=Tt[Q]=Tt[J]=Tt[te]=Tt[ne]=Tt[re]=Tt[oe]=!1;var St={};St[F]=St[V]=St[ue]=St[le]=St[Y]=St[W]=St[ce]=St[fe]=St[de]=St[he]=St[pe]=St[G]=St[Q]=St[J]=St[te]=St[ne]=St[re]=St[ie]=St[ve]=St[ge]=St[ye]=St[me]=!0,St[U]=St[$]=St[oe]=!1;var kt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Dt=parseFloat,It=parseInt,Mt="object"==typeof e&&e&&e.Object===Object&&e,Ot="object"==typeof self&&self&&self.Object===Object&&self,zt=Mt||Ot||Function("return this")(),Nt=t&&!t.nodeType&&t,At=Nt&&"object"==typeof r&&r&&!r.nodeType&&r,Bt=At&&At.exports===Nt,Lt=Bt&&Mt.process,Rt=function(){try{var e=At&&At.require&&At.require("util").types;return e||Lt&&Lt.binding&&Lt.binding("util")}catch(e){}}(),jt=Rt&&Rt.isArrayBuffer,qt=Rt&&Rt.isDate,Ft=Rt&&Rt.isMap,Vt=Rt&&Rt.isRegExp,Xt=Rt&&Rt.isSet,Yt=Rt&&Rt.isTypedArray;function Wt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Zt(e,t,n,r){for(var i=-1,a=null==e?0:e.length;++i-1}function Kt(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function wn(e,t){for(var n=e.length;n--&&un(t,e[n],0)>-1;);return n}var _n=hn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),En=hn({"&":"&","<":"<",">":">",'"':""","'":"'"});function Pn(e){return"\\"+kt[e]}function Cn(e){return _t.test(e)}function Tn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function Sn(e,t){return function(n){return e(t(n))}}function kn(e,t){for(var n=-1,r=e.length,i=0,a=[];++n",""":'"',"'":"'"});var Nn=function e(t){var n,r=(t=null==t?zt:Nn.defaults(zt.Object(),t,Nn.pick(zt,Pt))).Array,i=t.Date,Ke=t.Error,Je=t.Function,et=t.Math,tt=t.Object,nt=t.RegExp,rt=t.String,it=t.TypeError,at=r.prototype,ot=Je.prototype,st=tt.prototype,ut=t["__core-js_shared__"],lt=ot.toString,ct=st.hasOwnProperty,ft=0,dt=(n=/[^.]+$/.exec(ut&&ut.keys&&ut.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ht=st.toString,pt=lt.call(tt),vt=zt._,gt=nt("^"+lt.call(ct).replace(Oe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),yt=Bt?t.Buffer:a,xt=t.Symbol,_t=t.Uint8Array,kt=yt?yt.allocUnsafe:a,Mt=Sn(tt.getPrototypeOf,tt),Ot=tt.create,Nt=st.propertyIsEnumerable,At=at.splice,Lt=xt?xt.isConcatSpreadable:a,Rt=xt?xt.iterator:a,an=xt?xt.toStringTag:a,hn=function(){try{var e=Ra(tt,"defineProperty");return e({},"",{}),e}catch(e){}}(),An=t.clearTimeout!==zt.clearTimeout&&t.clearTimeout,Bn=i&&i.now!==zt.Date.now&&i.now,Ln=t.setTimeout!==zt.setTimeout&&t.setTimeout,Rn=et.ceil,jn=et.floor,qn=tt.getOwnPropertySymbols,Fn=yt?yt.isBuffer:a,Vn=t.isFinite,Xn=at.join,Yn=Sn(tt.keys,tt),Wn=et.max,Zn=et.min,Un=i.now,$n=t.parseInt,Hn=et.random,Gn=at.reverse,Qn=Ra(t,"DataView"),Kn=Ra(t,"Map"),Jn=Ra(t,"Promise"),er=Ra(t,"Set"),tr=Ra(t,"WeakMap"),nr=Ra(tt,"create"),rr=tr&&new tr,ir={},ar=co(Qn),or=co(Kn),sr=co(Jn),ur=co(er),lr=co(tr),cr=xt?xt.prototype:a,fr=cr?cr.valueOf:a,dr=cr?cr.toString:a;function hr(e){if(ks(e)&&!ys(e)&&!(e instanceof yr)){if(e instanceof gr)return e;if(ct.call(e,"__wrapped__"))return fo(e)}return new gr(e)}var pr=function(){function e(){}return function(t){if(!Ss(t))return{};if(Ot)return Ot(t);e.prototype=t;var n=new e;return e.prototype=a,n}}();function vr(){}function gr(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=a}function yr(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=L,this.__views__=[]}function mr(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Ar(e,t,n,r,i,o){var s,u=t&d,l=t&h,c=t&p;if(n&&(s=i?n(e,r,i,o):n(e)),s!==a)return s;if(!Ss(e))return e;var f=ys(e);if(f){if(s=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&ct.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!u)return na(e,s)}else{var v=Fa(e),g=v==$||v==H;if(ws(e))return Gi(e,u);if(v==J||v==F||g&&!i){if(s=l||g?{}:Xa(e),!u)return l?function(e,t){return ra(e,qa(e),t)}(e,function(e,t){return e&&ra(t,au(t),e)}(s,e)):function(e,t){return ra(e,ja(e),t)}(e,Mr(s,e))}else{if(!St[v])return i?e:{};s=function(e,t,n){var r,i,a,o=e.constructor;switch(t){case ue:return Qi(e);case Y:case W:return new o(+e);case le:return function(e,t){var n=t?Qi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case ce:case fe:case de:case he:case pe:case ve:case ge:case ye:case me:return Ki(e,n);case G:return new o;case Q:case re:return new o(e);case te:return(a=new(i=e).constructor(i.source,Xe.exec(i))).lastIndex=i.lastIndex,a;case ne:return new o;case ie:return r=e,fr?tt(fr.call(r)):{}}}(e,v,u)}}o||(o=new _r);var y=o.get(e);if(y)return y;if(o.set(e,s),zs(e))return e.forEach(function(r){s.add(Ar(r,t,n,r,e,o))}),s;if(Ds(e))return e.forEach(function(r,i){s.set(i,Ar(r,t,n,i,e,o))}),s;var m=f?a:(c?l?Ma:Ia:l?au:iu)(e);return Ut(m||e,function(r,i){m&&(r=e[i=r]),kr(s,i,Ar(r,t,n,i,e,o))}),s}function Br(e,t,n){var r=n.length;if(null==e)return!r;for(e=tt(e);r--;){var i=n[r],o=t[i],s=e[i];if(s===a&&!(i in e)||!o(s))return!1}return!0}function Lr(e,t,n){if("function"!=typeof e)throw new it(u);return ro(function(){e.apply(a,n)},t)}function Rr(e,t,n,r){var i=-1,a=Qt,s=!0,u=e.length,l=[],c=t.length;if(!u)return l;n&&(t=Jt(t,yn(n))),r?(a=Kt,s=!1):t.length>=o&&(a=bn,s=!1,t=new wr(t));e:for(;++i-1},br.prototype.set=function(e,t){var n=this.__data__,r=Dr(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},xr.prototype.clear=function(){this.size=0,this.__data__={hash:new mr,map:new(Kn||br),string:new mr}},xr.prototype.delete=function(e){var t=Ba(this,e).delete(e);return this.size-=t?1:0,t},xr.prototype.get=function(e){return Ba(this,e).get(e)},xr.prototype.has=function(e){return Ba(this,e).has(e)},xr.prototype.set=function(e,t){var n=Ba(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},wr.prototype.add=wr.prototype.push=function(e){return this.__data__.set(e,l),this},wr.prototype.has=function(e){return this.__data__.has(e)},_r.prototype.clear=function(){this.__data__=new br,this.size=0},_r.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},_r.prototype.get=function(e){return this.__data__.get(e)},_r.prototype.has=function(e){return this.__data__.has(e)},_r.prototype.set=function(e,t){var n=this.__data__;if(n instanceof br){var r=n.__data__;if(!Kn||r.length0&&n(s)?t>1?Yr(s,t-1,n,r,i):en(i,s):r||(i[i.length]=s)}return i}var Wr=sa(),Zr=sa(!0);function Ur(e,t){return e&&Wr(e,t,iu)}function $r(e,t){return e&&Zr(e,t,iu)}function Hr(e,t){return Gt(t,function(t){return Ps(e[t])})}function Gr(e,t){for(var n=0,r=(t=Zi(t,e)).length;null!=e&&nt}function ei(e,t){return null!=e&&ct.call(e,t)}function ti(e,t){return null!=e&&t in tt(e)}function ni(e,t,n){for(var i=n?Kt:Qt,o=e[0].length,s=e.length,u=s,l=r(s),c=1/0,f=[];u--;){var d=e[u];u&&t&&(d=Jt(d,yn(t))),c=Zn(d.length,c),l[u]=!n&&(t||o>=120&&d.length>=120)?new wr(u&&d):a}d=e[0];var h=-1,p=l[0];e:for(;++h=s)return u;var l=n[r];return u*("desc"==l?-1:1)}}return e.index-t.index}(e,t,n)})}function mi(e,t,n){for(var r=-1,i=t.length,a={};++r-1;)s!==e&&At.call(s,u,1),At.call(e,u,1);return e}function xi(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==a){var a=i;Wa(i)?At.call(e,i,1):Ri(e,i)}}return e}function wi(e,t){return e+jn(Hn()*(t-e+1))}function _i(e,t){var n="";if(!e||t<1||t>N)return n;do{t%2&&(n+=e),(t=jn(t/2))&&(e+=e)}while(t);return n}function Ei(e,t){return io(Ja(e,t,Iu),e+"")}function Pi(e){return Pr(hu(e))}function Ci(e,t){var n=hu(e);return so(n,Nr(t,0,n.length))}function Ti(e,t,n,r){if(!Ss(e))return e;for(var i=-1,o=(t=Zi(t,e)).length,s=o-1,u=e;null!=u&&++ia?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=r(a);++i>>1,o=e[a];null!==o&&!As(o)&&(n?o<=t:o=o){var c=t?null:_a(e);if(c)return Dn(c);s=!1,i=bn,l=new wr}else l=t?[]:u;e:for(;++r=r?e:Ii(e,t,n)}var Hi=An||function(e){return zt.clearTimeout(e)};function Gi(e,t){if(t)return e.slice();var n=e.length,r=kt?kt(n):new e.constructor(n);return e.copy(r),r}function Qi(e){var t=new e.constructor(e.byteLength);return new _t(t).set(new _t(e)),t}function Ki(e,t){var n=t?Qi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Ji(e,t){if(e!==t){var n=e!==a,r=null===e,i=e==e,o=As(e),s=t!==a,u=null===t,l=t==t,c=As(t);if(!u&&!c&&!o&&e>t||o&&s&&l&&!u&&!c||r&&s&&l||!n&&l||!i)return 1;if(!r&&!o&&!c&&e1?n[i-1]:a,s=i>2?n[2]:a;for(o=e.length>3&&"function"==typeof o?(i--,o):a,s&&Za(n[0],n[1],s)&&(o=i<3?a:o,i=1),t=tt(t);++r-1?i[o?t[s]:s]:a}}function da(e){return Da(function(t){var n=t.length,r=n,i=gr.prototype.thru;for(e&&t.reverse();r--;){var o=t[r];if("function"!=typeof o)throw new it(u);if(i&&!s&&"wrapper"==za(o))var s=new gr([],!0)}for(r=s?r:n;++r1&&x.reverse(),d&&cu))return!1;var c=o.get(e);if(c&&o.get(t))return c==t;var f=-1,d=!0,h=n&g?new wr:a;for(o.set(e,t),o.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Le,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return Ut(q,function(n){var r="_."+n[0];t&n[1]&&!Qt(e,r)&&e.push(r)}),e.sort()}(function(e){var t=e.match(Re);return t?t[1].split(je):[]}(r),n)))}function oo(e){var t=0,n=0;return function(){var r=Un(),i=I-(r-n);if(n=r,i>0){if(++t>=D)return arguments[0]}else t=0;return e.apply(a,arguments)}}function so(e,t){var n=-1,r=e.length,i=r-1;for(t=t===a?r:t;++n1?e[t-1]:a;return n="function"==typeof n?(e.pop(),n):a,Oo(e,n)});function jo(e){var t=hr(e);return t.__chain__=!0,t}function qo(e,t){return t(e)}var Fo=Da(function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return zr(t,e)};return!(t>1||this.__actions__.length)&&r instanceof yr&&Wa(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:qo,args:[i],thisArg:a}),new gr(r,this.__chain__).thru(function(e){return t&&!e.length&&e.push(a),e})):this.thru(i)});var Vo=ia(function(e,t,n){ct.call(e,n)?++e[n]:Or(e,n,1)});var Xo=fa(go),Yo=fa(yo);function Wo(e,t){return(ys(e)?Ut:jr)(e,Aa(t,3))}function Zo(e,t){return(ys(e)?$t:qr)(e,Aa(t,3))}var Uo=ia(function(e,t,n){ct.call(e,n)?e[n].push(t):Or(e,n,[t])});var $o=Ei(function(e,t,n){var i=-1,a="function"==typeof t,o=bs(e)?r(e.length):[];return jr(e,function(e){o[++i]=a?Wt(t,e,n):ri(e,t,n)}),o}),Ho=ia(function(e,t,n){Or(e,n,t)});function Go(e,t){return(ys(e)?Jt:di)(e,Aa(t,3))}var Qo=ia(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]});var Ko=Ei(function(e,t){if(null==e)return[];var n=t.length;return n>1&&Za(e,t[0],t[1])?t=[]:n>2&&Za(t[0],t[1],t[2])&&(t=[t[0]]),yi(e,Yr(t,1),[])}),Jo=Bn||function(){return zt.Date.now()};function es(e,t,n){return t=n?a:t,t=e&&null==t?e.length:t,Pa(e,P,a,a,a,a,t)}function ts(e,t){var n;if("function"!=typeof t)throw new it(u);return e=Fs(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=a),n}}var ns=Ei(function(e,t,n){var r=y;if(n.length){var i=kn(n,Na(ns));r|=_}return Pa(e,r,t,n,i)}),rs=Ei(function(e,t,n){var r=y|m;if(n.length){var i=kn(n,Na(rs));r|=_}return Pa(t,r,e,n,i)});function is(e,t,n){var r,i,o,s,l,c,f=0,d=!1,h=!1,p=!0;if("function"!=typeof e)throw new it(u);function v(t){var n=r,o=i;return r=i=a,f=t,s=e.apply(o,n)}function g(e){var n=e-c;return c===a||n>=t||n<0||h&&e-f>=o}function y(){var e=Jo();if(g(e))return m(e);l=ro(y,function(e){var n=t-(e-c);return h?Zn(n,o-(e-f)):n}(e))}function m(e){return l=a,p&&r?v(e):(r=i=a,s)}function b(){var e=Jo(),n=g(e);if(r=arguments,i=this,c=e,n){if(l===a)return function(e){return f=e,l=ro(y,t),d?v(e):s}(c);if(h)return l=ro(y,t),v(c)}return l===a&&(l=ro(y,t)),s}return t=Xs(t)||0,Ss(n)&&(d=!!n.leading,o=(h="maxWait"in n)?Wn(Xs(n.maxWait)||0,t):o,p="trailing"in n?!!n.trailing:p),b.cancel=function(){l!==a&&Hi(l),f=0,r=c=i=l=a},b.flush=function(){return l===a?s:m(Jo())},b}var as=Ei(function(e,t){return Lr(e,1,t)}),os=Ei(function(e,t,n){return Lr(e,Xs(t)||0,n)});function ss(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new it(u);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ss.Cache||xr),n}function us(e){if("function"!=typeof e)throw new it(u);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ss.Cache=xr;var ls=Ui(function(e,t){var n=(t=1==t.length&&ys(t[0])?Jt(t[0],yn(Aa())):Jt(Yr(t,1),yn(Aa()))).length;return Ei(function(r){for(var i=-1,a=Zn(r.length,n);++i=t}),gs=ii(function(){return arguments}())?ii:function(e){return ks(e)&&ct.call(e,"callee")&&!Nt.call(e,"callee")},ys=r.isArray,ms=jt?yn(jt):function(e){return ks(e)&&Kr(e)==ue};function bs(e){return null!=e&&Ts(e.length)&&!Ps(e)}function xs(e){return ks(e)&&bs(e)}var ws=Fn||Xu,_s=qt?yn(qt):function(e){return ks(e)&&Kr(e)==W};function Es(e){if(!ks(e))return!1;var t=Kr(e);return t==U||t==Z||"string"==typeof e.message&&"string"==typeof e.name&&!Ms(e)}function Ps(e){if(!Ss(e))return!1;var t=Kr(e);return t==$||t==H||t==X||t==ee}function Cs(e){return"number"==typeof e&&e==Fs(e)}function Ts(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=N}function Ss(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ks(e){return null!=e&&"object"==typeof e}var Ds=Ft?yn(Ft):function(e){return ks(e)&&Fa(e)==G};function Is(e){return"number"==typeof e||ks(e)&&Kr(e)==Q}function Ms(e){if(!ks(e)||Kr(e)!=J)return!1;var t=Mt(e);if(null===t)return!0;var n=ct.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&<.call(n)==pt}var Os=Vt?yn(Vt):function(e){return ks(e)&&Kr(e)==te};var zs=Xt?yn(Xt):function(e){return ks(e)&&Fa(e)==ne};function Ns(e){return"string"==typeof e||!ys(e)&&ks(e)&&Kr(e)==re}function As(e){return"symbol"==typeof e||ks(e)&&Kr(e)==ie}var Bs=Yt?yn(Yt):function(e){return ks(e)&&Ts(e.length)&&!!Tt[Kr(e)]};var Ls=ba(fi),Rs=ba(function(e,t){return e<=t});function js(e){if(!e)return[];if(bs(e))return Ns(e)?On(e):na(e);if(Rt&&e[Rt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Rt]());var t=Fa(e);return(t==G?Tn:t==ne?Dn:hu)(e)}function qs(e){return e?(e=Xs(e))===z||e===-z?(e<0?-1:1)*A:e==e?e:0:0===e?e:0}function Fs(e){var t=qs(e),n=t%1;return t==t?n?t-n:t:0}function Vs(e){return e?Nr(Fs(e),0,L):0}function Xs(e){if("number"==typeof e)return e;if(As(e))return B;if(Ss(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ss(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Ne,"");var n=We.test(e);return n||Ue.test(e)?It(e.slice(2),n?2:8):Ye.test(e)?B:+e}function Ys(e){return ra(e,au(e))}function Ws(e){return null==e?"":Bi(e)}var Zs=aa(function(e,t){if(Ga(t)||bs(t))ra(t,iu(t),e);else for(var n in t)ct.call(t,n)&&kr(e,n,t[n])}),Us=aa(function(e,t){ra(t,au(t),e)}),$s=aa(function(e,t,n,r){ra(t,au(t),e,r)}),Hs=aa(function(e,t,n,r){ra(t,iu(t),e,r)}),Gs=Da(zr);var Qs=Ei(function(e,t){e=tt(e);var n=-1,r=t.length,i=r>2?t[2]:a;for(i&&Za(t[0],t[1],i)&&(r=1);++n1),t}),ra(e,Ma(e),n),r&&(n=Ar(n,d|h|p,Sa));for(var i=t.length;i--;)Ri(n,t[i]);return n});var lu=Da(function(e,t){return null==e?{}:function(e,t){return mi(e,t,function(t,n){return eu(e,n)})}(e,t)});function cu(e,t){if(null==e)return{};var n=Jt(Ma(e),function(e){return[e]});return t=Aa(t),mi(e,n,function(e,n){return t(e,n[0])})}var fu=Ea(iu),du=Ea(au);function hu(e){return null==e?[]:mn(e,iu(e))}var pu=la(function(e,t,n){return t=t.toLowerCase(),e+(n?vu(t):t)});function vu(e){return Eu(Ws(e).toLowerCase())}function gu(e){return(e=Ws(e))&&e.replace(He,_n).replace(bt,"")}var yu=la(function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}),mu=la(function(e,t,n){return e+(n?" ":"")+t.toLowerCase()}),bu=ua("toLowerCase");var xu=la(function(e,t,n){return e+(n?"_":"")+t.toLowerCase()});var wu=la(function(e,t,n){return e+(n?" ":"")+Eu(t)});var _u=la(function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}),Eu=ua("toUpperCase");function Pu(e,t,n){return e=Ws(e),(t=n?a:t)===a?function(e){return Et.test(e)}(e)?function(e){return e.match(wt)||[]}(e):function(e){return e.match(qe)||[]}(e):e.match(t)||[]}var Cu=Ei(function(e,t){try{return Wt(e,a,t)}catch(e){return Es(e)?e:new Ke(e)}}),Tu=Da(function(e,t){return Ut(t,function(t){t=lo(t),Or(e,t,ns(e[t],e))}),e});function Su(e){return function(){return e}}var ku=da(),Du=da(!0);function Iu(e){return e}function Mu(e){return ui("function"==typeof e?e:Ar(e,d))}var Ou=Ei(function(e,t){return function(n){return ri(n,e,t)}}),zu=Ei(function(e,t){return function(n){return ri(e,n,t)}});function Nu(e,t,n){var r=iu(t),i=Hr(t,r);null!=n||Ss(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=Hr(t,iu(t)));var a=!(Ss(n)&&"chain"in n&&!n.chain),o=Ps(e);return Ut(i,function(n){var r=t[n];e[n]=r,o&&(e.prototype[n]=function(){var t=this.__chain__;if(a||t){var n=e(this.__wrapped__);return(n.__actions__=na(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,en([this.value()],arguments))})}),e}function Au(){}var Bu=ga(Jt),Lu=ga(Ht),Ru=ga(rn);function ju(e){return Ua(e)?dn(lo(e)):function(e){return function(t){return Gr(t,e)}}(e)}var qu=ma(),Fu=ma(!0);function Vu(){return[]}function Xu(){return!1}var Yu=va(function(e,t){return e+t},0),Wu=wa("ceil"),Zu=va(function(e,t){return e/t},1),Uu=wa("floor");var $u,Hu=va(function(e,t){return e*t},1),Gu=wa("round"),Qu=va(function(e,t){return e-t},0);return hr.after=function(e,t){if("function"!=typeof t)throw new it(u);return e=Fs(e),function(){if(--e<1)return t.apply(this,arguments)}},hr.ary=es,hr.assign=Zs,hr.assignIn=Us,hr.assignInWith=$s,hr.assignWith=Hs,hr.at=Gs,hr.before=ts,hr.bind=ns,hr.bindAll=Tu,hr.bindKey=rs,hr.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return ys(e)?e:[e]},hr.chain=jo,hr.chunk=function(e,t,n){t=(n?Za(e,t,n):t===a)?1:Wn(Fs(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,s=0,u=r(Rn(i/t));oi?0:i+n),(r=r===a||r>i?i:Fs(r))<0&&(r+=i),r=n>r?0:Vs(r);n>>0)?(e=Ws(e))&&("string"==typeof t||null!=t&&!Os(t))&&!(t=Bi(t))&&Cn(e)?$i(On(e),0,n):e.split(t,n):[]},hr.spread=function(e,t){if("function"!=typeof e)throw new it(u);return t=null==t?0:Wn(Fs(t),0),Ei(function(n){var r=n[t],i=$i(n,0,t);return r&&en(i,r),Wt(e,this,i)})},hr.tail=function(e){var t=null==e?0:e.length;return t?Ii(e,1,t):[]},hr.take=function(e,t,n){return e&&e.length?Ii(e,0,(t=n||t===a?1:Fs(t))<0?0:t):[]},hr.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Ii(e,(t=r-(t=n||t===a?1:Fs(t)))<0?0:t,r):[]},hr.takeRightWhile=function(e,t){return e&&e.length?qi(e,Aa(t,3),!1,!0):[]},hr.takeWhile=function(e,t){return e&&e.length?qi(e,Aa(t,3)):[]},hr.tap=function(e,t){return t(e),e},hr.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new it(u);return Ss(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),is(e,t,{leading:r,maxWait:t,trailing:i})},hr.thru=qo,hr.toArray=js,hr.toPairs=fu,hr.toPairsIn=du,hr.toPath=function(e){return ys(e)?Jt(e,lo):As(e)?[e]:na(uo(Ws(e)))},hr.toPlainObject=Ys,hr.transform=function(e,t,n){var r=ys(e),i=r||ws(e)||Bs(e);if(t=Aa(t,4),null==n){var a=e&&e.constructor;n=i?r?new a:[]:Ss(e)&&Ps(a)?pr(Mt(e)):{}}return(i?Ut:Ur)(e,function(e,r,i){return t(n,e,r,i)}),n},hr.unary=function(e){return es(e,1)},hr.union=ko,hr.unionBy=Do,hr.unionWith=Io,hr.uniq=function(e){return e&&e.length?Li(e):[]},hr.uniqBy=function(e,t){return e&&e.length?Li(e,Aa(t,2)):[]},hr.uniqWith=function(e,t){return t="function"==typeof t?t:a,e&&e.length?Li(e,a,t):[]},hr.unset=function(e,t){return null==e||Ri(e,t)},hr.unzip=Mo,hr.unzipWith=Oo,hr.update=function(e,t,n){return null==e?e:ji(e,t,Wi(n))},hr.updateWith=function(e,t,n,r){return r="function"==typeof r?r:a,null==e?e:ji(e,t,Wi(n),r)},hr.values=hu,hr.valuesIn=function(e){return null==e?[]:mn(e,au(e))},hr.without=zo,hr.words=Pu,hr.wrap=function(e,t){return cs(Wi(t),e)},hr.xor=No,hr.xorBy=Ao,hr.xorWith=Bo,hr.zip=Lo,hr.zipObject=function(e,t){return Xi(e||[],t||[],kr)},hr.zipObjectDeep=function(e,t){return Xi(e||[],t||[],Ti)},hr.zipWith=Ro,hr.entries=fu,hr.entriesIn=du,hr.extend=Us,hr.extendWith=$s,Nu(hr,hr),hr.add=Yu,hr.attempt=Cu,hr.camelCase=pu,hr.capitalize=vu,hr.ceil=Wu,hr.clamp=function(e,t,n){return n===a&&(n=t,t=a),n!==a&&(n=(n=Xs(n))==n?n:0),t!==a&&(t=(t=Xs(t))==t?t:0),Nr(Xs(e),t,n)},hr.clone=function(e){return Ar(e,p)},hr.cloneDeep=function(e){return Ar(e,d|p)},hr.cloneDeepWith=function(e,t){return Ar(e,d|p,t="function"==typeof t?t:a)},hr.cloneWith=function(e,t){return Ar(e,p,t="function"==typeof t?t:a)},hr.conformsTo=function(e,t){return null==t||Br(e,t,iu(t))},hr.deburr=gu,hr.defaultTo=function(e,t){return null==e||e!=e?t:e},hr.divide=Zu,hr.endsWith=function(e,t,n){e=Ws(e),t=Bi(t);var r=e.length,i=n=n===a?r:Nr(Fs(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},hr.eq=hs,hr.escape=function(e){return(e=Ws(e))&&Ce.test(e)?e.replace(Ee,En):e},hr.escapeRegExp=function(e){return(e=Ws(e))&&ze.test(e)?e.replace(Oe,"\\$&"):e},hr.every=function(e,t,n){var r=ys(e)?Ht:Fr;return n&&Za(e,t,n)&&(t=a),r(e,Aa(t,3))},hr.find=Xo,hr.findIndex=go,hr.findKey=function(e,t){return on(e,Aa(t,3),Ur)},hr.findLast=Yo,hr.findLastIndex=yo,hr.findLastKey=function(e,t){return on(e,Aa(t,3),$r)},hr.floor=Uu,hr.forEach=Wo,hr.forEachRight=Zo,hr.forIn=function(e,t){return null==e?e:Wr(e,Aa(t,3),au)},hr.forInRight=function(e,t){return null==e?e:Zr(e,Aa(t,3),au)},hr.forOwn=function(e,t){return e&&Ur(e,Aa(t,3))},hr.forOwnRight=function(e,t){return e&&$r(e,Aa(t,3))},hr.get=Js,hr.gt=ps,hr.gte=vs,hr.has=function(e,t){return null!=e&&Va(e,t,ei)},hr.hasIn=eu,hr.head=bo,hr.identity=Iu,hr.includes=function(e,t,n,r){e=bs(e)?e:hu(e),n=n&&!r?Fs(n):0;var i=e.length;return n<0&&(n=Wn(i+n,0)),Ns(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&un(e,t,n)>-1},hr.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:Fs(n);return i<0&&(i=Wn(r+i,0)),un(e,t,i)},hr.inRange=function(e,t,n){return t=qs(t),n===a?(n=t,t=0):n=qs(n),function(e,t,n){return e>=Zn(t,n)&&e=-N&&e<=N},hr.isSet=zs,hr.isString=Ns,hr.isSymbol=As,hr.isTypedArray=Bs,hr.isUndefined=function(e){return e===a},hr.isWeakMap=function(e){return ks(e)&&Fa(e)==oe},hr.isWeakSet=function(e){return ks(e)&&Kr(e)==se},hr.join=function(e,t){return null==e?"":Xn.call(e,t)},hr.kebabCase=yu,hr.last=Eo,hr.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return n!==a&&(i=(i=Fs(n))<0?Wn(r+i,0):Zn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):sn(e,cn,i,!0)},hr.lowerCase=mu,hr.lowerFirst=bu,hr.lt=Ls,hr.lte=Rs,hr.max=function(e){return e&&e.length?Vr(e,Iu,Jr):a},hr.maxBy=function(e,t){return e&&e.length?Vr(e,Aa(t,2),Jr):a},hr.mean=function(e){return fn(e,Iu)},hr.meanBy=function(e,t){return fn(e,Aa(t,2))},hr.min=function(e){return e&&e.length?Vr(e,Iu,fi):a},hr.minBy=function(e,t){return e&&e.length?Vr(e,Aa(t,2),fi):a},hr.stubArray=Vu,hr.stubFalse=Xu,hr.stubObject=function(){return{}},hr.stubString=function(){return""},hr.stubTrue=function(){return!0},hr.multiply=Hu,hr.nth=function(e,t){return e&&e.length?gi(e,Fs(t)):a},hr.noConflict=function(){return zt._===this&&(zt._=vt),this},hr.noop=Au,hr.now=Jo,hr.pad=function(e,t,n){e=Ws(e);var r=(t=Fs(t))?Mn(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return ya(jn(i),n)+e+ya(Rn(i),n)},hr.padEnd=function(e,t,n){e=Ws(e);var r=(t=Fs(t))?Mn(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=Hn();return Zn(e+i*(t-e+Dt("1e-"+((i+"").length-1))),t)}return wi(e,t)},hr.reduce=function(e,t,n){var r=ys(e)?tn:pn,i=arguments.length<3;return r(e,Aa(t,4),n,i,jr)},hr.reduceRight=function(e,t,n){var r=ys(e)?nn:pn,i=arguments.length<3;return r(e,Aa(t,4),n,i,qr)},hr.repeat=function(e,t,n){return t=(n?Za(e,t,n):t===a)?1:Fs(t),_i(Ws(e),t)},hr.replace=function(){var e=arguments,t=Ws(e[0]);return e.length<3?t:t.replace(e[1],e[2])},hr.result=function(e,t,n){var r=-1,i=(t=Zi(t,e)).length;for(i||(i=1,e=a);++rN)return[];var n=L,r=Zn(e,L);t=Aa(t),e-=L;for(var i=gn(r,t);++n=o)return e;var u=n-Mn(r);if(u<1)return r;var l=s?$i(s,0,u).join(""):e.slice(0,u);if(i===a)return l+r;if(s&&(u+=l.length-u),Os(i)){if(e.slice(u).search(i)){var c,f=l;for(i.global||(i=nt(i.source,Ws(Xe.exec(i))+"g")),i.lastIndex=0;c=i.exec(f);)var d=c.index;l=l.slice(0,d===a?u:d)}}else if(e.indexOf(Bi(i),u)!=u){var h=l.lastIndexOf(i);h>-1&&(l=l.slice(0,h))}return l+r},hr.unescape=function(e){return(e=Ws(e))&&Pe.test(e)?e.replace(_e,zn):e},hr.uniqueId=function(e){var t=++ft;return Ws(e)+t},hr.upperCase=_u,hr.upperFirst=Eu,hr.each=Wo,hr.eachRight=Zo,hr.first=bo,Nu(hr,($u={},Ur(hr,function(e,t){ct.call(hr.prototype,t)||($u[t]=e)}),$u),{chain:!1}),hr.VERSION="4.17.11",Ut(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){hr[e].placeholder=hr}),Ut(["drop","take"],function(e,t){yr.prototype[e]=function(n){n=n===a?1:Wn(Fs(n),0);var r=this.__filtered__&&!t?new yr(this):this.clone();return r.__filtered__?r.__takeCount__=Zn(n,r.__takeCount__):r.__views__.push({size:Zn(n,L),type:e+(r.__dir__<0?"Right":"")}),r},yr.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}}),Ut(["filter","map","takeWhile"],function(e,t){var n=t+1,r=n==M||3==n;yr.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Aa(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}}),Ut(["head","last"],function(e,t){var n="take"+(t?"Right":"");yr.prototype[e]=function(){return this[n](1).value()[0]}}),Ut(["initial","tail"],function(e,t){var n="drop"+(t?"":"Right");yr.prototype[e]=function(){return this.__filtered__?new yr(this):this[n](1)}}),yr.prototype.compact=function(){return this.filter(Iu)},yr.prototype.find=function(e){return this.filter(e).head()},yr.prototype.findLast=function(e){return this.reverse().find(e)},yr.prototype.invokeMap=Ei(function(e,t){return"function"==typeof e?new yr(this):this.map(function(n){return ri(n,e,t)})}),yr.prototype.reject=function(e){return this.filter(us(Aa(e)))},yr.prototype.slice=function(e,t){e=Fs(e);var n=this;return n.__filtered__&&(e>0||t<0)?new yr(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==a&&(n=(t=Fs(t))<0?n.dropRight(-t):n.take(t-e)),n)},yr.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},yr.prototype.toArray=function(){return this.take(L)},Ur(yr.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=hr[r?"take"+("last"==t?"Right":""):t],o=r||/^find/.test(t);i&&(hr.prototype[t]=function(){var t=this.__wrapped__,s=r?[1]:arguments,u=t instanceof yr,l=s[0],c=u||ys(t),f=function(e){var t=i.apply(hr,en([e],s));return r&&d?t[0]:t};c&&n&&"function"==typeof l&&1!=l.length&&(u=c=!1);var d=this.__chain__,h=!!this.__actions__.length,p=o&&!d,v=u&&!h;if(!o&&c){t=v?t:new yr(this);var g=e.apply(t,s);return g.__actions__.push({func:qo,args:[f],thisArg:a}),new gr(g,d)}return p&&v?e.apply(this,s):(g=this.thru(f),p?r?g.value()[0]:g.value():g)})}),Ut(["pop","push","shift","sort","splice","unshift"],function(e){var t=at[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);hr.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(ys(i)?i:[],e)}return this[n](function(n){return t.apply(ys(n)?n:[],e)})}}),Ur(yr.prototype,function(e,t){var n=hr[t];if(n){var r=n.name+"";(ir[r]||(ir[r]=[])).push({name:t,func:n})}}),ir[ha(a,m).name]=[{name:"wrapper",func:a}],yr.prototype.clone=function(){var e=new yr(this.__wrapped__);return e.__actions__=na(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=na(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=na(this.__views__),e},yr.prototype.reverse=function(){if(this.__filtered__){var e=new yr(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},yr.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=ys(e),r=t<0,i=n?e.length:0,a=function(e,t,n){for(var r=-1,i=n.length;++r=this.__values__.length;return{done:e,value:e?a:this.__values__[this.__index__++]}},hr.prototype.plant=function(e){for(var t,n=this;n instanceof vr;){var r=fo(n);r.__index__=0,r.__values__=a,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},hr.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof yr){var t=e;return this.__actions__.length&&(t=new yr(this)),(t=t.reverse()).__actions__.push({func:qo,args:[So],thisArg:a}),new gr(t,this.__chain__)}return this.thru(So)},hr.prototype.toJSON=hr.prototype.valueOf=hr.prototype.value=function(){return Fi(this.__wrapped__,this.__actions__)},hr.prototype.first=hr.prototype.head,Rt&&(hr.prototype[Rt]=function(){return this}),hr}();zt._=Nn,(i=function(){return Nn}.call(t,n,t,r))===a||(r.exports=i)}).call(this)}).call(this,n(0),n(17)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}}]); \ No newline at end of file diff --git a/dash_cytoscape/dash_cytoscape_extra.dev.js b/dash_cytoscape/dash_cytoscape_extra.dev.js index 35686e51..da5a0594 100644 --- a/dash_cytoscape/dash_cytoscape_extra.dev.js +++ b/dash_cytoscape/dash_cytoscape_extra.dev.js @@ -5711,7 +5711,7 @@ eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactCytoscapejs = __webpack_require__(/*! react-cytoscapejs */ \"./node_modules/react-cytoscapejs/dist/react-cytoscape.js\");\n\nvar _reactCytoscapejs2 = _interopRequireDefault(_reactCytoscapejs);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\r\n * JavaScript Requirements: cytoscape\r\n * React.js requirements: react-cytoscapejs\r\n */\n\n\n/**\r\nA Component Library for Dash aimed at facilitating network visualization in\r\nPython, wrapped around [Cytoscape.js](http://js.cytoscape.org/).\r\n */\nvar Cytoscape = function (_Component) {\n _inherits(Cytoscape, _Component);\n\n function Cytoscape(props) {\n _classCallCheck(this, Cytoscape);\n\n var _this = _possibleConstructorReturn(this, (Cytoscape.__proto__ || Object.getPrototypeOf(Cytoscape)).call(this, props));\n\n _this.handleCy = _this.handleCy.bind(_this);\n _this._handleCyCalled = false;\n return _this;\n }\n\n _createClass(Cytoscape, [{\n key: 'generateNode',\n value: function generateNode(event) {\n var ele = event.target;\n\n var isParent = ele.isParent(),\n isChildless = ele.isChildless(),\n isChild = ele.isChild(),\n isOrphan = ele.isOrphan(),\n renderedPosition = ele.renderedPosition(),\n relativePosition = ele.relativePosition(),\n parent = ele.parent(),\n style = ele.style();\n\n // Trim down the element objects to only the data contained\n var edgesData = ele.connectedEdges().map(function (ele) {\n return ele.data();\n }),\n childrenData = ele.children().map(function (ele) {\n return ele.data();\n }),\n ancestorsData = ele.ancestors().map(function (ele) {\n return ele.data();\n }),\n descendantsData = ele.descendants().map(function (ele) {\n return ele.data();\n }),\n siblingsData = ele.siblings().map(function (ele) {\n return ele.data();\n });\n\n var timeStamp = event.timeStamp;\n\n var _ele$json = ele.json(),\n classes = _ele$json.classes,\n data = _ele$json.data,\n grabbable = _ele$json.grabbable,\n group = _ele$json.group,\n locked = _ele$json.locked,\n position = _ele$json.position,\n selected = _ele$json.selected,\n selectable = _ele$json.selectable;\n\n var parentData = void 0;\n if (parent) {\n parentData = parent.data();\n } else {\n parentData = null;\n }\n\n var nodeObject = {\n // Nodes attributes\n edgesData: edgesData,\n renderedPosition: renderedPosition,\n timeStamp: timeStamp,\n // From ele.json()\n classes: classes,\n data: data,\n grabbable: grabbable,\n group: group,\n locked: locked,\n position: position,\n selectable: selectable,\n selected: selected,\n // Compound Nodes additional attributes\n ancestorsData: ancestorsData,\n childrenData: childrenData,\n descendantsData: descendantsData,\n parentData: parentData,\n siblingsData: siblingsData,\n isParent: isParent,\n isChildless: isChildless,\n isChild: isChild,\n isOrphan: isOrphan,\n relativePosition: relativePosition,\n // Styling\n style: style\n };\n return nodeObject;\n }\n }, {\n key: 'generateEdge',\n value: function generateEdge(event) {\n var ele = event.target;\n\n var midpoint = ele.midpoint(),\n isLoop = ele.isLoop(),\n isSimple = ele.isSimple(),\n sourceData = ele.source().data(),\n sourceEndpoint = ele.sourceEndpoint(),\n style = ele.style(),\n targetData = ele.target().data(),\n targetEndpoint = ele.targetEndpoint();\n\n var timeStamp = event.timeStamp;\n\n var _ele$json2 = ele.json(),\n classes = _ele$json2.classes,\n data = _ele$json2.data,\n grabbable = _ele$json2.grabbable,\n group = _ele$json2.group,\n locked = _ele$json2.locked,\n selectable = _ele$json2.selectable,\n selected = _ele$json2.selected;\n\n var edgeObject = {\n // Edges attributes\n isLoop: isLoop,\n isSimple: isSimple,\n midpoint: midpoint,\n sourceData: sourceData,\n sourceEndpoint: sourceEndpoint,\n targetData: targetData,\n targetEndpoint: targetEndpoint,\n timeStamp: timeStamp,\n // From ele.json()\n classes: classes,\n data: data,\n grabbable: grabbable,\n group: group,\n locked: locked,\n selectable: selectable,\n selected: selected,\n // Styling\n style: style\n };\n\n return edgeObject;\n }\n }, {\n key: 'handleCy',\n value: function handleCy(cy) {\n var _this2 = this;\n\n // If the cy pointer has not been modified, and handleCy has already\n // been called before, than we don't run this function.\n if (cy === this._cy && this._handleCyCalled) {\n return;\n }\n this._cy = cy;\n window.cy = cy;\n this._handleCyCalled = true;\n\n cy.on('tap', 'node', function (event) {\n var nodeObject = _this2.generateNode(event);\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n tapNode: nodeObject,\n tapNodeData: nodeObject.data\n });\n }\n });\n\n cy.on('tap', 'edge', function (event) {\n var edgeObject = _this2.generateEdge(event);\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n tapEdge: edgeObject,\n tapEdgeData: edgeObject.data\n });\n }\n });\n\n cy.on('mouseover', 'node', function (event) {\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n mouseoverNodeData: event.target.data()\n });\n }\n });\n\n cy.on('mouseover', 'edge', function (event) {\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n mouseoverEdgeData: event.target.data()\n });\n }\n });\n\n // SELECTED DATA\n var SELECT_THRESHOLD = 100;\n\n var selectedNodes = cy.collection();\n var selectedEdges = cy.collection();\n\n var sendSelectedNodesData = _lodash2.default.debounce(function () {\n /*\r\n This function is repetitively called every time a node is selected\r\n or unselected, but keeps being debounced if it is called again\r\n within 100 ms (given by SELECT_THRESHOLD). Effectively, it only\r\n runs when all the nodes have been correctly selected/unselected and\r\n added/removed from the selectedNodes collection, and then updates\r\n the selectedNodeData prop.\r\n */\n var nodeData = selectedNodes.map(function (el) {\n return el.data();\n });\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n selectedNodeData: nodeData\n });\n }\n }, SELECT_THRESHOLD);\n\n var sendSelectedEdgesData = _lodash2.default.debounce(function () {\n var edgeData = selectedEdges.map(function (el) {\n return el.data();\n });\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n selectedEdgeData: edgeData\n });\n }\n }, SELECT_THRESHOLD);\n\n cy.on('select', 'node', function (event) {\n var ele = event.target;\n\n selectedNodes.merge(ele);\n sendSelectedNodesData();\n });\n\n cy.on('unselect', 'node', function (event) {\n var ele = event.target;\n\n selectedNodes.unmerge(ele);\n sendSelectedNodesData();\n });\n\n cy.on('select', 'edge', function (event) {\n var ele = event.target;\n\n selectedEdges.merge(ele);\n sendSelectedEdgesData();\n });\n\n cy.on('unselect', 'edge', function (event) {\n var ele = event.target;\n\n selectedEdges.unmerge(ele);\n sendSelectedEdgesData();\n });\n\n // Refresh Layout if needed\n var refreshLayout = _lodash2.default.debounce(function () {\n var _props = _this2.props,\n autoRefreshLayout = _props.autoRefreshLayout,\n layout = _props.layout;\n\n\n if (autoRefreshLayout) {\n cy.layout(layout).run();\n }\n }, SELECT_THRESHOLD);\n\n cy.on('add remove', function () {\n refreshLayout();\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n style = _props2.style,\n className = _props2.className,\n elements = _props2.elements,\n stylesheet = _props2.stylesheet,\n layout = _props2.layout,\n pan = _props2.pan,\n zoom = _props2.zoom,\n panningEnabled = _props2.panningEnabled,\n userPanningEnabled = _props2.userPanningEnabled,\n minZoom = _props2.minZoom,\n maxZoom = _props2.maxZoom,\n zoomingEnabled = _props2.zoomingEnabled,\n userZoomingEnabled = _props2.userZoomingEnabled,\n boxSelectionEnabled = _props2.boxSelectionEnabled,\n autoungrabify = _props2.autoungrabify,\n autolock = _props2.autolock,\n autounselectify = _props2.autounselectify;\n\n\n return _react2.default.createElement(_reactCytoscapejs2.default, {\n id: id,\n cy: this.handleCy,\n className: className,\n style: style,\n elements: elements,\n stylesheet: stylesheet,\n layout: layout,\n pan: pan,\n zoom: zoom,\n panningEnabled: panningEnabled,\n userPanningEnabled: userPanningEnabled,\n minZoom: minZoom,\n maxZoom: maxZoom,\n zoomingEnabled: zoomingEnabled,\n userZoomingEnabled: userZoomingEnabled,\n boxSelectionEnabled: boxSelectionEnabled,\n autoungrabify: autoungrabify,\n autolock: autolock,\n autounselectify: autounselectify\n });\n }\n }]);\n\n return Cytoscape;\n}(_react.Component);\n\nCytoscape.propTypes = {\n // HTML attribute props\n\n /**\r\n * The ID used to identify this component in Dash callbacks.\r\n */\n id: _propTypes2.default.string,\n\n /**\r\n * Sets the class name of the element (the value of an element's html\r\n * class attribute).\r\n */\n className: _propTypes2.default.string,\n\n /**\r\n * Add inline styles to the root element.\r\n */\n style: _propTypes2.default.object,\n\n // Dash specific props\n\n /**\r\n * Dash-assigned callback that should be called whenever any of the\r\n * properties change.\r\n */\n setProps: _propTypes2.default.func,\n\n // Common props\n\n /**\r\n * A list of dictionaries representing the elements of the networks.\r\n * 1. Each dictionary describes an element, and specifies its purpose.\r\n * - `group` (string): Either 'nodes' or 'edges'. If not given, it's automatically inferred.\r\n * - `data` (dictionary): Element specific data.\r\n * - `id` (string): Reference to the element, useful for selectors and edges. Randomly assigned if not given.\r\n * - `label` (string): Optional name for the element, useful when `data(label)` is given to a style's `content` or `label`. It is only a convention.\r\n * - `parent` (string): Only for nodes. Optional reference to another node. Needed to create compound nodes.\r\n * - `source` (string): Only for edges. The id of the source node, which is where the edge starts.\r\n * - `target` (string): Only for edges. The id of the target node, where the edge ends.\r\n * - `position` (dictionary): Only for nodes. The position of the node.\r\n * - `x` (number): The x-coordinate of the node.\r\n * - `y` (number): The y-coordinate of the node.\r\n * - `selected` (boolean): If the element is selected upon initialisation.\r\n * - `selectable` (boolean): If the element can be selected.\r\n * - `locked` (boolean): Only for nodes. If the position is immutable.\r\n * - `grabbable` (boolean): Only for nodes. If the node can be grabbed and moved by the user.\r\n * - `classes` (string): Space separated string of class names of the element. Those classes can be selected by a style selector.\r\n *\r\n * 2. The [official Cytoscape.js documentation](http://js.cytoscape.org/#notation/elements-json) offers an extensive overview and examples of element declaration.\r\n */\n elements: _propTypes2.default.arrayOf(_propTypes2.default.object),\n\n /**\r\n * A list of dictionaries representing the styles of the elements.\r\n * 1. Each dictionary requires the following keys:\r\n * - `selector` (string): Which elements you are styling. Generally, you select a group of elements (node, edges, both), a class (that you declare in the element dictionary), or an element by ID.\r\n * - `style` (dictionary): What aspects of the elements you want to modify. This could be the size or color of a node, the shape of an edge arrow, or many more.\r\n *\r\n * 2. Both [the selector string](http://js.cytoscape.org/#selectors) and\r\n * [the style dictionary](http://js.cytoscape.org/#style/node-body) are\r\n * exhaustively documented in the Cytoscape.js docs. Although methods such\r\n * as `cy.elements(...)` and `cy.filter(...)` are not available, the selector\r\n * string syntax stays the same.\r\n */\n stylesheet: _propTypes2.default.arrayOf(_propTypes2.default.object),\n\n /**\r\n * A dictionary specifying how to set the position of the elements in your\r\n * graph. The `'name'` key is required, and indicates which layout (algorithm) to\r\n * use.\r\n * 1. The layouts available by default are:\r\n * - `random`: Randomly assigns positions\r\n * - `preset`: Assigns position based on the `position` key in element dictionaries\r\n * - `circle`: Single-level circle, with optional radius\r\n * - `concentric`: Multi-level circle, with optional radius\r\n * - `grid`: Square grid, optionally with numbers of `rows` and `cols`\r\n * - `breadthfirst`: Tree structure built using BFS, with optional `roots`\r\n * - `cose`: Force-directed physics simulation\r\n *\r\n * 2. The following external layouts are also included:\r\n * - `cose-bilkent`: https://github.com/cytoscape/cytoscape.js-cose-bilkent\r\n * - `cola`: https://github.com/cytoscape/cytoscape.js-cola\r\n * - `euler`: https://github.com/cytoscape/cytoscape.js-dagre\r\n * - `spread`: https://github.com/cytoscape/cytoscape.js-spread\r\n * - `dagre`: https://github.com/cytoscape/cytoscape.js-dagre\r\n * - `klay`: https://github.com/cytoscape/cytoscape.js-klay\r\n *\r\n * 3. The keys accepted by `layout` vary depending on the algorithm, but some\r\n * keys are accepted by all layouts:\r\n * - `fit` (boolean): Whether to render the nodes in order to fit the canvas.\r\n * - `padding` (number): Padding around the sides of the canvas, if fit is enabled.\r\n * - `animate` (boolean): Whether to animate change in position when the layout changes.\r\n * - `animationDuration` (number): Duration of animation in milliseconds, if enabled.\r\n * - `boundingBox` (dictionary): How to constrain the layout in a specific area. Keys accepted are either `x1, y1, x2, y2` or `x1, y1, w, h`, all of which receive a pixel value.\r\n *\r\n * 4. The complete list of layouts and their accepted options are available\r\n * on the [Cytoscape.js docs](http://js.cytoscape.org/#layouts). For the\r\n * external layouts, the options are listed in the \"API\" section of the\r\n * README.\r\n * Note that certain keys are not supported in Dash since the value is a\r\n * JavaScript function or a callback. Please visit [this issue](https://github.com/plotly/dash-cytoscape/issues/25)\r\n * for more information.\r\n */\n layout: _propTypes2.default.object,\n\n // Viewport Manipulation\n\n /**\r\n * Dictionary indicating the initial panning position of the graph. The\r\n * following keys are accepted:\r\n * - `x` (number): The x-coordinate of the position.\r\n * - `y` (number): The y-coordinate of the position.\r\n */\n pan: _propTypes2.default.object,\n\n /**\r\n * The initial zoom level of the graph. You can set `minZoom` and\r\n * `maxZoom` to set restrictions on the zoom level.\r\n */\n zoom: _propTypes2.default.number,\n\n // Viewport Mutability and gesture Toggling\n /**\r\n * Whether panning the graph is enabled (i.e., the position of the graph is\r\n * mutable overall).\r\n */\n panningEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether user events (e.g. dragging the graph background) are allowed to\r\n * pan the graph.\r\n */\n userPanningEnabled: _propTypes2.default.bool,\n\n /**\r\n * A minimum bound on the zoom level of the graph. The viewport can not be\r\n * scaled smaller than this zoom level.\r\n */\n minZoom: _propTypes2.default.number,\n\n /**\r\n * A maximum bound on the zoom level of the graph. The viewport can not be\r\n * scaled larger than this zoom level.\r\n */\n maxZoom: _propTypes2.default.number,\n\n /**\r\n * Whether zooming the graph is enabled (i.e., the zoom level of the graph\r\n * is mutable overall).\r\n */\n zoomingEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether user events (e.g. dragging the graph background) are allowed\r\n * to pan the graph.\r\n */\n userZoomingEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether box selection (i.e. drag a box overlay around, and release it\r\n * to select) is enabled. If enabled, the user must taphold to pan the graph.\r\n */\n boxSelectionEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be ungrabified (not grabbable by user) by\r\n * default (if true, overrides individual node state).\r\n */\n autoungrabify: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be locked (not draggable at all) by default\r\n * (if true, overrides individual node state).\r\n */\n autolock: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be unselectified (immutable selection state) by\r\n * default (if true, overrides individual element state).\r\n */\n autounselectify: _propTypes2.default.bool,\n\n /**\r\n * Whether the layout should be refreshed when elements are added or removed.\r\n */\n autoRefreshLayout: _propTypes2.default.bool,\n\n // User Events Props\n\n /**\r\n * The complete node dictionary returned when you tap or click it.\r\n *\r\n * 1. Node-specific items:\r\n * - `edgesData` (dictionary)\r\n * - `renderedPosition` (dictionary)\r\n * - `timeStamp` (number)\r\n *\r\n * 2. General items (for all elements):\r\n * - `classes` (string)\r\n * - `data` (dictionary)\r\n * - `grabbable` (boolean)\r\n * - `group` (string)\r\n * - `locked` (boolean)\r\n * - `position` (dictionary)\r\n * - `selectable` (boolean)\r\n * - `selected` (boolean)\r\n * - `style` (dictionary)\r\n *\r\n * 3. Items for compound nodes:\r\n * - `ancestorsData` (dictionary)\r\n * - `childrenData` (dictionary)\r\n * - `descendantsData` (dictionary)\r\n * - `parentData` (dictionary)\r\n * - `siblingsData` (dictionary)\r\n * - `isParent` (boolean)\r\n * - `isChildless` (boolean)\r\n * - `isChild` (boolean)\r\n * - `isOrphan` (boolean)\r\n * - `relativePosition` (dictionary)\r\n */\n tapNode: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of a node returned when you tap or click it.\r\n */\n tapNodeData: _propTypes2.default.object,\n\n /**\r\n * The complete edge dictionary returned when you tap or click it.\r\n *\r\n * 1. Edge-specific items:\r\n * - `isLoop` (boolean)\r\n * - `isSimple` (boolean)\r\n * - `midpoint` (dictionary)\r\n * - `sourceData` (dictionary)\r\n * - `sourceEndpoint` (dictionary)\r\n * - `targetData` (dictionary)\r\n * - `targetEndpoint` (dictionary)\r\n * - `timeStamp` (number)\r\n *\r\n * 2. General items (for all elements):\r\n * - `classes` (string)\r\n * - `data` (dictionary)\r\n * - `grabbable` (boolean)\r\n * - `group` (string)\r\n * - `locked` (boolean)\r\n * - `selectable` (boolean)\r\n * - `selected` (boolean)\r\n * - `style` (dictionary)\r\n */\n tapEdge: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of an edge returned when you tap or click it.\r\n */\n tapEdgeData: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of a node returned when you hover over it.\r\n */\n mouseoverNodeData: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of an edge returned when you hover over it.\r\n */\n mouseoverEdgeData: _propTypes2.default.object,\n\n /**\r\n * The list of data dictionaries of all selected nodes (e.g. using\r\n * Shift+Click to select multiple nodes, or Shift+Drag to use box selection).\r\n */\n selectedNodeData: _propTypes2.default.array,\n\n /**\r\n * The list of data dictionaries of all selected edges (e.g. using\r\n * Shift+Click to select multiple nodes, or Shift+Drag to use box selection).\r\n */\n selectedEdgeData: _propTypes2.default.array\n};\n\nCytoscape.defaultProps = {\n style: { width: '600px', height: '600px' },\n layout: { name: 'random' },\n autoRefreshLayout: true\n};\n\nexports.default = Cytoscape;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kYXNoX2N5dG9zY2FwZS8uL3NyYy9saWIvY29tcG9uZW50cy9DeXRvc2NhcGUucmVhY3QuanM/NjQyYyJdLCJuYW1lcyI6WyJDeXRvc2NhcGUiLCJwcm9wcyIsImhhbmRsZUN5IiwiYmluZCIsIl9oYW5kbGVDeUNhbGxlZCIsImV2ZW50IiwiZWxlIiwidGFyZ2V0IiwiaXNQYXJlbnQiLCJpc0NoaWxkbGVzcyIsImlzQ2hpbGQiLCJpc09ycGhhbiIsInJlbmRlcmVkUG9zaXRpb24iLCJyZWxhdGl2ZVBvc2l0aW9uIiwicGFyZW50Iiwic3R5bGUiLCJlZGdlc0RhdGEiLCJjb25uZWN0ZWRFZGdlcyIsIm1hcCIsImRhdGEiLCJjaGlsZHJlbkRhdGEiLCJjaGlsZHJlbiIsImFuY2VzdG9yc0RhdGEiLCJhbmNlc3RvcnMiLCJkZXNjZW5kYW50c0RhdGEiLCJkZXNjZW5kYW50cyIsInNpYmxpbmdzRGF0YSIsInNpYmxpbmdzIiwidGltZVN0YW1wIiwianNvbiIsImNsYXNzZXMiLCJncmFiYmFibGUiLCJncm91cCIsImxvY2tlZCIsInBvc2l0aW9uIiwic2VsZWN0ZWQiLCJzZWxlY3RhYmxlIiwicGFyZW50RGF0YSIsIm5vZGVPYmplY3QiLCJtaWRwb2ludCIsImlzTG9vcCIsImlzU2ltcGxlIiwic291cmNlRGF0YSIsInNvdXJjZSIsInNvdXJjZUVuZHBvaW50IiwidGFyZ2V0RGF0YSIsInRhcmdldEVuZHBvaW50IiwiZWRnZU9iamVjdCIsImN5IiwiX2N5Iiwid2luZG93Iiwib24iLCJnZW5lcmF0ZU5vZGUiLCJzZXRQcm9wcyIsInRhcE5vZGUiLCJ0YXBOb2RlRGF0YSIsImdlbmVyYXRlRWRnZSIsInRhcEVkZ2UiLCJ0YXBFZGdlRGF0YSIsIm1vdXNlb3Zlck5vZGVEYXRhIiwibW91c2VvdmVyRWRnZURhdGEiLCJTRUxFQ1RfVEhSRVNIT0xEIiwic2VsZWN0ZWROb2RlcyIsImNvbGxlY3Rpb24iLCJzZWxlY3RlZEVkZ2VzIiwic2VuZFNlbGVjdGVkTm9kZXNEYXRhIiwiXyIsImRlYm91bmNlIiwibm9kZURhdGEiLCJlbCIsInNlbGVjdGVkTm9kZURhdGEiLCJzZW5kU2VsZWN0ZWRFZGdlc0RhdGEiLCJlZGdlRGF0YSIsInNlbGVjdGVkRWRnZURhdGEiLCJtZXJnZSIsInVubWVyZ2UiLCJyZWZyZXNoTGF5b3V0IiwiYXV0b1JlZnJlc2hMYXlvdXQiLCJsYXlvdXQiLCJydW4iLCJpZCIsImNsYXNzTmFtZSIsImVsZW1lbnRzIiwic3R5bGVzaGVldCIsInBhbiIsInpvb20iLCJwYW5uaW5nRW5hYmxlZCIsInVzZXJQYW5uaW5nRW5hYmxlZCIsIm1pblpvb20iLCJtYXhab29tIiwiem9vbWluZ0VuYWJsZWQiLCJ1c2VyWm9vbWluZ0VuYWJsZWQiLCJib3hTZWxlY3Rpb25FbmFibGVkIiwiYXV0b3VuZ3JhYmlmeSIsImF1dG9sb2NrIiwiYXV0b3Vuc2VsZWN0aWZ5IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwib2JqZWN0IiwiZnVuYyIsImFycmF5T2YiLCJudW1iZXIiLCJib29sIiwiYXJyYXkiLCJkZWZhdWx0UHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7K2VBUEE7Ozs7OztBQVVBOzs7O0lBSU1BLFM7OztBQUNGLHVCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUEsMEhBQ1RBLEtBRFM7O0FBR2YsY0FBS0MsUUFBTCxHQUFnQixNQUFLQSxRQUFMLENBQWNDLElBQWQsT0FBaEI7QUFDQSxjQUFLQyxlQUFMLEdBQXVCLEtBQXZCO0FBSmU7QUFLbEI7Ozs7cUNBRVlDLEssRUFBTztBQUNoQixnQkFBTUMsTUFBTUQsTUFBTUUsTUFBbEI7O0FBRUEsZ0JBQU1DLFdBQVdGLElBQUlFLFFBQUosRUFBakI7QUFBQSxnQkFDSUMsY0FBY0gsSUFBSUcsV0FBSixFQURsQjtBQUFBLGdCQUVJQyxVQUFVSixJ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QTRQbEI7OztBQUdBMUMsaUJBQWF3QyxvQkFBVUUsTUEvUEw7O0FBaVFsQjs7O0FBR0F6Qyx1QkFBbUJ1QyxvQkFBVUUsTUFwUVg7O0FBc1FsQjs7O0FBR0F4Qyx1QkFBbUJzQyxvQkFBVUUsTUF6UVg7O0FBMlFsQjs7OztBQUlBOUIsc0JBQWtCNEIsb0JBQVVPLEtBL1FWOztBQWlSbEI7Ozs7QUFJQWhDLHNCQUFrQnlCLG9CQUFVTztBQXJSVixDQUF0Qjs7QUF3UkF6RyxVQUFVMEcsWUFBVixHQUF5QjtBQUNyQjNGLFdBQU8sRUFBQzRGLE9BQU8sT0FBUixFQUFpQkMsUUFBUSxPQUF6QixFQURjO0FBRXJCOUIsWUFBUSxFQUFDK0IsTUFBTSxRQUFQLEVBRmE7QUFHckJoQyx1QkFBbUI7QUFIRSxDQUF6Qjs7a0JBTWU3RSxTIiwiZmlsZSI6Ii4vc3JjL2xpYi9jb21wb25lbnRzL0N5dG9zY2FwZS5yZWFjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBKYXZhU2NyaXB0IFJlcXVpcmVtZW50czogY3l0b3NjYXBlXHJcbiAqIFJlYWN0LmpzIHJlcXVpcmVtZW50czogcmVhY3QtY3l0b3NjYXBlanNcclxuICovXHJcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xyXG5pbXBvcnQgQ3l0b3NjYXBlQ29tcG9uZW50IGZyb20gJ3JlYWN0LWN5dG9zY2FwZWpzJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuXHJcblxyXG4vKipcclxuQSBDb21wb25lbnQgTGlicmFyeSBmb3IgRGFzaCBhaW1lZCBhdCBmYWNpbGl0YXRpbmcgbmV0d29yayB2aXN1YWxpemF0aW9uIGluXHJcblB5dGhvbiwgd3JhcHBlZCBhcm91bmQgW0N5dG9zY2FwZS5qc10oaHR0cDovL2pzLmN5dG9zY2FwZS5vcmcvKS5cclxuICovXHJcbmNsYXNzIEN5dG9zY2FwZSBleHRlbmRzIENvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVDeSA9IHRoaXMuaGFuZGxlQ3kuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLl9oYW5kbGVDeUNhbGxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlTm9kZShldmVudCkge1xyXG4gICAgICAgIGNvbnN0IGVsZSA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgICAgY29uc3QgaXNQYXJlbnQgPSBlbGUuaXNQYXJlbnQoKSxcclxuICAgICAgICAgICAgaXNDaGlsZGxlc3MgPSBlbGUuaXNDaGlsZGxlc3MoKSxcclxuICAgICAgICAgICAgaXNDaGlsZCA9IGVsZS5pc0NoaWxkKCksXHJcbiAgICAgICAgICAgIGlzT3JwaGFuID0gZWxlLmlzT3JwaGFuKCksXHJcbiAgICAgICAgICAgIHJlbmRlcmVkUG9zaXRpb24gPSBlbGUucmVuZGVyZWRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgICByZWxhdGl2ZVBvc2l0aW9uID0gZWxlLnJlbGF0aXZlUG9zaXRpb24oKSxcclxuICAgICAgICAgICAgcGFyZW50ID0gZWxlLnBhcmVudCgpLFxyXG4gICAgICAgICAgICBzdHlsZSA9IGVsZS5zdHlsZSgpO1xyXG5cclxuICAgICAgICAvLyBUcmltIGRvd24gdGhlIGVsZW1lbnQgb2JqZWN0cyB0byBvbmx5IHRoZSBkYXRhIGNvbnRhaW5lZFxyXG4gICAgICAgIGNvbnN0IGVkZ2VzRGF0YSA9IGVsZS5jb25uZWN0ZWRFZGdlcygpLm1hcChlbGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZS5kYXRhKClcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNoaWxkcmVuRGF0YSA9IGVsZS5jaGlsZHJlbigpLm1hcChlbGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZS5kYXRhKClcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGFuY2VzdG9yc0RhdGEgPSBlbGUuYW5jZXN0b3JzKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgZGVzY2VuZGFudHNEYXRhID0gZWxlLmRlc2NlbmRhbnRzKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc2libGluZ3NEYXRhID0gZWxlLnNpYmxpbmdzKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3Qge3RpbWVTdGFtcH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMsXHJcbiAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgIGdyYWJiYWJsZSxcclxuICAgICAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgICAgIGxvY2tlZCxcclxuICAgICAgICAgICAgcG9zaXRpb24sXHJcbiAgICAgICAgICAgIHNlbGVjdGVkLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlXHJcbiAgICAgICAgfSA9IGVsZS5qc29uKCk7XHJcblxyXG4gICAgICAgIGxldCBwYXJlbnREYXRhO1xyXG4gICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgcGFyZW50RGF0YSA9IHBhcmVudC5kYXRhKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcGFyZW50RGF0YSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBub2RlT2JqZWN0ID0ge1xyXG4gICAgICAgICAgICAvLyBOb2RlcyBhdHRyaWJ1dGVzXHJcbiAgICAgICAgICAgIGVkZ2VzRGF0YSxcclxuICAgICAgICAgICAgcmVuZGVyZWRQb3NpdGlvbixcclxuICAgICAgICAgICAgdGltZVN0YW1wLFxyXG4gICAgICAgICAgICAvLyBGcm9tIGVsZS5qc29uKClcclxuICAgICAgICAgICAgY2xhc3NlcyxcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgZ3JhYmJhYmxlLFxyXG4gICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgbG9ja2VkLFxyXG4gICAgICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICAgICAgc2VsZWN0YWJsZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWQsXHJcbiAgICAgICAgICAgIC8vIENvbXBvdW5kIE5vZGVzIGFkZGl0aW9uYWwgYXR0cmlidXRlc1xyXG4gICAgICAgICAgICBhbmNlc3RvcnNEYXRhLFxyXG4gICAgICAgICAgICBjaGlsZHJlbkRhdGEsXHJcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzRGF0YSxcclxuICAgICAgICAgICAgcGFyZW50RGF0YSxcclxuICAgICAgICAgICAgc2libGluZ3NEYXRhLFxyXG4gICAgICAgICAgICBpc1BhcmVudCxcclxuICAgICAgICAgICAgaXNDaGlsZGxlc3MsXHJcbiAgICAgICAgICAgIGlzQ2hpbGQsXHJcbiAgICAgICAgICAgIGlzT3JwaGFuLFxyXG4gICAgICAgICAgICByZWxhdGl2ZVBvc2l0aW9uLFxyXG4gICAgICAgICAgICAvLyBTdHlsaW5nXHJcbiAgICAgICAgICAgIHN0eWxlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gbm9kZU9iamVjdDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2VuZXJhdGVFZGdlKGV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICBjb25zdCBtaWRwb2ludCA9IGVsZS5taWRwb2ludCgpLFxyXG4gICAgICAgICAgICBpc0xvb3AgPSBlbGUuaXNMb29wKCksXHJcbiAgICAgICAgICAgIGlzU2ltcGxlID0gZWxlLmlzU2ltcGxlKCksXHJcbiAgICAgICAgICAgIHNvdXJjZURhdGEgPSBlbGUuc291cmNlKCkuZGF0YSgpLFxyXG4gICAgICAgICAgICBzb3VyY2VFbmRwb2ludCA9IGVsZS5zb3VyY2VFbmRwb2ludCgpLFxyXG4gICAgICAgICAgICBzdHlsZSA9IGVsZS5zdHlsZSgpLFxyXG4gICAgICAgICAgICB0YXJnZXREYXRhID0gZWxlLnRhcmdldCgpLmRhdGEoKSxcclxuICAgICAgICAgICAgdGFyZ2V0RW5kcG9pbnQgPSBlbGUudGFyZ2V0RW5kcG9pbnQoKTtcclxuXHJcbiAgICAgICAgY29uc3Qge3RpbWVTdGFtcH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMsXHJcbiAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgIGdyYWJiYWJsZSxcclxuICAgICAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgICAgIGxvY2tlZCxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWQsXHJcbiAgICAgICAgfSA9IGVsZS5qc29uKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVkZ2VPYmplY3QgPSB7XHJcbiAgICAgICAgICAgIC8vIEVkZ2VzIGF0dHJpYnV0ZXNcclxuICAgICAgICAgICAgaXNMb29wLFxyXG4gICAgICAgICAgICBpc1NpbXBsZSxcclxuICAgICAgICAgICAgbWlkcG9pbnQsXHJcbiAgICAgICAgICAgIHNvdXJjZURhdGEsXHJcbiAgICAgICAgICAgIHNvdXJjZUVuZHBvaW50LFxyXG4gICAgICAgICAgICB0YXJnZXREYXRhLFxyXG4gICAgICAgICAgICB0YXJnZXRFbmRwb2ludCxcclxuICAgICAgICAgICAgdGltZVN0YW1wLFxyXG4gICAgICAgICAgICAvLyBGcm9tIGVsZS5qc29uKClcclxuICAgICAgICAgICAgY2xhc3NlcyxcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgZ3JhYmJhYmxlLFxyXG4gICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgbG9ja2VkLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZCxcclxuICAgICAgICAgICAgLy8gU3R5bGluZ1xyXG4gICAgICAgICAgICBzdHlsZVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiBlZGdlT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUN5KGN5KSB7XHJcbiAgICAgICAgLy8gSWYgdGhlIGN5IHBvaW50ZXIgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBhbmQgaGFuZGxlQ3kgaGFzIGFscmVhZHlcclxuICAgICAgICAvLyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoYW4gd2UgZG9uJ3QgcnVuIHRoaXMgZnVuY3Rpb24uXHJcbiAgICAgICAgaWYgKGN5ID09PSB0aGlzLl9jeSAmJiB0aGlzLl9oYW5kbGVDeUNhbGxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2N5ID0gY3k7XHJcbiAgICAgICAgd2luZG93LmN5ID0gY3k7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlQ3lDYWxsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBjeS5vbigndGFwJywgJ25vZGUnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGVPYmplY3QgPSB0aGlzLmdlbmVyYXRlTm9kZShldmVudCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcE5vZGU6IG5vZGVPYmplY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgdGFwTm9kZURhdGE6IG5vZGVPYmplY3QuZGF0YVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ3RhcCcsICdlZGdlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlZGdlT2JqZWN0ID0gdGhpcy5nZW5lcmF0ZUVkZ2UoZXZlbnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICB0YXBFZGdlOiBlZGdlT2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcEVkZ2VEYXRhOiBlZGdlT2JqZWN0LmRhdGFcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCdtb3VzZW92ZXInLCAnbm9kZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VzZW92ZXJOb2RlRGF0YTogZXZlbnQudGFyZ2V0LmRhdGEoKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjeS5vbignbW91c2VvdmVyJywgJ2VkZ2UnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5zZXRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRQcm9wcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91c2VvdmVyRWRnZURhdGE6IGV2ZW50LnRhcmdldC5kYXRhKClcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gU0VMRUNURUQgREFUQVxyXG4gICAgICAgIGNvbnN0IFNFTEVDVF9USFJFU0hPTEQgPSAxMDA7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZXMgPSBjeS5jb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFZGdlcyA9IGN5LmNvbGxlY3Rpb24oKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2VuZFNlbGVjdGVkTm9kZXNEYXRhID0gXy5kZWJvdW5jZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgcmVwZXRpdGl2ZWx5IGNhbGxlZCBldmVyeSB0aW1lIGEgbm9kZSBpcyBzZWxlY3RlZFxyXG4gICAgICAgICAgICBvciB1bnNlbGVjdGVkLCBidXQga2VlcHMgYmVpbmcgZGVib3VuY2VkIGlmIGl0IGlzIGNhbGxlZCBhZ2FpblxyXG4gICAgICAgICAgICB3aXRoaW4gMTAwIG1zIChnaXZlbiBieSBTRUxFQ1RfVEhSRVNIT0xEKS4gRWZmZWN0aXZlbHksIGl0IG9ubHlcclxuICAgICAgICAgICAgcnVucyB3aGVuIGFsbCB0aGUgbm9kZXMgaGF2ZSBiZWVuIGNvcnJlY3RseSBzZWxlY3RlZC91bnNlbGVjdGVkIGFuZFxyXG4gICAgICAgICAgICBhZGRlZC9yZW1vdmVkIGZyb20gdGhlIHNlbGVjdGVkTm9kZXMgY29sbGVjdGlvbiwgYW5kIHRoZW4gdXBkYXRlc1xyXG4gICAgICAgICAgICB0aGUgc2VsZWN0ZWROb2RlRGF0YSBwcm9wLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgY29uc3Qgbm9kZURhdGEgPSBzZWxlY3RlZE5vZGVzLm1hcChlbCA9PiBlbC5kYXRhKCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE5vZGVEYXRhOiBub2RlRGF0YVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIFNFTEVDVF9USFJFU0hPTEQpO1xyXG5cclxuICAgICAgICBjb25zdCBzZW5kU2VsZWN0ZWRFZGdlc0RhdGEgPSBfLmRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWRnZURhdGEgPSBzZWxlY3RlZEVkZ2VzLm1hcChlbCA9PiBlbC5kYXRhKCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVkZ2VEYXRhOiBlZGdlRGF0YVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIFNFTEVDVF9USFJFU0hPTEQpO1xyXG5cclxuICAgICAgICBjeS5vbignc2VsZWN0JywgJ25vZGUnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZSA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgICAgICAgIHNlbGVjdGVkTm9kZXMubWVyZ2UoZWxlKTtcclxuICAgICAgICAgICAgc2VuZFNlbGVjdGVkTm9kZXNEYXRhKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCd1bnNlbGVjdCcsICdub2RlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbGUgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzLnVubWVyZ2UoZWxlKTtcclxuICAgICAgICAgICAgc2VuZFNlbGVjdGVkTm9kZXNEYXRhKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCdzZWxlY3QnLCAnZWRnZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICAgICAgc2VsZWN0ZWRFZGdlcy5tZXJnZShlbGUpO1xyXG4gICAgICAgICAgICBzZW5kU2VsZWN0ZWRFZGdlc0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ3Vuc2VsZWN0JywgJ2VkZ2UnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZSA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgICAgICAgIHNlbGVjdGVkRWRnZXMudW5tZXJnZShlbGUpO1xyXG4gICAgICAgICAgICBzZW5kU2VsZWN0ZWRFZGdlc0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIC8vIFJlZnJlc2ggTGF5b3V0IGlmIG5lZWRlZFxyXG4gICAgICAgIGNvbnN0IHJlZnJlc2hMYXlvdXQgPSBfLmRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICAgICAgYXV0b1JlZnJlc2hMYXlvdXQsXHJcbiAgICAgICAgICAgICAgICBsYXlvdXRcclxuICAgICAgICAgICAgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXV0b1JlZnJlc2hMYXlvdXQpIHtcclxuICAgICAgICAgICAgICAgIGN5LmxheW91dChsYXlvdXQpLnJ1bigpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCBTRUxFQ1RfVEhSRVNIT0xEKTtcclxuXHJcbiAgICAgICAgY3kub24oJ2FkZCByZW1vdmUnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJlZnJlc2hMYXlvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICAvLyBIVE1MIGF0dHJpYnV0ZSBwcm9wc1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgc3R5bGUsXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgICAgICAgLy8gQ29tbW9uIHByb3BzXHJcbiAgICAgICAgICAgIGVsZW1lbnRzLFxyXG4gICAgICAgICAgICBzdHlsZXNoZWV0LFxyXG4gICAgICAgICAgICBsYXlvdXQsXHJcbiAgICAgICAgICAgIC8vIFZpZXdwb3J0IE1hbmlwdWxhdGlvblxyXG4gICAgICAgICAgICBwYW4sXHJcbiAgICAgICAgICAgIHpvb20sXHJcbiAgICAgICAgICAgIC8vIFZpZXdwb3J0IE11dGFiaWxpdHkgYW5kIGdlc3R1cmUgVG9nZ2xpbmdcclxuICAgICAgICAgICAgcGFubmluZ0VuYWJsZWQsXHJcbiAgICAgICAgICAgIHVzZXJQYW5uaW5nRW5hYmxlZCxcclxuICAgICAgICAgICAgbWluWm9vbSxcclxuICAgICAgICAgICAgbWF4Wm9vbSxcclxuICAgICAgICAgICAgem9vbWluZ0VuYWJsZWQsXHJcbiAgICAgICAgICAgIHVzZXJab29taW5nRW5hYmxlZCxcclxuICAgICAgICAgICAgYm94U2VsZWN0aW9uRW5hYmxlZCxcclxuICAgICAgICAgICAgYXV0b3VuZ3JhYmlmeSxcclxuICAgICAgICAgICAgYXV0b2xvY2ssXHJcbiAgICAgICAgICAgIGF1dG91bnNlbGVjdGlmeVxyXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q3l0b3NjYXBlQ29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICBpZD17aWR9XHJcbiAgICAgICAgICAgICAgICBjeT17dGhpcy5oYW5kbGVDeX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlfVxyXG4gICAgICAgICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxyXG4gICAgICAgICAgICAgICAgc3R5bGVzaGVldD17c3R5bGVzaGVldH1cclxuICAgICAgICAgICAgICAgIGxheW91dD17bGF5b3V0fVxyXG4gICAgICAgICAgICAgICAgcGFuPXtwYW59XHJcbiAgICAgICAgICAgICAgICB6b29tPXt6b29tfVxyXG4gICAgICAgICAgICAgICAgcGFubmluZ0VuYWJsZWQ9e3Bhbm5pbmdFbmFibGVkfVxyXG4gICAgICAgICAgICAgICAgdXNlclBhbm5pbmdFbmFibGVkPXt1c2VyUGFubmluZ0VuYWJsZWR9XHJcbiAgICAgICAgICAgICAgICBtaW5ab29tPXttaW5ab29tfVxyXG4gICAgICAgICAgICAgICAgbWF4Wm9vbT17bWF4Wm9vbX1cclxuICAgICAgICAgICAgICAgIHpvb21pbmdFbmFibGVkPXt6b29taW5nRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgIHVzZXJab29taW5nRW5hYmxlZD17dXNlclpvb21pbmdFbmFibGVkfVxyXG4gICAgICAgICAgICAgICAgYm94U2VsZWN0aW9uRW5hYmxlZD17Ym94U2VsZWN0aW9uRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgIGF1dG91bmdyYWJpZnk9e2F1dG91bmdyYWJpZnl9XHJcbiAgICAgICAgICAgICAgICBhdXRvbG9jaz17YXV0b2xvY2t9XHJcbiAgICAgICAgICAgICAgICBhdXRvdW5zZWxlY3RpZnk9e2F1dG91bnNlbGVjdGlmeX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICApXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5DeXRvc2NhcGUucHJvcFR5cGVzID0ge1xyXG4gICAgLy8gSFRNTCBhdHRyaWJ1dGUgcHJvcHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoaXMgY29tcG9uZW50IGluIERhc2ggY2FsbGJhY2tzLlxyXG4gICAgICovXHJcbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIGVsZW1lbnQgKHRoZSB2YWx1ZSBvZiBhbiBlbGVtZW50J3MgaHRtbFxyXG4gICAgICogY2xhc3MgYXR0cmlidXRlKS5cclxuICAgICAqL1xyXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIGlubGluZSBzdHlsZXMgdG8gdGhlIHJvb3QgZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLy8gRGFzaCBzcGVjaWZpYyBwcm9wc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGFzaC1hc3NpZ25lZCBjYWxsYmFjayB0aGF0IHNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgYW55IG9mIHRoZVxyXG4gICAgICogcHJvcGVydGllcyBjaGFuZ2UuXHJcbiAgICAgKi9cclxuICAgIHNldFByb3BzOiBQcm9wVHlwZXMuZnVuYyxcclxuXHJcbiAgICAvLyBDb21tb24gcHJvcHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgcmVwcmVzZW50aW5nIHRoZSBlbGVtZW50cyBvZiB0aGUgbmV0d29ya3MuXHJcbiAgICAgKiAgICAgMS4gRWFjaCBkaWN0aW9uYXJ5IGRlc2NyaWJlcyBhbiBlbGVtZW50LCBhbmQgc3BlY2lmaWVzIGl0cyBwdXJwb3NlLlxyXG4gICAgICogICAgICAgICAtIGBncm91cGAgKHN0cmluZyk6IEVpdGhlciAnbm9kZXMnIG9yICdlZGdlcycuIElmIG5vdCBnaXZlbiwgaXQncyBhdXRvbWF0aWNhbGx5IGluZmVycmVkLlxyXG4gICAgICogICAgICAgICAtIGBkYXRhYCAoZGljdGlvbmFyeSk6IEVsZW1lbnQgc3BlY2lmaWMgZGF0YS5cclxuICAgICAqICAgICAgICAgICAgICAtIGBpZGAgKHN0cmluZyk6IFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCwgdXNlZnVsIGZvciBzZWxlY3RvcnMgYW5kIGVkZ2VzLiBSYW5kb21seSBhc3NpZ25lZCBpZiBub3QgZ2l2ZW4uXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgbGFiZWxgIChzdHJpbmcpOiBPcHRpb25hbCBuYW1lIGZvciB0aGUgZWxlbWVudCwgdXNlZnVsIHdoZW4gYGRhdGEobGFiZWwpYCBpcyBnaXZlbiB0byBhIHN0eWxlJ3MgYGNvbnRlbnRgIG9yIGBsYWJlbGAuIEl0IGlzIG9ubHkgYSBjb252ZW50aW9uLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHBhcmVudGAgKHN0cmluZyk6IE9ubHkgZm9yIG5vZGVzLiBPcHRpb25hbCByZWZlcmVuY2UgdG8gYW5vdGhlciBub2RlLiBOZWVkZWQgdG8gY3JlYXRlIGNvbXBvdW5kIG5vZGVzLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHNvdXJjZWAgKHN0cmluZyk6IE9ubHkgZm9yIGVkZ2VzLiBUaGUgaWQgb2YgdGhlIHNvdXJjZSBub2RlLCB3aGljaCBpcyB3aGVyZSB0aGUgZWRnZSBzdGFydHMuXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgdGFyZ2V0YCAoc3RyaW5nKTogT25seSBmb3IgZWRnZXMuIFRoZSBpZCBvZiB0aGUgdGFyZ2V0IG5vZGUsIHdoZXJlIHRoZSBlZGdlIGVuZHMuXHJcbiAgICAgKiAgICAgICAgIC0gYHBvc2l0aW9uYCAoZGljdGlvbmFyeSk6IE9ubHkgZm9yIG5vZGVzLiBUaGUgcG9zaXRpb24gb2YgdGhlIG5vZGUuXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgeGAgKG51bWJlcik6IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIG5vZGUuXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgeWAgKG51bWJlcik6IFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIG5vZGUuXHJcbiAgICAgKiAgICAgICAgIC0gYHNlbGVjdGVkYCAoYm9vbGVhbik6IElmIHRoZSBlbGVtZW50IGlzIHNlbGVjdGVkIHVwb24gaW5pdGlhbGlzYXRpb24uXHJcbiAgICAgKiAgICAgICAgIC0gYHNlbGVjdGFibGVgIChib29sZWFuKTogSWYgdGhlIGVsZW1lbnQgY2FuIGJlIHNlbGVjdGVkLlxyXG4gICAgICogICAgICAgICAtIGBsb2NrZWRgIChib29sZWFuKTogT25seSBmb3Igbm9kZXMuIElmIHRoZSBwb3NpdGlvbiBpcyBpbW11dGFibGUuXHJcbiAgICAgKiAgICAgICAgIC0gYGdyYWJiYWJsZWAgKGJvb2xlYW4pOiBPbmx5IGZvciBub2Rlcy4gSWYgdGhlIG5vZGUgY2FuIGJlIGdyYWJiZWQgYW5kIG1vdmVkIGJ5IHRoZSB1c2VyLlxyXG4gICAgICogICAgICAgICAtIGBjbGFzc2VzYCAoc3RyaW5nKTogU3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBjbGFzcyBuYW1lcyBvZiB0aGUgZWxlbWVudC4gVGhvc2UgY2xhc3NlcyBjYW4gYmUgc2VsZWN0ZWQgYnkgYSBzdHlsZSBzZWxlY3Rvci5cclxuICAgICAqXHJcbiAgICAgKiAgICAgMi4gVGhlIFtvZmZpY2lhbCBDeXRvc2NhcGUuanMgZG9jdW1lbnRhdGlvbl0oaHR0cDovL2pzLmN5dG9zY2FwZS5vcmcvI25vdGF0aW9uL2VsZW1lbnRzLWpzb24pIG9mZmVycyBhbiBleHRlbnNpdmUgb3ZlcnZpZXcgYW5kIGV4YW1wbGVzIG9mIGVsZW1lbnQgZGVjbGFyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIGVsZW1lbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgcmVwcmVzZW50aW5nIHRoZSBzdHlsZXMgb2YgdGhlIGVsZW1lbnRzLlxyXG4gICAgICogICAgIDEuIEVhY2ggZGljdGlvbmFyeSByZXF1aXJlcyB0aGUgZm9sbG93aW5nIGtleXM6XHJcbiAgICAgKiAgICAgICAgIC0gYHNlbGVjdG9yYCAoc3RyaW5nKTogV2hpY2ggZWxlbWVudHMgeW91IGFyZSBzdHlsaW5nLiBHZW5lcmFsbHksIHlvdSBzZWxlY3QgYSBncm91cCBvZiBlbGVtZW50cyAobm9kZSwgZWRnZXMsIGJvdGgpLCBhIGNsYXNzICh0aGF0IHlvdSBkZWNsYXJlIGluIHRoZSBlbGVtZW50IGRpY3Rpb25hcnkpLCBvciBhbiBlbGVtZW50IGJ5IElELlxyXG4gICAgICogICAgICAgICAtIGBzdHlsZWAgKGRpY3Rpb25hcnkpOiBXaGF0IGFzcGVjdHMgb2YgdGhlIGVsZW1lbnRzIHlvdSB3YW50IHRvIG1vZGlmeS4gVGhpcyBjb3VsZCBiZSB0aGUgc2l6ZSBvciBjb2xvciBvZiBhIG5vZGUsIHRoZSBzaGFwZSBvZiBhbiBlZGdlIGFycm93LCBvciBtYW55IG1vcmUuXHJcbiAgICAgKlxyXG4gICAgICogICAgIDIuIEJvdGggW3RoZSBzZWxlY3RvciBzdHJpbmddKGh0dHA6Ly9qcy5jeXRvc2NhcGUub3JnLyNzZWxlY3RvcnMpIGFuZFxyXG4gICAgICogICAgIFt0aGUgc3R5bGUgZGljdGlvbmFyeV0oaHR0cDovL2pzLmN5dG9zY2FwZS5vcmcvI3N0eWxlL25vZGUtYm9keSkgYXJlXHJcbiAgICAgKiAgICAgZXhoYXVzdGl2ZWx5IGRvY3VtZW50ZWQgaW4gdGhlIEN5dG9zY2FwZS5qcyBkb2NzLiBBbHRob3VnaCBtZXRob2RzIHN1Y2hcclxuICAgICAqICAgICBhcyBgY3kuZWxlbWVudHMoLi4uKWAgYW5kIGBjeS5maWx0ZXIoLi4uKWAgYXJlIG5vdCBhdmFpbGFibGUsIHRoZSBzZWxlY3RvclxyXG4gICAgICogICAgIHN0cmluZyBzeW50YXggc3RheXMgdGhlIHNhbWUuXHJcbiAgICAgKi9cclxuICAgIHN0eWxlc2hlZXQ6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vYmplY3QpLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBkaWN0aW9uYXJ5IHNwZWNpZnlpbmcgaG93IHRvIHNldCB0aGUgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnRzIGluIHlvdXJcclxuICAgICAqIGdyYXBoLiBUaGUgYCduYW1lJ2Aga2V5IGlzIHJlcXVpcmVkLCBhbmQgaW5kaWNhdGVzIHdoaWNoIGxheW91dCAoYWxnb3JpdGhtKSB0b1xyXG4gICAgICogdXNlLlxyXG4gICAgICogICAgIDEuIFRoZSBsYXlvdXRzIGF2YWlsYWJsZSBieSBkZWZhdWx0IGFyZTpcclxuICAgICAqICAgICAgICAgLSBgcmFuZG9tYDogUmFuZG9tbHkgYXNzaWducyBwb3NpdGlvbnNcclxuICAgICAqICAgICAgICAgLSBgcHJlc2V0YDogQXNzaWducyBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgYHBvc2l0aW9uYCBrZXkgaW4gZWxlbWVudCBkaWN0aW9uYXJpZXNcclxuICAgICAqICAgICAgICAgLSBgY2lyY2xlYDogU2luZ2xlLWxldmVsIGNpcmNsZSwgd2l0aCBvcHRpb25hbCByYWRpdXNcclxuICAgICAqICAgICAgICAgLSBgY29uY2VudHJpY2A6IE11bHRpLWxldmVsIGNpcmNsZSwgd2l0aCBvcHRpb25hbCByYWRpdXNcclxuICAgICAqICAgICAgICAgLSBgZ3JpZGA6IFNxdWFyZSBncmlkLCBvcHRpb25hbGx5IHdpdGggbnVtYmVycyBvZiBgcm93c2AgYW5kIGBjb2xzYFxyXG4gICAgICogICAgICAgICAtIGBicmVhZHRoZmlyc3RgOiBUcmVlIHN0cnVjdHVyZSBidWlsdCB1c2luZyBCRlMsIHdpdGggb3B0aW9uYWwgYHJvb3RzYFxyXG4gICAgICogICAgICAgICAtIGBjb3NlYDogRm9yY2UtZGlyZWN0ZWQgcGh5c2ljcyBzaW11bGF0aW9uXHJcbiAgICAgKlxyXG4gICAgICogICAgIDIuIFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgbGF5b3V0cyBhcmUgYWxzbyBpbmNsdWRlZDpcclxuICAgICAqICAgICAgICAgLSBgY29zZS1iaWxrZW50YDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtY29zZS1iaWxrZW50XHJcbiAgICAgKiAgICAgICAgIC0gYGNvbGFgOiBodHRwczovL2dpdGh1Yi5jb20vY3l0b3NjYXBlL2N5dG9zY2FwZS5qcy1jb2xhXHJcbiAgICAgKiAgICAgICAgIC0gYGV1bGVyYDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtZGFncmVcclxuICAgICAqICAgICAgICAgLSBgc3ByZWFkYDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtc3ByZWFkXHJcbiAgICAgKiAgICAgICAgIC0gYGRhZ3JlYDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtZGFncmVcclxuICAgICAqICAgICAgICAgLSBga2xheWA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLWtsYXlcclxuICAgICAqXHJcbiAgICAgKiAgICAgMy4gVGhlIGtleXMgYWNjZXB0ZWQgYnkgYGxheW91dGAgdmFyeSBkZXBlbmRpbmcgb24gdGhlIGFsZ29yaXRobSwgYnV0IHNvbWVcclxuICAgICAqICAgICBrZXlzIGFyZSBhY2NlcHRlZCBieSBhbGwgbGF5b3V0czpcclxuICAgICAqICAgICAgICAgLSBgZml0YCAoYm9vbGVhbik6IFdoZXRoZXIgdG8gcmVuZGVyIHRoZSBub2RlcyBpbiBvcmRlciB0byBmaXQgdGhlIGNhbnZhcy5cclxuICAgICAqICAgICAgICAgLSBgcGFkZGluZ2AgKG51bWJlcik6IFBhZGRpbmcgYXJvdW5kIHRoZSBzaWRlcyBvZiB0aGUgY2FudmFzLCBpZiBmaXQgaXMgZW5hYmxlZC5cclxuICAgICAqICAgICAgICAgLSBgYW5pbWF0ZWAgKGJvb2xlYW4pOiBXaGV0aGVyIHRvIGFuaW1hdGUgY2hhbmdlIGluIHBvc2l0aW9uIHdoZW4gdGhlIGxheW91dCBjaGFuZ2VzLlxyXG4gICAgICogICAgICAgICAtIGBhbmltYXRpb25EdXJhdGlvbmAgKG51bWJlcik6IER1cmF0aW9uIG9mIGFuaW1hdGlvbiBpbiBtaWxsaXNlY29uZHMsIGlmIGVuYWJsZWQuXHJcbiAgICAgKiAgICAgICAgIC0gYGJvdW5kaW5nQm94YCAoZGljdGlvbmFyeSk6IEhvdyB0byBjb25zdHJhaW4gdGhlIGxheW91dCBpbiBhIHNwZWNpZmljIGFyZWEuIEtleXMgYWNjZXB0ZWQgYXJlIGVpdGhlciBgeDEsIHkxLCB4MiwgeTJgIG9yIGB4MSwgeTEsIHcsIGhgLCBhbGwgb2Ygd2hpY2ggcmVjZWl2ZSBhIHBpeGVsIHZhbHVlLlxyXG4gICAgICpcclxuICAgICAqICAgICA0LiBUaGUgY29tcGxldGUgbGlzdCBvZiBsYXlvdXRzIGFuZCB0aGVpciBhY2NlcHRlZCBvcHRpb25zIGFyZSBhdmFpbGFibGVcclxuICAgICAqICAgICBvbiB0aGUgW0N5dG9zY2FwZS5qcyBkb2NzXShodHRwOi8vanMuY3l0b3NjYXBlLm9yZy8jbGF5b3V0cykuIEZvciB0aGVcclxuICAgICAqICAgICBleHRlcm5hbCBsYXlvdXRzLCB0aGUgb3B0aW9ucyBhcmUgbGlzdGVkIGluIHRoZSBcIkFQSVwiIHNlY3Rpb24gb2YgdGhlXHJcbiAgICAgKiAgICAgUkVBRE1FLlxyXG4gICAgICogICAgIE5vdGUgdGhhdCBjZXJ0YWluIGtleXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gRGFzaCBzaW5jZSB0aGUgdmFsdWUgaXMgYVxyXG4gICAgICogICAgIEphdmFTY3JpcHQgZnVuY3Rpb24gb3IgYSBjYWxsYmFjay4gUGxlYXNlIHZpc2l0IFt0aGlzIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vcGxvdGx5L2Rhc2gtY3l0b3NjYXBlL2lzc3Vlcy8yNSlcclxuICAgICAqICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cclxuICAgICAqL1xyXG4gICAgbGF5b3V0OiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8vIFZpZXdwb3J0IE1hbmlwdWxhdGlvblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGljdGlvbmFyeSBpbmRpY2F0aW5nIHRoZSBpbml0aWFsIHBhbm5pbmcgcG9zaXRpb24gb2YgdGhlIGdyYXBoLiBUaGVcclxuICAgICAqIGZvbGxvd2luZyBrZXlzIGFyZSBhY2NlcHRlZDpcclxuICAgICAqICAgICAtIGB4YCAobnVtYmVyKTogVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgcG9zaXRpb24uXHJcbiAgICAgKiAgICAgLSBgeWAgKG51bWJlcik6IFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIHBvc2l0aW9uLlxyXG4gICAgICovXHJcbiAgICBwYW46IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaW5pdGlhbCB6b29tIGxldmVsIG9mIHRoZSBncmFwaC4gWW91IGNhbiBzZXQgYG1pblpvb21gIGFuZFxyXG4gICAgICogYG1heFpvb21gIHRvIHNldCByZXN0cmljdGlvbnMgb24gdGhlIHpvb20gbGV2ZWwuXHJcbiAgICAgKi9cclxuICAgIHpvb206IFByb3BUeXBlcy5udW1iZXIsXHJcblxyXG4gICAgLy8gVmlld3BvcnQgTXV0YWJpbGl0eSBhbmQgZ2VzdHVyZSBUb2dnbGluZ1xyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHBhbm5pbmcgdGhlIGdyYXBoIGlzIGVuYWJsZWQgKGkuZS4sIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ3JhcGggaXNcclxuICAgICAqIG11dGFibGUgb3ZlcmFsbCkuXHJcbiAgICAgKi9cclxuICAgIHBhbm5pbmdFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdXNlciBldmVudHMgKGUuZy4gZHJhZ2dpbmcgdGhlIGdyYXBoIGJhY2tncm91bmQpIGFyZSBhbGxvd2VkIHRvXHJcbiAgICAgKiBwYW4gdGhlIGdyYXBoLlxyXG4gICAgICovXHJcbiAgICB1c2VyUGFubmluZ0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBtaW5pbXVtIGJvdW5kIG9uIHRoZSB6b29tIGxldmVsIG9mIHRoZSBncmFwaC4gVGhlIHZpZXdwb3J0IGNhbiBub3QgYmVcclxuICAgICAqIHNjYWxlZCBzbWFsbGVyIHRoYW4gdGhpcyB6b29tIGxldmVsLlxyXG4gICAgICovXHJcbiAgICBtaW5ab29tOiBQcm9wVHlwZXMubnVtYmVyLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBtYXhpbXVtIGJvdW5kIG9uIHRoZSB6b29tIGxldmVsIG9mIHRoZSBncmFwaC4gVGhlIHZpZXdwb3J0IGNhbiBub3QgYmVcclxuICAgICAqIHNjYWxlZCBsYXJnZXIgdGhhbiB0aGlzIHpvb20gbGV2ZWwuXHJcbiAgICAgKi9cclxuICAgIG1heFpvb206IFByb3BUeXBlcy5udW1iZXIsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHpvb21pbmcgdGhlIGdyYXBoIGlzIGVuYWJsZWQgKGkuZS4sIHRoZSB6b29tIGxldmVsIG9mIHRoZSBncmFwaFxyXG4gICAgICogaXMgbXV0YWJsZSBvdmVyYWxsKS5cclxuICAgICAqL1xyXG4gICAgem9vbWluZ0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB1c2VyIGV2ZW50cyAoZS5nLiBkcmFnZ2luZyB0aGUgZ3JhcGggYmFja2dyb3VuZCkgYXJlIGFsbG93ZWRcclxuICAgICAqIHRvIHBhbiB0aGUgZ3JhcGguXHJcbiAgICAgKi9cclxuICAgIHVzZXJab29taW5nRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIGJveCBzZWxlY3Rpb24gKGkuZS4gZHJhZyBhIGJveCBvdmVybGF5IGFyb3VuZCwgYW5kIHJlbGVhc2UgaXRcclxuICAgICAqIHRvIHNlbGVjdCkgaXMgZW5hYmxlZC4gSWYgZW5hYmxlZCwgdGhlIHVzZXIgbXVzdCB0YXBob2xkIHRvIHBhbiB0aGUgZ3JhcGguXHJcbiAgICAgKi9cclxuICAgIGJveFNlbGVjdGlvbkVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBub2RlcyBzaG91bGQgYmUgdW5ncmFiaWZpZWQgKG5vdCBncmFiYmFibGUgYnkgdXNlcikgYnlcclxuICAgICAqIGRlZmF1bHQgKGlmIHRydWUsIG92ZXJyaWRlcyBpbmRpdmlkdWFsIG5vZGUgc3RhdGUpLlxyXG4gICAgICovXHJcbiAgICBhdXRvdW5ncmFiaWZ5OiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgbm9kZXMgc2hvdWxkIGJlIGxvY2tlZCAobm90IGRyYWdnYWJsZSBhdCBhbGwpIGJ5IGRlZmF1bHRcclxuICAgICAqIChpZiB0cnVlLCBvdmVycmlkZXMgaW5kaXZpZHVhbCBub2RlIHN0YXRlKS5cclxuICAgICAqL1xyXG4gICAgYXV0b2xvY2s6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBub2RlcyBzaG91bGQgYmUgdW5zZWxlY3RpZmllZCAoaW1tdXRhYmxlIHNlbGVjdGlvbiBzdGF0ZSkgYnlcclxuICAgICAqIGRlZmF1bHQgKGlmIHRydWUsIG92ZXJyaWRlcyBpbmRpdmlkdWFsIGVsZW1lbnQgc3RhdGUpLlxyXG4gICAgICovXHJcbiAgICBhdXRvdW5zZWxlY3RpZnk6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0aGUgbGF5b3V0IHNob3VsZCBiZSByZWZyZXNoZWQgd2hlbiBlbGVtZW50cyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC5cclxuICAgICAqL1xyXG4gICAgYXV0b1JlZnJlc2hMYXlvdXQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8vIFVzZXIgRXZlbnRzIFByb3BzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29tcGxldGUgbm9kZSBkaWN0aW9uYXJ5IHJldHVybmVkIHdoZW4geW91IHRhcCBvciBjbGljayBpdC5cclxuICAgICAqXHJcbiAgICAgKiAgICAgMS4gTm9kZS1zcGVjaWZpYyBpdGVtczpcclxuICAgICAqICAgICAgICAgLSBgZWRnZXNEYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgcmVuZGVyZWRQb3NpdGlvbmAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHRpbWVTdGFtcGAgKG51bWJlcilcclxuICAgICAqXHJcbiAgICAgKiAgICAgMi4gR2VuZXJhbCBpdGVtcyAoZm9yIGFsbCBlbGVtZW50cyk6XHJcbiAgICAgKiAgICAgICAgIC0gYGNsYXNzZXNgIChzdHJpbmcpXHJcbiAgICAgKiAgICAgICAgIC0gYGRhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBncmFiYmFibGVgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBncm91cGAgKHN0cmluZylcclxuICAgICAqICAgICAgICAgLSBgbG9ja2VkYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgcG9zaXRpb25gIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RhYmxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgc2VsZWN0ZWRgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzdHlsZWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKlxyXG4gICAgICogICAgIDMuIEl0ZW1zIGZvciBjb21wb3VuZCBub2RlczpcclxuICAgICAqICAgICAgICAgLSBgYW5jZXN0b3JzRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGNoaWxkcmVuRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGRlc2NlbmRhbnRzRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHBhcmVudERhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzaWJsaW5nc0RhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBpc1BhcmVudGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzQ2hpbGRsZXNzYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgaXNDaGlsZGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzT3JwaGFuYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgcmVsYXRpdmVQb3NpdGlvbmAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKi9cclxuICAgIHRhcE5vZGU6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSBkaWN0aW9uYXJ5IG9mIGEgbm9kZSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuXHJcbiAgICAgKi9cclxuICAgIHRhcE5vZGVEYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbXBsZXRlIGVkZ2UgZGljdGlvbmFyeSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuXHJcbiAgICAgKlxyXG4gICAgICogICAgIDEuIEVkZ2Utc3BlY2lmaWMgaXRlbXM6XHJcbiAgICAgKiAgICAgICAgIC0gYGlzTG9vcGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzU2ltcGxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgbWlkcG9pbnRgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzb3VyY2VEYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgc291cmNlRW5kcG9pbnRgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGB0YXJnZXREYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgdGFyZ2V0RW5kcG9pbnRgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGB0aW1lU3RhbXBgIChudW1iZXIpXHJcbiAgICAgKlxyXG4gICAgICogICAgIDIuIEdlbmVyYWwgaXRlbXMgKGZvciBhbGwgZWxlbWVudHMpOlxyXG4gICAgICogICAgICAgICAtIGBjbGFzc2VzYCAoc3RyaW5nKVxyXG4gICAgICogICAgICAgICAtIGBkYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgZ3JhYmJhYmxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgZ3JvdXBgIChzdHJpbmcpXHJcbiAgICAgKiAgICAgICAgIC0gYGxvY2tlZGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYHNlbGVjdGFibGVgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RlZGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYHN0eWxlYCAoZGljdGlvbmFyeSlcclxuICAgICAqL1xyXG4gICAgdGFwRWRnZTogUHJvcFR5cGVzLm9iamVjdCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkYXRhIGRpY3Rpb25hcnkgb2YgYW4gZWRnZSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuXHJcbiAgICAgKi9cclxuICAgIHRhcEVkZ2VEYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRhdGEgZGljdGlvbmFyeSBvZiBhIG5vZGUgcmV0dXJuZWQgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdC5cclxuICAgICAqL1xyXG4gICAgbW91c2VvdmVyTm9kZURhdGE6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSBkaWN0aW9uYXJ5IG9mIGFuIGVkZ2UgcmV0dXJuZWQgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdC5cclxuICAgICAqL1xyXG4gICAgbW91c2VvdmVyRWRnZURhdGE6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbGlzdCBvZiBkYXRhIGRpY3Rpb25hcmllcyBvZiBhbGwgc2VsZWN0ZWQgbm9kZXMgKGUuZy4gdXNpbmdcclxuICAgICAqIFNoaWZ0K0NsaWNrIHRvIHNlbGVjdCBtdWx0aXBsZSBub2Rlcywgb3IgU2hpZnQrRHJhZyB0byB1c2UgYm94IHNlbGVjdGlvbikuXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdGVkTm9kZURhdGE6IFByb3BUeXBlcy5hcnJheSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsaXN0IG9mIGRhdGEgZGljdGlvbmFyaWVzIG9mIGFsbCBzZWxlY3RlZCBlZGdlcyAoZS5nLiB1c2luZ1xyXG4gICAgICogU2hpZnQrQ2xpY2sgdG8gc2VsZWN0IG11bHRpcGxlIG5vZGVzLCBvciBTaGlmdCtEcmFnIHRvIHVzZSBib3ggc2VsZWN0aW9uKS5cclxuICAgICAqL1xyXG4gICAgc2VsZWN0ZWRFZGdlRGF0YTogUHJvcFR5cGVzLmFycmF5XHJcbn07XHJcblxyXG5DeXRvc2NhcGUuZGVmYXVsdFByb3BzID0ge1xyXG4gICAgc3R5bGU6IHt3aWR0aDogJzYwMHB4JywgaGVpZ2h0OiAnNjAwcHgnfSxcclxuICAgIGxheW91dDoge25hbWU6ICdyYW5kb20nfSxcclxuICAgIGF1dG9SZWZyZXNoTGF5b3V0OiB0cnVlXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDeXRvc2NhcGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/lib/components/Cytoscape.react.js\n"); + eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactCytoscapejs = __webpack_require__(/*! react-cytoscapejs */ \"./node_modules/react-cytoscapejs/dist/react-cytoscape.js\");\n\nvar _reactCytoscapejs2 = _interopRequireDefault(_reactCytoscapejs);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\r\n * JavaScript Requirements: cytoscape\r\n * React.js requirements: react-cytoscapejs\r\n */\n\n\n/**\r\nA Component Library for Dash aimed at facilitating network visualization in\r\nPython, wrapped around [Cytoscape.js](http://js.cytoscape.org/).\r\n */\nvar Cytoscape = function (_Component) {\n _inherits(Cytoscape, _Component);\n\n function Cytoscape(props) {\n _classCallCheck(this, Cytoscape);\n\n var _this = _possibleConstructorReturn(this, (Cytoscape.__proto__ || Object.getPrototypeOf(Cytoscape)).call(this, props));\n\n _this.handleCy = _this.handleCy.bind(_this);\n _this._handleCyCalled = false;\n return _this;\n }\n\n _createClass(Cytoscape, [{\n key: 'generateNode',\n value: function generateNode(event) {\n var ele = event.target;\n\n var isParent = ele.isParent(),\n isChildless = ele.isChildless(),\n isChild = ele.isChild(),\n isOrphan = ele.isOrphan(),\n renderedPosition = ele.renderedPosition(),\n relativePosition = ele.relativePosition(),\n parent = ele.parent(),\n style = ele.style();\n\n // Trim down the element objects to only the data contained\n var edgesData = ele.connectedEdges().map(function (ele) {\n return ele.data();\n }),\n childrenData = ele.children().map(function (ele) {\n return ele.data();\n }),\n ancestorsData = ele.ancestors().map(function (ele) {\n return ele.data();\n }),\n descendantsData = ele.descendants().map(function (ele) {\n return ele.data();\n }),\n siblingsData = ele.siblings().map(function (ele) {\n return ele.data();\n });\n\n var timeStamp = event.timeStamp;\n\n var _ele$json = ele.json(),\n classes = _ele$json.classes,\n data = _ele$json.data,\n grabbable = _ele$json.grabbable,\n group = _ele$json.group,\n locked = _ele$json.locked,\n position = _ele$json.position,\n selected = _ele$json.selected,\n selectable = _ele$json.selectable;\n\n var parentData = void 0;\n if (parent) {\n parentData = parent.data();\n } else {\n parentData = null;\n }\n\n var nodeObject = {\n // Nodes attributes\n edgesData: edgesData,\n renderedPosition: renderedPosition,\n timeStamp: timeStamp,\n // From ele.json()\n classes: classes,\n data: data,\n grabbable: grabbable,\n group: group,\n locked: locked,\n position: position,\n selectable: selectable,\n selected: selected,\n // Compound Nodes additional attributes\n ancestorsData: ancestorsData,\n childrenData: childrenData,\n descendantsData: descendantsData,\n parentData: parentData,\n siblingsData: siblingsData,\n isParent: isParent,\n isChildless: isChildless,\n isChild: isChild,\n isOrphan: isOrphan,\n relativePosition: relativePosition,\n // Styling\n style: style\n };\n return nodeObject;\n }\n }, {\n key: 'generateEdge',\n value: function generateEdge(event) {\n var ele = event.target;\n\n var midpoint = ele.midpoint(),\n isLoop = ele.isLoop(),\n isSimple = ele.isSimple(),\n sourceData = ele.source().data(),\n sourceEndpoint = ele.sourceEndpoint(),\n style = ele.style(),\n targetData = ele.target().data(),\n targetEndpoint = ele.targetEndpoint();\n\n var timeStamp = event.timeStamp;\n\n var _ele$json2 = ele.json(),\n classes = _ele$json2.classes,\n data = _ele$json2.data,\n grabbable = _ele$json2.grabbable,\n group = _ele$json2.group,\n locked = _ele$json2.locked,\n selectable = _ele$json2.selectable,\n selected = _ele$json2.selected;\n\n var edgeObject = {\n // Edges attributes\n isLoop: isLoop,\n isSimple: isSimple,\n midpoint: midpoint,\n sourceData: sourceData,\n sourceEndpoint: sourceEndpoint,\n targetData: targetData,\n targetEndpoint: targetEndpoint,\n timeStamp: timeStamp,\n // From ele.json()\n classes: classes,\n data: data,\n grabbable: grabbable,\n group: group,\n locked: locked,\n selectable: selectable,\n selected: selected,\n // Styling\n style: style\n };\n\n return edgeObject;\n }\n }, {\n key: 'handleCy',\n value: function handleCy(cy) {\n var _this2 = this;\n\n // If the cy pointer has not been modified, and handleCy has already\n // been called before, than we don't run this function.\n if (cy === this._cy && this._handleCyCalled) {\n return;\n }\n this._cy = cy;\n window.cy = cy;\n this._handleCyCalled = true;\n\n cy.on('tap', 'node', function (event) {\n var nodeObject = _this2.generateNode(event);\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n tapNode: nodeObject,\n tapNodeData: nodeObject.data\n });\n }\n });\n\n cy.on('tap', 'edge', function (event) {\n var edgeObject = _this2.generateEdge(event);\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n tapEdge: edgeObject,\n tapEdgeData: edgeObject.data\n });\n }\n });\n\n cy.on('mouseover', 'node', function (event) {\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n mouseoverNodeData: event.target.data()\n });\n }\n });\n\n cy.on('mouseover', 'edge', function (event) {\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n mouseoverEdgeData: event.target.data()\n });\n }\n });\n\n // SELECTED DATA\n var SELECT_THRESHOLD = 100;\n\n var selectedNodes = cy.collection();\n var selectedEdges = cy.collection();\n\n var sendSelectedNodesData = _lodash2.default.debounce(function () {\n /*\r\n This function is repetitively called every time a node is selected\r\n or unselected, but keeps being debounced if it is called again\r\n within 100 ms (given by SELECT_THRESHOLD). Effectively, it only\r\n runs when all the nodes have been correctly selected/unselected and\r\n added/removed from the selectedNodes collection, and then updates\r\n the selectedNodeData prop.\r\n */\n var nodeData = selectedNodes.map(function (el) {\n return el.data();\n });\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n selectedNodeData: nodeData\n });\n }\n }, SELECT_THRESHOLD);\n\n var sendSelectedEdgesData = _lodash2.default.debounce(function () {\n var edgeData = selectedEdges.map(function (el) {\n return el.data();\n });\n\n if (typeof _this2.props.setProps === 'function') {\n _this2.props.setProps({\n selectedEdgeData: edgeData\n });\n }\n }, SELECT_THRESHOLD);\n\n cy.on('select', 'node', function (event) {\n var ele = event.target;\n\n selectedNodes.merge(ele);\n sendSelectedNodesData();\n });\n\n cy.on('unselect', 'node', function (event) {\n var ele = event.target;\n\n selectedNodes.unmerge(ele);\n sendSelectedNodesData();\n });\n\n cy.on('select', 'edge', function (event) {\n var ele = event.target;\n\n selectedEdges.merge(ele);\n sendSelectedEdgesData();\n });\n\n cy.on('unselect', 'edge', function (event) {\n var ele = event.target;\n\n selectedEdges.unmerge(ele);\n sendSelectedEdgesData();\n });\n\n // Refresh Layout if needed\n var refreshLayout = _lodash2.default.debounce(function () {\n var _props = _this2.props,\n autoRefreshLayout = _props.autoRefreshLayout,\n layout = _props.layout;\n\n\n if (autoRefreshLayout) {\n cy.layout(layout).run();\n }\n }, SELECT_THRESHOLD);\n\n cy.on('add remove', function () {\n refreshLayout();\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n style = _props2.style,\n className = _props2.className,\n elements = _props2.elements,\n stylesheet = _props2.stylesheet,\n layout = _props2.layout,\n pan = _props2.pan,\n zoom = _props2.zoom,\n panningEnabled = _props2.panningEnabled,\n userPanningEnabled = _props2.userPanningEnabled,\n minZoom = _props2.minZoom,\n maxZoom = _props2.maxZoom,\n zoomingEnabled = _props2.zoomingEnabled,\n userZoomingEnabled = _props2.userZoomingEnabled,\n boxSelectionEnabled = _props2.boxSelectionEnabled,\n autoungrabify = _props2.autoungrabify,\n autolock = _props2.autolock,\n autounselectify = _props2.autounselectify;\n\n\n return _react2.default.createElement(_reactCytoscapejs2.default, {\n id: id,\n cy: this.handleCy,\n className: className,\n style: style,\n elements: _reactCytoscapejs2.default.normalizeElements(elements),\n stylesheet: stylesheet,\n layout: layout,\n pan: pan,\n zoom: zoom,\n panningEnabled: panningEnabled,\n userPanningEnabled: userPanningEnabled,\n minZoom: minZoom,\n maxZoom: maxZoom,\n zoomingEnabled: zoomingEnabled,\n userZoomingEnabled: userZoomingEnabled,\n boxSelectionEnabled: boxSelectionEnabled,\n autoungrabify: autoungrabify,\n autolock: autolock,\n autounselectify: autounselectify\n });\n }\n }]);\n\n return Cytoscape;\n}(_react.Component);\n\nCytoscape.propTypes = {\n // HTML attribute props\n\n /**\r\n * The ID used to identify this component in Dash callbacks.\r\n */\n id: _propTypes2.default.string,\n\n /**\r\n * Sets the class name of the element (the value of an element's html\r\n * class attribute).\r\n */\n className: _propTypes2.default.string,\n\n /**\r\n * Add inline styles to the root element.\r\n */\n style: _propTypes2.default.object,\n\n // Dash specific props\n\n /**\r\n * Dash-assigned callback that should be called whenever any of the\r\n * properties change.\r\n */\n setProps: _propTypes2.default.func,\n\n // Common props\n\n /**\r\n * A list of dictionaries representing the elements of the networks.\r\n * 1. Each dictionary describes an element, and specifies its purpose.\r\n * - `group` (string): Either 'nodes' or 'edges'. If not given, it's automatically inferred.\r\n * - `data` (dictionary): Element specific data.\r\n * - `id` (string): Reference to the element, useful for selectors and edges. Randomly assigned if not given.\r\n * - `label` (string): Optional name for the element, useful when `data(label)` is given to a style's `content` or `label`. It is only a convention.\r\n * - `parent` (string): Only for nodes. Optional reference to another node. Needed to create compound nodes.\r\n * - `source` (string): Only for edges. The id of the source node, which is where the edge starts.\r\n * - `target` (string): Only for edges. The id of the target node, where the edge ends.\r\n * - `position` (dictionary): Only for nodes. The position of the node.\r\n * - `x` (number): The x-coordinate of the node.\r\n * - `y` (number): The y-coordinate of the node.\r\n * - `selected` (boolean): If the element is selected upon initialisation.\r\n * - `selectable` (boolean): If the element can be selected.\r\n * - `locked` (boolean): Only for nodes. If the position is immutable.\r\n * - `grabbable` (boolean): Only for nodes. If the node can be grabbed and moved by the user.\r\n * - `classes` (string): Space separated string of class names of the element. Those classes can be selected by a style selector.\r\n *\r\n * 2. The [official Cytoscape.js documentation](http://js.cytoscape.org/#notation/elements-json) offers an extensive overview and examples of element declaration.\r\n */\n elements: _propTypes2.default.arrayOf(_propTypes2.default.object),\n\n /**\r\n * A list of dictionaries representing the styles of the elements.\r\n * 1. Each dictionary requires the following keys:\r\n * - `selector` (string): Which elements you are styling. Generally, you select a group of elements (node, edges, both), a class (that you declare in the element dictionary), or an element by ID.\r\n * - `style` (dictionary): What aspects of the elements you want to modify. This could be the size or color of a node, the shape of an edge arrow, or many more.\r\n *\r\n * 2. Both [the selector string](http://js.cytoscape.org/#selectors) and\r\n * [the style dictionary](http://js.cytoscape.org/#style/node-body) are\r\n * exhaustively documented in the Cytoscape.js docs. Although methods such\r\n * as `cy.elements(...)` and `cy.filter(...)` are not available, the selector\r\n * string syntax stays the same.\r\n */\n stylesheet: _propTypes2.default.arrayOf(_propTypes2.default.object),\n\n /**\r\n * A dictionary specifying how to set the position of the elements in your\r\n * graph. The `'name'` key is required, and indicates which layout (algorithm) to\r\n * use.\r\n * 1. The layouts available by default are:\r\n * - `random`: Randomly assigns positions\r\n * - `preset`: Assigns position based on the `position` key in element dictionaries\r\n * - `circle`: Single-level circle, with optional radius\r\n * - `concentric`: Multi-level circle, with optional radius\r\n * - `grid`: Square grid, optionally with numbers of `rows` and `cols`\r\n * - `breadthfirst`: Tree structure built using BFS, with optional `roots`\r\n * - `cose`: Force-directed physics simulation\r\n *\r\n * 2. Some external layouts are also included. To use them, run\r\n * `dash_cytoscape.load_extra_layouts()` before creating your Dash app. Be careful about\r\n * using the extra layouts when not necessary, since they require supplementary bandwidth\r\n * for loading, which impacts the startup time of the app.\r\n * - `cose-bilkent`: https://github.com/cytoscape/cytoscape.js-cose-bilkent\r\n * - `cola`: https://github.com/cytoscape/cytoscape.js-cola\r\n * - `euler`: https://github.com/cytoscape/cytoscape.js-dagre\r\n * - `spread`: https://github.com/cytoscape/cytoscape.js-spread\r\n * - `dagre`: https://github.com/cytoscape/cytoscape.js-dagre\r\n * - `klay`: https://github.com/cytoscape/cytoscape.js-klay\r\n *\r\n * 3. The keys accepted by `layout` vary depending on the algorithm, but some\r\n * keys are accepted by all layouts:\r\n * - `fit` (boolean): Whether to render the nodes in order to fit the canvas.\r\n * - `padding` (number): Padding around the sides of the canvas, if fit is enabled.\r\n * - `animate` (boolean): Whether to animate change in position when the layout changes.\r\n * - `animationDuration` (number): Duration of animation in milliseconds, if enabled.\r\n * - `boundingBox` (dictionary): How to constrain the layout in a specific area. Keys accepted are either `x1, y1, x2, y2` or `x1, y1, w, h`, all of which receive a pixel value.\r\n *\r\n * 4. The complete list of layouts and their accepted options are available\r\n * on the [Cytoscape.js docs](http://js.cytoscape.org/#layouts). For the\r\n * external layouts, the options are listed in the \"API\" section of the\r\n * README.\r\n * Note that certain keys are not supported in Dash since the value is a\r\n * JavaScript function or a callback. Please visit [this issue](https://github.com/plotly/dash-cytoscape/issues/25)\r\n * for more information.\r\n */\n layout: _propTypes2.default.object,\n\n // Viewport Manipulation\n\n /**\r\n * Dictionary indicating the initial panning position of the graph. The\r\n * following keys are accepted:\r\n * - `x` (number): The x-coordinate of the position.\r\n * - `y` (number): The y-coordinate of the position.\r\n */\n pan: _propTypes2.default.object,\n\n /**\r\n * The initial zoom level of the graph. You can set `minZoom` and\r\n * `maxZoom` to set restrictions on the zoom level.\r\n */\n zoom: _propTypes2.default.number,\n\n // Viewport Mutability and gesture Toggling\n /**\r\n * Whether panning the graph is enabled (i.e., the position of the graph is\r\n * mutable overall).\r\n */\n panningEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether user events (e.g. dragging the graph background) are allowed to\r\n * pan the graph.\r\n */\n userPanningEnabled: _propTypes2.default.bool,\n\n /**\r\n * A minimum bound on the zoom level of the graph. The viewport can not be\r\n * scaled smaller than this zoom level.\r\n */\n minZoom: _propTypes2.default.number,\n\n /**\r\n * A maximum bound on the zoom level of the graph. The viewport can not be\r\n * scaled larger than this zoom level.\r\n */\n maxZoom: _propTypes2.default.number,\n\n /**\r\n * Whether zooming the graph is enabled (i.e., the zoom level of the graph\r\n * is mutable overall).\r\n */\n zoomingEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether user events (e.g. dragging the graph background) are allowed\r\n * to pan the graph.\r\n */\n userZoomingEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether box selection (i.e. drag a box overlay around, and release it\r\n * to select) is enabled. If enabled, the user must taphold to pan the graph.\r\n */\n boxSelectionEnabled: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be ungrabified (not grabbable by user) by\r\n * default (if true, overrides individual node state).\r\n */\n autoungrabify: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be locked (not draggable at all) by default\r\n * (if true, overrides individual node state).\r\n */\n autolock: _propTypes2.default.bool,\n\n /**\r\n * Whether nodes should be unselectified (immutable selection state) by\r\n * default (if true, overrides individual element state).\r\n */\n autounselectify: _propTypes2.default.bool,\n\n /**\r\n * Whether the layout should be refreshed when elements are added or removed.\r\n */\n autoRefreshLayout: _propTypes2.default.bool,\n\n // User Events Props\n\n /**\r\n * The complete node dictionary returned when you tap or click it. Read-only.\r\n *\r\n * 1. Node-specific items:\r\n * - `edgesData` (dictionary)\r\n * - `renderedPosition` (dictionary)\r\n * - `timeStamp` (number)\r\n *\r\n * 2. General items (for all elements):\r\n * - `classes` (string)\r\n * - `data` (dictionary)\r\n * - `grabbable` (boolean)\r\n * - `group` (string)\r\n * - `locked` (boolean)\r\n * - `position` (dictionary)\r\n * - `selectable` (boolean)\r\n * - `selected` (boolean)\r\n * - `style` (dictionary)\r\n *\r\n * 3. Items for compound nodes:\r\n * - `ancestorsData` (dictionary)\r\n * - `childrenData` (dictionary)\r\n * - `descendantsData` (dictionary)\r\n * - `parentData` (dictionary)\r\n * - `siblingsData` (dictionary)\r\n * - `isParent` (boolean)\r\n * - `isChildless` (boolean)\r\n * - `isChild` (boolean)\r\n * - `isOrphan` (boolean)\r\n * - `relativePosition` (dictionary)\r\n */\n tapNode: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of a node returned when you tap or click it. Read-only.\r\n */\n tapNodeData: _propTypes2.default.object,\n\n /**\r\n * The complete edge dictionary returned when you tap or click it. Read-only.\r\n *\r\n * 1. Edge-specific items:\r\n * - `isLoop` (boolean)\r\n * - `isSimple` (boolean)\r\n * - `midpoint` (dictionary)\r\n * - `sourceData` (dictionary)\r\n * - `sourceEndpoint` (dictionary)\r\n * - `targetData` (dictionary)\r\n * - `targetEndpoint` (dictionary)\r\n * - `timeStamp` (number)\r\n *\r\n * 2. General items (for all elements):\r\n * - `classes` (string)\r\n * - `data` (dictionary)\r\n * - `grabbable` (boolean)\r\n * - `group` (string)\r\n * - `locked` (boolean)\r\n * - `selectable` (boolean)\r\n * - `selected` (boolean)\r\n * - `style` (dictionary)\r\n */\n tapEdge: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of an edge returned when you tap or click it. Read-only.\r\n */\n tapEdgeData: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of a node returned when you hover over it. Read-only.\r\n */\n mouseoverNodeData: _propTypes2.default.object,\n\n /**\r\n * The data dictionary of an edge returned when you hover over it. Read-only.\r\n */\n mouseoverEdgeData: _propTypes2.default.object,\n\n /**\r\n * The list of data dictionaries of all selected nodes (e.g. using\r\n * Shift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only.\r\n */\n selectedNodeData: _propTypes2.default.array,\n\n /**\r\n * The list of data dictionaries of all selected edges (e.g. using\r\n * Shift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only.\r\n */\n selectedEdgeData: _propTypes2.default.array\n};\n\nCytoscape.defaultProps = {\n style: { width: '600px', height: '600px' },\n layout: { name: 'grid' },\n pan: { x: 0, y: 0 },\n zoom: 1,\n minZoom: 1e-50,\n maxZoom: 1e50,\n zoomingEnabled: true,\n userZoomingEnabled: true,\n panningEnabled: true,\n userPanningEnabled: true,\n boxSelectionEnabled: false,\n autolock: false,\n autoungrabify: false,\n autounselectify: false,\n autoRefreshLayout: true\n};\n\nexports.default = Cytoscape;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kYXNoX2N5dG9zY2FwZS8uL3NyYy9saWIvY29tcG9uZW50cy9DeXRvc2NhcGUucmVhY3QuanM/NjQyYyJdLCJuYW1lcyI6WyJDeXRvc2NhcGUiLCJwcm9wcyIsImhhbmRsZUN5IiwiYmluZCIsIl9oYW5kbGVDeUNhbGxlZCIsImV2ZW50IiwiZWxlIiwidGFyZ2V0IiwiaXNQYXJlbnQiLCJpc0NoaWxkbGVzcyIsImlzQ2hpbGQiLCJpc09ycGhhbiIsInJlbmRlcmVkUG9zaXRpb24iLCJyZWxhdGl2ZVBvc2l0aW9uIiwicGFyZW50Iiwic3R5bGUiLCJlZGdlc0RhdGEiLCJjb25uZWN0ZWRFZGdlcyIsIm1hcCIsImRhdGEiLCJjaGlsZHJlbkRhdGEiLCJjaGlsZHJlbiIsImFuY2VzdG9yc0RhdGEiLCJhbmNlc3RvcnMiLCJkZXNjZW5kYW50c0RhdGEiLCJkZXNjZW5kYW50cyIsInNpYmxpbmdzRGF0YSIsInNpYmxpbmdzIiwidGltZVN0YW1wIiwianNvbiIsImNsYXNzZXMiLCJncmFiYmFibGUiLCJncm91cCIsImxvY2tlZCIsInBvc2l0aW9uIiwic2VsZWN0ZWQiLCJzZWxlY3RhYmxlIiwicGFyZW50RGF0YSIsIm5vZGVPYmplY3QiLCJtaWRwb2ludCIsImlzTG9vcCIsImlzU2ltcGxlIiwic291cmNlRGF0YSIsInNvdXJjZSIsInNvdXJjZUVuZHBvaW50IiwidGFyZ2V0RGF0YSIsInRhcmdldEVuZHBvaW50IiwiZWRnZU9iamVjdCIsImN5IiwiX2N5Iiwid2luZG93Iiwib24iLCJnZW5lcmF0ZU5vZGUiLCJzZXRQcm9wcyIsInRhcE5vZGUiLCJ0YXBOb2RlRGF0YSIsImdlbmVyYXRlRWRnZSIsInRhcEVkZ2UiLCJ0YXBFZGdlRGF0YSIsIm1vdXNlb3Zlck5vZGVEYXRhIiwibW91c2VvdmVyRWRnZURhdGEiLCJTRUxFQ1RfVEhSRVNIT0xEIiwic2VsZWN0ZWROb2RlcyIsImNvbGxlY3Rpb24iLCJzZWxlY3RlZEVkZ2VzIiwic2VuZFNlbGVjdGVkTm9kZXNEYXRhIiwiXyIsImRlYm91bmNlIiwibm9kZURhdGEiLCJlbCIsInNlbGVjdGVkTm9kZURhdGEiLCJzZW5kU2VsZWN0ZWRFZGdlc0RhdGEiLCJlZGdlRGF0YSIsInNlbGVjdGVkRWRnZURhdGEiLCJtZXJnZSIsInVubWVyZ2UiLCJyZWZyZXNoTGF5b3V0IiwiYXV0b1JlZnJlc2hMYXlvdXQiLCJsYXlvdXQiLCJydW4iLCJpZCIsImNsYXNzTmFtZSIsImVsZW1lbnRzIiwic3R5bGVzaGVldCIsInBhbiIsInpvb20iLCJwYW5uaW5nRW5hYmxlZCIsInVzZXJQYW5uaW5nRW5hYmxlZCIsIm1pblpvb20iLCJtYXhab29tIiwiem9vbWluZ0VuYWJsZWQiLCJ1c2VyWm9vbWluZ0VuYWJsZWQiLCJib3hTZWxlY3Rpb25FbmFibGVkIiwiYXV0b3VuZ3JhYmlmeSIsImF1dG9sb2NrIiwiYXV0b3Vuc2VsZWN0aWZ5IiwiQ3l0b3NjYXBlQ29tcG9uZW50Iiwibm9ybWFsaXplRWxlbWVudHMiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJvYmplY3QiLCJmdW5jIiwiYXJyYXlPZiIsIm51bWJlciIsImJvb2wiLCJhcnJheSIsImRlZmF1bHRQcm9wcyIsIndpZHRoIiwiaGVpZ2h0IiwibmFtZSIsIngiLCJ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7OytlQVBBOzs7Ozs7QUFVQTs7OztJQUlNQSxTOzs7QUFDRix1QkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBLDBIQUNUQSxLQURTOztBQUdmLGNBQUtDLFFBQUwsR0FBZ0IsTUFBS0EsUUFBTCxDQUFjQyxJQUFkLE9BQWhCO0FBQ0EsY0FBS0MsZUFBTCxHQUF1QixLQUF2QjtBQUplO0FBS2xCOzs7O3FDQUVZQyxLLEVBQU87QUFDaEIsZ0JBQU1DLE1BQU1ELE1BQU1FLE1BQWxCOztBQUVBLGdCQUFNQyxXQUFXRixJQUFJRSxRQUFKLEVBQWpCO0FBQUEs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L0MsaUJBQWE2QyxvQkFBVUUsTUFwT0w7O0FBc09sQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE3QyxhQUFTMkMsb0JBQVVFLE1BN1BEOztBQStQbEI7OztBQUdBNUMsaUJBQWEwQyxvQkFBVUUsTUFsUUw7O0FBb1FsQjs7O0FBR0EzQyx1QkFBbUJ5QyxvQkFBVUUsTUF2UVg7O0FBeVFsQjs7O0FBR0ExQyx1QkFBbUJ3QyxvQkFBVUUsTUE1UVg7O0FBOFFsQjs7OztBQUlBaEMsc0JBQWtCOEIsb0JBQVVPLEtBbFJWOztBQW9SbEI7Ozs7QUFJQWxDLHNCQUFrQjJCLG9CQUFVTztBQXhSVixDQUF0Qjs7QUEyUkEzRyxVQUFVNEcsWUFBVixHQUF5QjtBQUNyQjdGLFdBQU8sRUFBQzhGLE9BQU8sT0FBUixFQUFpQkMsUUFBUSxPQUF6QixFQURjO0FBRXJCaEMsWUFBUSxFQUFDaUMsTUFBTSxNQUFQLEVBRmE7QUFHckIzQixTQUFLLEVBQUM0QixHQUFHLENBQUosRUFBT0MsR0FBRyxDQUFWLEVBSGdCO0FBSXJCNUIsVUFBTSxDQUplO0FBS3JCRyxhQUFTLEtBTFk7QUFNckJDLGFBQVMsSUFOWTtBQU9yQkMsb0JBQWdCLElBUEs7QUFRckJDLHdCQUFvQixJQVJDO0FBU3JCTCxvQkFBZ0IsSUFUSztBQVVyQkMsd0JBQW9CLElBVkM7QUFXckJLLHlCQUFxQixLQVhBO0FBWXJCRSxjQUFVLEtBWlc7QUFhckJELG1CQUFlLEtBYk07QUFjckJFLHFCQUFpQixLQWRJO0FBZXJCbEIsdUJBQW1CO0FBZkUsQ0FBekI7O2tCQWtCZTdFLFMiLCJmaWxlIjoiLi9zcmMvbGliL2NvbXBvbmVudHMvQ3l0b3NjYXBlLnJlYWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEphdmFTY3JpcHQgUmVxdWlyZW1lbnRzOiBjeXRvc2NhcGVcclxuICogUmVhY3QuanMgcmVxdWlyZW1lbnRzOiByZWFjdC1jeXRvc2NhcGVqc1xyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XHJcbmltcG9ydCBDeXRvc2NhcGVDb21wb25lbnQgZnJvbSAncmVhY3QtY3l0b3NjYXBlanMnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuXHJcbi8qKlxyXG5BIENvbXBvbmVudCBMaWJyYXJ5IGZvciBEYXNoIGFpbWVkIGF0IGZhY2lsaXRhdGluZyBuZXR3b3JrIHZpc3VhbGl6YXRpb24gaW5cclxuUHl0aG9uLCB3cmFwcGVkIGFyb3VuZCBbQ3l0b3NjYXBlLmpzXShodHRwOi8vanMuY3l0b3NjYXBlLm9yZy8pLlxyXG4gKi9cclxuY2xhc3MgQ3l0b3NjYXBlIGV4dGVuZHMgQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZUN5ID0gdGhpcy5oYW5kbGVDeS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZUN5Q2FsbGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVOb2RlKGV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICBjb25zdCBpc1BhcmVudCA9IGVsZS5pc1BhcmVudCgpLFxyXG4gICAgICAgICAgICBpc0NoaWxkbGVzcyA9IGVsZS5pc0NoaWxkbGVzcygpLFxyXG4gICAgICAgICAgICBpc0NoaWxkID0gZWxlLmlzQ2hpbGQoKSxcclxuICAgICAgICAgICAgaXNPcnBoYW4gPSBlbGUuaXNPcnBoYW4oKSxcclxuICAgICAgICAgICAgcmVuZGVyZWRQb3NpdGlvbiA9IGVsZS5yZW5kZXJlZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24gPSBlbGUucmVsYXRpdmVQb3NpdGlvbigpLFxyXG4gICAgICAgICAgICBwYXJlbnQgPSBlbGUucGFyZW50KCksXHJcbiAgICAgICAgICAgIHN0eWxlID0gZWxlLnN0eWxlKCk7XHJcblxyXG4gICAgICAgIC8vIFRyaW0gZG93biB0aGUgZWxlbWVudCBvYmplY3RzIHRvIG9ubHkgdGhlIGRhdGEgY29udGFpbmVkXHJcbiAgICAgICAgY29uc3QgZWRnZXNEYXRhID0gZWxlLmNvbm5lY3RlZEVkZ2VzKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2hpbGRyZW5EYXRhID0gZWxlLmNoaWxkcmVuKCkubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmRhdGEoKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgYW5jZXN0b3JzRGF0YSA9IGVsZS5hbmNlc3RvcnMoKS5tYXAoZWxlID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGUuZGF0YSgpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBkZXNjZW5kYW50c0RhdGEgPSBlbGUuZGVzY2VuZGFudHMoKS5tYXAoZWxlID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGUuZGF0YSgpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBzaWJsaW5nc0RhdGEgPSBlbGUuc2libGluZ3MoKS5tYXAoZWxlID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGUuZGF0YSgpXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCB7dGltZVN0YW1wfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgY2xhc3NlcyxcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgZ3JhYmJhYmxlLFxyXG4gICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgbG9ja2VkLFxyXG4gICAgICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICAgICAgc2VsZWN0ZWQsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGVcclxuICAgICAgICB9ID0gZWxlLmpzb24oKTtcclxuXHJcbiAgICAgICAgbGV0IHBhcmVudERhdGE7XHJcbiAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBwYXJlbnREYXRhID0gcGFyZW50LmRhdGEoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwYXJlbnREYXRhID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5vZGVPYmplY3QgPSB7XHJcbiAgICAgICAgICAgIC8vIE5vZGVzIGF0dHJpYnV0ZXNcclxuICAgICAgICAgICAgZWRnZXNEYXRhLFxyXG4gICAgICAgICAgICByZW5kZXJlZFBvc2l0aW9uLFxyXG4gICAgICAgICAgICB0aW1lU3RhbXAsXHJcbiAgICAgICAgICAgIC8vIEZyb20gZWxlLmpzb24oKVxyXG4gICAgICAgICAgICBjbGFzc2VzLFxyXG4gICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICBncmFiYmFibGUsXHJcbiAgICAgICAgICAgIGdyb3VwLFxyXG4gICAgICAgICAgICBsb2NrZWQsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZCxcclxuICAgICAgICAgICAgLy8gQ29tcG91bmQgTm9kZXMgYWRkaXRpb25hbCBhdHRyaWJ1dGVzXHJcbiAgICAgICAgICAgIGFuY2VzdG9yc0RhdGEsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuRGF0YSxcclxuICAgICAgICAgICAgZGVzY2VuZGFudHNEYXRhLFxyXG4gICAgICAgICAgICBwYXJlbnREYXRhLFxyXG4gICAgICAgICAgICBzaWJsaW5nc0RhdGEsXHJcbiAgICAgICAgICAgIGlzUGFyZW50LFxyXG4gICAgICAgICAgICBpc0NoaWxkbGVzcyxcclxuICAgICAgICAgICAgaXNDaGlsZCxcclxuICAgICAgICAgICAgaXNPcnBoYW4sXHJcbiAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24sXHJcbiAgICAgICAgICAgIC8vIFN0eWxpbmdcclxuICAgICAgICAgICAgc3R5bGVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBub2RlT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZW5lcmF0ZUVkZ2UoZXZlbnQpIHtcclxuICAgICAgICBjb25zdCBlbGUgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgICAgIGNvbnN0IG1pZHBvaW50ID0gZWxlLm1pZHBvaW50KCksXHJcbiAgICAgICAgICAgIGlzTG9vcCA9IGVsZS5pc0xvb3AoKSxcclxuICAgICAgICAgICAgaXNTaW1wbGUgPSBlbGUuaXNTaW1wbGUoKSxcclxuICAgICAgICAgICAgc291cmNlRGF0YSA9IGVsZS5zb3VyY2UoKS5kYXRhKCksXHJcbiAgICAgICAgICAgIHNvdXJjZUVuZHBvaW50ID0gZWxlLnNvdXJjZUVuZHBvaW50KCksXHJcbiAgICAgICAgICAgIHN0eWxlID0gZWxlLnN0eWxlKCksXHJcbiAgICAgICAgICAgIHRhcmdldERhdGEgPSBlbGUudGFyZ2V0KCkuZGF0YSgpLFxyXG4gICAgICAgICAgICB0YXJnZXRFbmRwb2ludCA9IGVsZS50YXJnZXRFbmRwb2ludCgpO1xyXG5cclxuICAgICAgICBjb25zdCB7dGltZVN0YW1wfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgY2xhc3NlcyxcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgZ3JhYmJhYmxlLFxyXG4gICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgbG9ja2VkLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZCxcclxuICAgICAgICB9ID0gZWxlLmpzb24oKTtcclxuXHJcbiAgICAgICAgY29uc3QgZWRnZU9iamVjdCA9IHtcclxuICAgICAgICAgICAgLy8gRWRnZXMgYXR0cmlidXRlc1xyXG4gICAgICAgICAgICBpc0xvb3AsXHJcbiAgICAgICAgICAgIGlzU2ltcGxlLFxyXG4gICAgICAgICAgICBtaWRwb2ludCxcclxuICAgICAgICAgICAgc291cmNlRGF0YSxcclxuICAgICAgICAgICAgc291cmNlRW5kcG9pbnQsXHJcbiAgICAgICAgICAgIHRhcmdldERhdGEsXHJcbiAgICAgICAgICAgIHRhcmdldEVuZHBvaW50LFxyXG4gICAgICAgICAgICB0aW1lU3RhbXAsXHJcbiAgICAgICAgICAgIC8vIEZyb20gZWxlLmpzb24oKVxyXG4gICAgICAgICAgICBjbGFzc2VzLFxyXG4gICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICBncmFiYmFibGUsXHJcbiAgICAgICAgICAgIGdyb3VwLFxyXG4gICAgICAgICAgICBsb2NrZWQsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGUsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkLFxyXG4gICAgICAgICAgICAvLyBTdHlsaW5nXHJcbiAgICAgICAgICAgIHN0eWxlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGVkZ2VPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ3koY3kpIHtcclxuICAgICAgICAvLyBJZiB0aGUgY3kgcG9pbnRlciBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGFuZCBoYW5kbGVDeSBoYXMgYWxyZWFkeVxyXG4gICAgICAgIC8vIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhhbiB3ZSBkb24ndCBydW4gdGhpcyBmdW5jdGlvbi5cclxuICAgICAgICBpZiAoY3kgPT09IHRoaXMuX2N5ICYmIHRoaXMuX2hhbmRsZUN5Q2FsbGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY3kgPSBjeTtcclxuICAgICAgICB3aW5kb3cuY3kgPSBjeTtcclxuICAgICAgICB0aGlzLl9oYW5kbGVDeUNhbGxlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIGN5Lm9uKCd0YXAnLCAnbm9kZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZU9iamVjdCA9IHRoaXMuZ2VuZXJhdGVOb2RlKGV2ZW50KTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5zZXRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRQcm9wcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFwTm9kZTogbm9kZU9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICB0YXBOb2RlRGF0YTogbm9kZU9iamVjdC5kYXRhXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjeS5vbigndGFwJywgJ2VkZ2UnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVkZ2VPYmplY3QgPSB0aGlzLmdlbmVyYXRlRWRnZShldmVudCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcEVkZ2U6IGVkZ2VPYmplY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgdGFwRWRnZURhdGE6IGVkZ2VPYmplY3QuZGF0YVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ21vdXNlb3ZlcicsICdub2RlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdXNlb3Zlck5vZGVEYXRhOiBldmVudC50YXJnZXQuZGF0YSgpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCdtb3VzZW92ZXInLCAnZWRnZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNldFByb3BzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNldFByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VzZW92ZXJFZGdlRGF0YTogZXZlbnQudGFyZ2V0LmRhdGEoKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBTRUxFQ1RFRCBEQVRBXHJcbiAgICAgICAgY29uc3QgU0VMRUNUX1RIUkVTSE9MRCA9IDEwMDtcclxuXHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlcyA9IGN5LmNvbGxlY3Rpb24oKTtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZEVkZ2VzID0gY3kuY29sbGVjdGlvbigpO1xyXG5cclxuICAgICAgICBjb25zdCBzZW5kU2VsZWN0ZWROb2Rlc0RhdGEgPSBfLmRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyByZXBldGl0aXZlbHkgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBub2RlIGlzIHNlbGVjdGVkXHJcbiAgICAgICAgICAgIG9yIHVuc2VsZWN0ZWQsIGJ1dCBrZWVwcyBiZWluZyBkZWJvdW5jZWQgaWYgaXQgaXMgY2FsbGVkIGFnYWluXHJcbiAgICAgICAgICAgIHdpdGhpbiAxMDAgbXMgKGdpdmVuIGJ5IFNFTEVDVF9USFJFU0hPTEQpLiBFZmZlY3RpdmVseSwgaXQgb25seVxyXG4gICAgICAgICAgICBydW5zIHdoZW4gYWxsIHRoZSBub2RlcyBoYXZlIGJlZW4gY29ycmVjdGx5IHNlbGVjdGVkL3Vuc2VsZWN0ZWQgYW5kXHJcbiAgICAgICAgICAgIGFkZGVkL3JlbW92ZWQgZnJvbSB0aGUgc2VsZWN0ZWROb2RlcyBjb2xsZWN0aW9uLCBhbmQgdGhlbiB1cGRhdGVzXHJcbiAgICAgICAgICAgIHRoZSBzZWxlY3RlZE5vZGVEYXRhIHByb3AuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBjb25zdCBub2RlRGF0YSA9IHNlbGVjdGVkTm9kZXMubWFwKGVsID0+IGVsLmRhdGEoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTm9kZURhdGE6IG5vZGVEYXRhXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgU0VMRUNUX1RIUkVTSE9MRCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbmRTZWxlY3RlZEVkZ2VzRGF0YSA9IF8uZGVib3VuY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlZGdlRGF0YSA9IHNlbGVjdGVkRWRnZXMubWFwKGVsID0+IGVsLmRhdGEoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuc2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0UHJvcHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWRnZURhdGE6IGVkZ2VEYXRhXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgU0VMRUNUX1RIUkVTSE9MRCk7XHJcblxyXG4gICAgICAgIGN5Lm9uKCdzZWxlY3QnLCAnbm9kZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICAgICAgc2VsZWN0ZWROb2Rlcy5tZXJnZShlbGUpO1xyXG4gICAgICAgICAgICBzZW5kU2VsZWN0ZWROb2Rlc0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ3Vuc2VsZWN0JywgJ25vZGUnLCBldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZSA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgICAgICAgIHNlbGVjdGVkTm9kZXMudW5tZXJnZShlbGUpO1xyXG4gICAgICAgICAgICBzZW5kU2VsZWN0ZWROb2Rlc0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY3kub24oJ3NlbGVjdCcsICdlZGdlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbGUgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgICAgICAgICBzZWxlY3RlZEVkZ2VzLm1lcmdlKGVsZSk7XHJcbiAgICAgICAgICAgIHNlbmRTZWxlY3RlZEVkZ2VzRGF0YSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjeS5vbigndW5zZWxlY3QnLCAnZWRnZScsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlID0gZXZlbnQudGFyZ2V0O1xyXG5cclxuICAgICAgICAgICAgc2VsZWN0ZWRFZGdlcy51bm1lcmdlKGVsZSk7XHJcbiAgICAgICAgICAgIHNlbmRTZWxlY3RlZEVkZ2VzRGF0YSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgLy8gUmVmcmVzaCBMYXlvdXQgaWYgbmVlZGVkXHJcbiAgICAgICAgY29uc3QgcmVmcmVzaExheW91dCA9IF8uZGVib3VuY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgICAgICBhdXRvUmVmcmVzaExheW91dCxcclxuICAgICAgICAgICAgICAgIGxheW91dFxyXG4gICAgICAgICAgICB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICAgICAgICAgIGlmIChhdXRvUmVmcmVzaExheW91dCkge1xyXG4gICAgICAgICAgICAgICAgY3kubGF5b3V0KGxheW91dCkucnVuKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIFNFTEVDVF9USFJFU0hPTEQpO1xyXG5cclxuICAgICAgICBjeS5vbignYWRkIHJlbW92ZScsICgpID0+IHtcclxuICAgICAgICAgICAgcmVmcmVzaExheW91dCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIC8vIEhUTUwgYXR0cmlidXRlIHByb3BzXHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICBzdHlsZSxcclxuICAgICAgICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAvLyBDb21tb24gcHJvcHNcclxuICAgICAgICAgICAgZWxlbWVudHMsXHJcbiAgICAgICAgICAgIHN0eWxlc2hlZXQsXHJcbiAgICAgICAgICAgIGxheW91dCxcclxuICAgICAgICAgICAgLy8gVmlld3BvcnQgTWFuaXB1bGF0aW9uXHJcbiAgICAgICAgICAgIHBhbixcclxuICAgICAgICAgICAgem9vbSxcclxuICAgICAgICAgICAgLy8gVmlld3BvcnQgTXV0YWJpbGl0eSBhbmQgZ2VzdHVyZSBUb2dnbGluZ1xyXG4gICAgICAgICAgICBwYW5uaW5nRW5hYmxlZCxcclxuICAgICAgICAgICAgdXNlclBhbm5pbmdFbmFibGVkLFxyXG4gICAgICAgICAgICBtaW5ab29tLFxyXG4gICAgICAgICAgICBtYXhab29tLFxyXG4gICAgICAgICAgICB6b29taW5nRW5hYmxlZCxcclxuICAgICAgICAgICAgdXNlclpvb21pbmdFbmFibGVkLFxyXG4gICAgICAgICAgICBib3hTZWxlY3Rpb25FbmFibGVkLFxyXG4gICAgICAgICAgICBhdXRvdW5ncmFiaWZ5LFxyXG4gICAgICAgICAgICBhdXRvbG9jayxcclxuICAgICAgICAgICAgYXV0b3Vuc2VsZWN0aWZ5XHJcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxDeXRvc2NhcGVDb21wb25lbnRcclxuICAgICAgICAgICAgICAgIGlkPXtpZH1cclxuICAgICAgICAgICAgICAgIGN5PXt0aGlzLmhhbmRsZUN5fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGV9XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50cz17Q3l0b3NjYXBlQ29tcG9uZW50Lm5vcm1hbGl6ZUVsZW1lbnRzKGVsZW1lbnRzKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQ9e3N0eWxlc2hlZXR9XHJcbiAgICAgICAgICAgICAgICBsYXlvdXQ9e2xheW91dH1cclxuICAgICAgICAgICAgICAgIHBhbj17cGFufVxyXG4gICAgICAgICAgICAgICAgem9vbT17em9vbX1cclxuICAgICAgICAgICAgICAgIHBhbm5pbmdFbmFibGVkPXtwYW5uaW5nRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgIHVzZXJQYW5uaW5nRW5hYmxlZD17dXNlclBhbm5pbmdFbmFibGVkfVxyXG4gICAgICAgICAgICAgICAgbWluWm9vbT17bWluWm9vbX1cclxuICAgICAgICAgICAgICAgIG1heFpvb209e21heFpvb219XHJcbiAgICAgICAgICAgICAgICB6b29taW5nRW5hYmxlZD17em9vbWluZ0VuYWJsZWR9XHJcbiAgICAgICAgICAgICAgICB1c2VyWm9vbWluZ0VuYWJsZWQ9e3VzZXJab29taW5nRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgIGJveFNlbGVjdGlvbkVuYWJsZWQ9e2JveFNlbGVjdGlvbkVuYWJsZWR9XHJcbiAgICAgICAgICAgICAgICBhdXRvdW5ncmFiaWZ5PXthdXRvdW5ncmFiaWZ5fVxyXG4gICAgICAgICAgICAgICAgYXV0b2xvY2s9e2F1dG9sb2NrfVxyXG4gICAgICAgICAgICAgICAgYXV0b3Vuc2VsZWN0aWZ5PXthdXRvdW5zZWxlY3RpZnl9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuQ3l0b3NjYXBlLnByb3BUeXBlcyA9IHtcclxuICAgIC8vIEhUTUwgYXR0cmlidXRlIHByb3BzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGlzIGNvbXBvbmVudCBpbiBEYXNoIGNhbGxiYWNrcy5cclxuICAgICAqL1xyXG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBjbGFzcyBuYW1lIG9mIHRoZSBlbGVtZW50ICh0aGUgdmFsdWUgb2YgYW4gZWxlbWVudCdzIGh0bWxcclxuICAgICAqIGNsYXNzIGF0dHJpYnV0ZSkuXHJcbiAgICAgKi9cclxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBpbmxpbmUgc3R5bGVzIHRvIHRoZSByb290IGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8vIERhc2ggc3BlY2lmaWMgcHJvcHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIERhc2gtYXNzaWduZWQgY2FsbGJhY2sgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIGFueSBvZiB0aGVcclxuICAgICAqIHByb3BlcnRpZXMgY2hhbmdlLlxyXG4gICAgICovXHJcbiAgICBzZXRQcm9wczogUHJvcFR5cGVzLmZ1bmMsXHJcblxyXG4gICAgLy8gQ29tbW9uIHByb3BzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIGxpc3Qgb2YgZGljdGlvbmFyaWVzIHJlcHJlc2VudGluZyB0aGUgZWxlbWVudHMgb2YgdGhlIG5ldHdvcmtzLlxyXG4gICAgICogICAgIDEuIEVhY2ggZGljdGlvbmFyeSBkZXNjcmliZXMgYW4gZWxlbWVudCwgYW5kIHNwZWNpZmllcyBpdHMgcHVycG9zZS5cclxuICAgICAqICAgICAgICAgLSBgZ3JvdXBgIChzdHJpbmcpOiBFaXRoZXIgJ25vZGVzJyBvciAnZWRnZXMnLiBJZiBub3QgZ2l2ZW4sIGl0J3MgYXV0b21hdGljYWxseSBpbmZlcnJlZC5cclxuICAgICAqICAgICAgICAgLSBgZGF0YWAgKGRpY3Rpb25hcnkpOiBFbGVtZW50IHNwZWNpZmljIGRhdGEuXHJcbiAgICAgKiAgICAgICAgICAgICAgLSBgaWRgIChzdHJpbmcpOiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQsIHVzZWZ1bCBmb3Igc2VsZWN0b3JzIGFuZCBlZGdlcy4gUmFuZG9tbHkgYXNzaWduZWQgaWYgbm90IGdpdmVuLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYGxhYmVsYCAoc3RyaW5nKTogT3B0aW9uYWwgbmFtZSBmb3IgdGhlIGVsZW1lbnQsIHVzZWZ1bCB3aGVuIGBkYXRhKGxhYmVsKWAgaXMgZ2l2ZW4gdG8gYSBzdHlsZSdzIGBjb250ZW50YCBvciBgbGFiZWxgLiBJdCBpcyBvbmx5IGEgY29udmVudGlvbi5cclxuICAgICAqICAgICAgICAgICAgICAtIGBwYXJlbnRgIChzdHJpbmcpOiBPbmx5IGZvciBub2Rlcy4gT3B0aW9uYWwgcmVmZXJlbmNlIHRvIGFub3RoZXIgbm9kZS4gTmVlZGVkIHRvIGNyZWF0ZSBjb21wb3VuZCBub2Rlcy5cclxuICAgICAqICAgICAgICAgICAgICAtIGBzb3VyY2VgIChzdHJpbmcpOiBPbmx5IGZvciBlZGdlcy4gVGhlIGlkIG9mIHRoZSBzb3VyY2Ugbm9kZSwgd2hpY2ggaXMgd2hlcmUgdGhlIGVkZ2Ugc3RhcnRzLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHRhcmdldGAgKHN0cmluZyk6IE9ubHkgZm9yIGVkZ2VzLiBUaGUgaWQgb2YgdGhlIHRhcmdldCBub2RlLCB3aGVyZSB0aGUgZWRnZSBlbmRzLlxyXG4gICAgICogICAgICAgICAtIGBwb3NpdGlvbmAgKGRpY3Rpb25hcnkpOiBPbmx5IGZvciBub2Rlcy4gVGhlIHBvc2l0aW9uIG9mIHRoZSBub2RlLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHhgIChudW1iZXIpOiBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBub2RlLlxyXG4gICAgICogICAgICAgICAgICAgIC0gYHlgIChudW1iZXIpOiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBub2RlLlxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RlZGAgKGJvb2xlYW4pOiBJZiB0aGUgZWxlbWVudCBpcyBzZWxlY3RlZCB1cG9uIGluaXRpYWxpc2F0aW9uLlxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RhYmxlYCAoYm9vbGVhbik6IElmIHRoZSBlbGVtZW50IGNhbiBiZSBzZWxlY3RlZC5cclxuICAgICAqICAgICAgICAgLSBgbG9ja2VkYCAoYm9vbGVhbik6IE9ubHkgZm9yIG5vZGVzLiBJZiB0aGUgcG9zaXRpb24gaXMgaW1tdXRhYmxlLlxyXG4gICAgICogICAgICAgICAtIGBncmFiYmFibGVgIChib29sZWFuKTogT25seSBmb3Igbm9kZXMuIElmIHRoZSBub2RlIGNhbiBiZSBncmFiYmVkIGFuZCBtb3ZlZCBieSB0aGUgdXNlci5cclxuICAgICAqICAgICAgICAgLSBgY2xhc3Nlc2AgKHN0cmluZyk6IFNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgb2YgY2xhc3MgbmFtZXMgb2YgdGhlIGVsZW1lbnQuIFRob3NlIGNsYXNzZXMgY2FuIGJlIHNlbGVjdGVkIGJ5IGEgc3R5bGUgc2VsZWN0b3IuXHJcbiAgICAgKlxyXG4gICAgICogICAgIDIuIFRoZSBbb2ZmaWNpYWwgQ3l0b3NjYXBlLmpzIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9qcy5jeXRvc2NhcGUub3JnLyNub3RhdGlvbi9lbGVtZW50cy1qc29uKSBvZmZlcnMgYW4gZXh0ZW5zaXZlIG92ZXJ2aWV3IGFuZCBleGFtcGxlcyBvZiBlbGVtZW50IGRlY2xhcmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBlbGVtZW50czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIGxpc3Qgb2YgZGljdGlvbmFyaWVzIHJlcHJlc2VudGluZyB0aGUgc3R5bGVzIG9mIHRoZSBlbGVtZW50cy5cclxuICAgICAqICAgICAxLiBFYWNoIGRpY3Rpb25hcnkgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyBrZXlzOlxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RvcmAgKHN0cmluZyk6IFdoaWNoIGVsZW1lbnRzIHlvdSBhcmUgc3R5bGluZy4gR2VuZXJhbGx5LCB5b3Ugc2VsZWN0IGEgZ3JvdXAgb2YgZWxlbWVudHMgKG5vZGUsIGVkZ2VzLCBib3RoKSwgYSBjbGFzcyAodGhhdCB5b3UgZGVjbGFyZSBpbiB0aGUgZWxlbWVudCBkaWN0aW9uYXJ5KSwgb3IgYW4gZWxlbWVudCBieSBJRC5cclxuICAgICAqICAgICAgICAgLSBgc3R5bGVgIChkaWN0aW9uYXJ5KTogV2hhdCBhc3BlY3RzIG9mIHRoZSBlbGVtZW50cyB5b3Ugd2FudCB0byBtb2RpZnkuIFRoaXMgY291bGQgYmUgdGhlIHNpemUgb3IgY29sb3Igb2YgYSBub2RlLCB0aGUgc2hhcGUgb2YgYW4gZWRnZSBhcnJvdywgb3IgbWFueSBtb3JlLlxyXG4gICAgICpcclxuICAgICAqICAgICAyLiBCb3RoIFt0aGUgc2VsZWN0b3Igc3RyaW5nXShodHRwOi8vanMuY3l0b3NjYXBlLm9yZy8jc2VsZWN0b3JzKSBhbmRcclxuICAgICAqICAgICBbdGhlIHN0eWxlIGRpY3Rpb25hcnldKGh0dHA6Ly9qcy5jeXRvc2NhcGUub3JnLyNzdHlsZS9ub2RlLWJvZHkpIGFyZVxyXG4gICAgICogICAgIGV4aGF1c3RpdmVseSBkb2N1bWVudGVkIGluIHRoZSBDeXRvc2NhcGUuanMgZG9jcy4gQWx0aG91Z2ggbWV0aG9kcyBzdWNoXHJcbiAgICAgKiAgICAgYXMgYGN5LmVsZW1lbnRzKC4uLilgIGFuZCBgY3kuZmlsdGVyKC4uLilgIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgc2VsZWN0b3JcclxuICAgICAqICAgICBzdHJpbmcgc3ludGF4IHN0YXlzIHRoZSBzYW1lLlxyXG4gICAgICovXHJcbiAgICBzdHlsZXNoZWV0OiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgZGljdGlvbmFyeSBzcGVjaWZ5aW5nIGhvdyB0byBzZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB5b3VyXHJcbiAgICAgKiBncmFwaC4gVGhlIGAnbmFtZSdgIGtleSBpcyByZXF1aXJlZCwgYW5kIGluZGljYXRlcyB3aGljaCBsYXlvdXQgKGFsZ29yaXRobSkgdG9cclxuICAgICAqIHVzZS5cclxuICAgICAqICAgICAxLiBUaGUgbGF5b3V0cyBhdmFpbGFibGUgYnkgZGVmYXVsdCBhcmU6XHJcbiAgICAgKiAgICAgICAgIC0gYHJhbmRvbWA6IFJhbmRvbWx5IGFzc2lnbnMgcG9zaXRpb25zXHJcbiAgICAgKiAgICAgICAgIC0gYHByZXNldGA6IEFzc2lnbnMgcG9zaXRpb24gYmFzZWQgb24gdGhlIGBwb3NpdGlvbmAga2V5IGluIGVsZW1lbnQgZGljdGlvbmFyaWVzXHJcbiAgICAgKiAgICAgICAgIC0gYGNpcmNsZWA6IFNpbmdsZS1sZXZlbCBjaXJjbGUsIHdpdGggb3B0aW9uYWwgcmFkaXVzXHJcbiAgICAgKiAgICAgICAgIC0gYGNvbmNlbnRyaWNgOiBNdWx0aS1sZXZlbCBjaXJjbGUsIHdpdGggb3B0aW9uYWwgcmFkaXVzXHJcbiAgICAgKiAgICAgICAgIC0gYGdyaWRgOiBTcXVhcmUgZ3JpZCwgb3B0aW9uYWxseSB3aXRoIG51bWJlcnMgb2YgYHJvd3NgIGFuZCBgY29sc2BcclxuICAgICAqICAgICAgICAgLSBgYnJlYWR0aGZpcnN0YDogVHJlZSBzdHJ1Y3R1cmUgYnVpbHQgdXNpbmcgQkZTLCB3aXRoIG9wdGlvbmFsIGByb290c2BcclxuICAgICAqICAgICAgICAgLSBgY29zZWA6IEZvcmNlLWRpcmVjdGVkIHBoeXNpY3Mgc2ltdWxhdGlvblxyXG4gICAgICpcclxuICAgICAqICAgICAyLiBTb21lIGV4dGVybmFsIGxheW91dHMgYXJlIGFsc28gaW5jbHVkZWQuIFRvIHVzZSB0aGVtLCBydW5cclxuICAgICAqICAgICBgZGFzaF9jeXRvc2NhcGUubG9hZF9leHRyYV9sYXlvdXRzKClgIGJlZm9yZSBjcmVhdGluZyB5b3VyIERhc2ggYXBwLiBCZSBjYXJlZnVsIGFib3V0XHJcbiAgICAgKiAgICAgdXNpbmcgdGhlIGV4dHJhIGxheW91dHMgd2hlbiBub3QgbmVjZXNzYXJ5LCBzaW5jZSB0aGV5IHJlcXVpcmUgc3VwcGxlbWVudGFyeSBiYW5kd2lkdGhcclxuICAgICAqICAgICBmb3IgbG9hZGluZywgd2hpY2ggaW1wYWN0cyB0aGUgc3RhcnR1cCB0aW1lIG9mIHRoZSBhcHAuXHJcbiAgICAgKiAgICAgICAgIC0gYGNvc2UtYmlsa2VudGA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLWNvc2UtYmlsa2VudFxyXG4gICAgICogICAgICAgICAtIGBjb2xhYDogaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMtY29sYVxyXG4gICAgICogICAgICAgICAtIGBldWxlcmA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLWRhZ3JlXHJcbiAgICAgKiAgICAgICAgIC0gYHNwcmVhZGA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLXNwcmVhZFxyXG4gICAgICogICAgICAgICAtIGBkYWdyZWA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzLWRhZ3JlXHJcbiAgICAgKiAgICAgICAgIC0gYGtsYXlgOiBodHRwczovL2dpdGh1Yi5jb20vY3l0b3NjYXBlL2N5dG9zY2FwZS5qcy1rbGF5XHJcbiAgICAgKlxyXG4gICAgICogICAgIDMuIFRoZSBrZXlzIGFjY2VwdGVkIGJ5IGBsYXlvdXRgIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBhbGdvcml0aG0sIGJ1dCBzb21lXHJcbiAgICAgKiAgICAga2V5cyBhcmUgYWNjZXB0ZWQgYnkgYWxsIGxheW91dHM6XHJcbiAgICAgKiAgICAgICAgIC0gYGZpdGAgKGJvb2xlYW4pOiBXaGV0aGVyIHRvIHJlbmRlciB0aGUgbm9kZXMgaW4gb3JkZXIgdG8gZml0IHRoZSBjYW52YXMuXHJcbiAgICAgKiAgICAgICAgIC0gYHBhZGRpbmdgIChudW1iZXIpOiBQYWRkaW5nIGFyb3VuZCB0aGUgc2lkZXMgb2YgdGhlIGNhbnZhcywgaWYgZml0IGlzIGVuYWJsZWQuXHJcbiAgICAgKiAgICAgICAgIC0gYGFuaW1hdGVgIChib29sZWFuKTogV2hldGhlciB0byBhbmltYXRlIGNoYW5nZSBpbiBwb3NpdGlvbiB3aGVuIHRoZSBsYXlvdXQgY2hhbmdlcy5cclxuICAgICAqICAgICAgICAgLSBgYW5pbWF0aW9uRHVyYXRpb25gIChudW1iZXIpOiBEdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbWlsbGlzZWNvbmRzLCBpZiBlbmFibGVkLlxyXG4gICAgICogICAgICAgICAtIGBib3VuZGluZ0JveGAgKGRpY3Rpb25hcnkpOiBIb3cgdG8gY29uc3RyYWluIHRoZSBsYXlvdXQgaW4gYSBzcGVjaWZpYyBhcmVhLiBLZXlzIGFjY2VwdGVkIGFyZSBlaXRoZXIgYHgxLCB5MSwgeDIsIHkyYCBvciBgeDEsIHkxLCB3LCBoYCwgYWxsIG9mIHdoaWNoIHJlY2VpdmUgYSBwaXhlbCB2YWx1ZS5cclxuICAgICAqXHJcbiAgICAgKiAgICAgNC4gVGhlIGNvbXBsZXRlIGxpc3Qgb2YgbGF5b3V0cyBhbmQgdGhlaXIgYWNjZXB0ZWQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlXHJcbiAgICAgKiAgICAgb24gdGhlIFtDeXRvc2NhcGUuanMgZG9jc10oaHR0cDovL2pzLmN5dG9zY2FwZS5vcmcvI2xheW91dHMpLiBGb3IgdGhlXHJcbiAgICAgKiAgICAgZXh0ZXJuYWwgbGF5b3V0cywgdGhlIG9wdGlvbnMgYXJlIGxpc3RlZCBpbiB0aGUgXCJBUElcIiBzZWN0aW9uIG9mIHRoZVxyXG4gICAgICogICAgIFJFQURNRS5cclxuICAgICAqICAgICBOb3RlIHRoYXQgY2VydGFpbiBrZXlzIGFyZSBub3Qgc3VwcG9ydGVkIGluIERhc2ggc2luY2UgdGhlIHZhbHVlIGlzIGFcclxuICAgICAqICAgICBKYXZhU2NyaXB0IGZ1bmN0aW9uIG9yIGEgY2FsbGJhY2suIFBsZWFzZSB2aXNpdCBbdGhpcyBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL3Bsb3RseS9kYXNoLWN5dG9zY2FwZS9pc3N1ZXMvMjUpXHJcbiAgICAgKiAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXHJcbiAgICAgKi9cclxuICAgIGxheW91dDogUHJvcFR5cGVzLm9iamVjdCxcclxuXHJcbiAgICAvLyBWaWV3cG9ydCBNYW5pcHVsYXRpb25cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpY3Rpb25hcnkgaW5kaWNhdGluZyB0aGUgaW5pdGlhbCBwYW5uaW5nIHBvc2l0aW9uIG9mIHRoZSBncmFwaC4gVGhlXHJcbiAgICAgKiBmb2xsb3dpbmcga2V5cyBhcmUgYWNjZXB0ZWQ6XHJcbiAgICAgKiAgICAgLSBgeGAgKG51bWJlcik6IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIHBvc2l0aW9uLlxyXG4gICAgICogICAgIC0gYHlgIChudW1iZXIpOiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBwb3NpdGlvbi5cclxuICAgICAqL1xyXG4gICAgcGFuOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGluaXRpYWwgem9vbSBsZXZlbCBvZiB0aGUgZ3JhcGguIFlvdSBjYW4gc2V0IGBtaW5ab29tYCBhbmRcclxuICAgICAqIGBtYXhab29tYCB0byBzZXQgcmVzdHJpY3Rpb25zIG9uIHRoZSB6b29tIGxldmVsLlxyXG4gICAgICovXHJcbiAgICB6b29tOiBQcm9wVHlwZXMubnVtYmVyLFxyXG5cclxuICAgIC8vIFZpZXdwb3J0IE11dGFiaWxpdHkgYW5kIGdlc3R1cmUgVG9nZ2xpbmdcclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBwYW5uaW5nIHRoZSBncmFwaCBpcyBlbmFibGVkIChpLmUuLCB0aGUgcG9zaXRpb24gb2YgdGhlIGdyYXBoIGlzXHJcbiAgICAgKiBtdXRhYmxlIG92ZXJhbGwpLlxyXG4gICAgICovXHJcbiAgICBwYW5uaW5nRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHVzZXIgZXZlbnRzIChlLmcuIGRyYWdnaW5nIHRoZSBncmFwaCBiYWNrZ3JvdW5kKSBhcmUgYWxsb3dlZCB0b1xyXG4gICAgICogcGFuIHRoZSBncmFwaC5cclxuICAgICAqL1xyXG4gICAgdXNlclBhbm5pbmdFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgbWluaW11bSBib3VuZCBvbiB0aGUgem9vbSBsZXZlbCBvZiB0aGUgZ3JhcGguIFRoZSB2aWV3cG9ydCBjYW4gbm90IGJlXHJcbiAgICAgKiBzY2FsZWQgc21hbGxlciB0aGFuIHRoaXMgem9vbSBsZXZlbC5cclxuICAgICAqL1xyXG4gICAgbWluWm9vbTogUHJvcFR5cGVzLm51bWJlcixcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgbWF4aW11bSBib3VuZCBvbiB0aGUgem9vbSBsZXZlbCBvZiB0aGUgZ3JhcGguIFRoZSB2aWV3cG9ydCBjYW4gbm90IGJlXHJcbiAgICAgKiBzY2FsZWQgbGFyZ2VyIHRoYW4gdGhpcyB6b29tIGxldmVsLlxyXG4gICAgICovXHJcbiAgICBtYXhab29tOiBQcm9wVHlwZXMubnVtYmVyLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB6b29taW5nIHRoZSBncmFwaCBpcyBlbmFibGVkIChpLmUuLCB0aGUgem9vbSBsZXZlbCBvZiB0aGUgZ3JhcGhcclxuICAgICAqIGlzIG11dGFibGUgb3ZlcmFsbCkuXHJcbiAgICAgKi9cclxuICAgIHpvb21pbmdFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdXNlciBldmVudHMgKGUuZy4gZHJhZ2dpbmcgdGhlIGdyYXBoIGJhY2tncm91bmQpIGFyZSBhbGxvd2VkXHJcbiAgICAgKiB0byBwYW4gdGhlIGdyYXBoLlxyXG4gICAgICovXHJcbiAgICB1c2VyWm9vbWluZ0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBib3ggc2VsZWN0aW9uIChpLmUuIGRyYWcgYSBib3ggb3ZlcmxheSBhcm91bmQsIGFuZCByZWxlYXNlIGl0XHJcbiAgICAgKiB0byBzZWxlY3QpIGlzIGVuYWJsZWQuIElmIGVuYWJsZWQsIHRoZSB1c2VyIG11c3QgdGFwaG9sZCB0byBwYW4gdGhlIGdyYXBoLlxyXG4gICAgICovXHJcbiAgICBib3hTZWxlY3Rpb25FbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgbm9kZXMgc2hvdWxkIGJlIHVuZ3JhYmlmaWVkIChub3QgZ3JhYmJhYmxlIGJ5IHVzZXIpIGJ5XHJcbiAgICAgKiBkZWZhdWx0IChpZiB0cnVlLCBvdmVycmlkZXMgaW5kaXZpZHVhbCBub2RlIHN0YXRlKS5cclxuICAgICAqL1xyXG4gICAgYXV0b3VuZ3JhYmlmeTogUHJvcFR5cGVzLmJvb2wsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIG5vZGVzIHNob3VsZCBiZSBsb2NrZWQgKG5vdCBkcmFnZ2FibGUgYXQgYWxsKSBieSBkZWZhdWx0XHJcbiAgICAgKiAoaWYgdHJ1ZSwgb3ZlcnJpZGVzIGluZGl2aWR1YWwgbm9kZSBzdGF0ZSkuXHJcbiAgICAgKi9cclxuICAgIGF1dG9sb2NrOiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgbm9kZXMgc2hvdWxkIGJlIHVuc2VsZWN0aWZpZWQgKGltbXV0YWJsZSBzZWxlY3Rpb24gc3RhdGUpIGJ5XHJcbiAgICAgKiBkZWZhdWx0IChpZiB0cnVlLCBvdmVycmlkZXMgaW5kaXZpZHVhbCBlbGVtZW50IHN0YXRlKS5cclxuICAgICAqL1xyXG4gICAgYXV0b3Vuc2VsZWN0aWZ5OiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdGhlIGxheW91dCBzaG91bGQgYmUgcmVmcmVzaGVkIHdoZW4gZWxlbWVudHMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuXHJcbiAgICAgKi9cclxuICAgIGF1dG9SZWZyZXNoTGF5b3V0OiBQcm9wVHlwZXMuYm9vbCxcclxuXHJcbiAgICAvLyBVc2VyIEV2ZW50cyBQcm9wc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbXBsZXRlIG5vZGUgZGljdGlvbmFyeSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuIFJlYWQtb25seS5cclxuICAgICAqXHJcbiAgICAgKiAgICAgMS4gTm9kZS1zcGVjaWZpYyBpdGVtczpcclxuICAgICAqICAgICAgICAgLSBgZWRnZXNEYXRhYCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgcmVuZGVyZWRQb3NpdGlvbmAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHRpbWVTdGFtcGAgKG51bWJlcilcclxuICAgICAqXHJcbiAgICAgKiAgICAgMi4gR2VuZXJhbCBpdGVtcyAoZm9yIGFsbCBlbGVtZW50cyk6XHJcbiAgICAgKiAgICAgICAgIC0gYGNsYXNzZXNgIChzdHJpbmcpXHJcbiAgICAgKiAgICAgICAgIC0gYGRhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBncmFiYmFibGVgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBncm91cGAgKHN0cmluZylcclxuICAgICAqICAgICAgICAgLSBgbG9ja2VkYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgcG9zaXRpb25gIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RhYmxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgc2VsZWN0ZWRgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzdHlsZWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKlxyXG4gICAgICogICAgIDMuIEl0ZW1zIGZvciBjb21wb3VuZCBub2RlczpcclxuICAgICAqICAgICAgICAgLSBgYW5jZXN0b3JzRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGNoaWxkcmVuRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGRlc2NlbmRhbnRzRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHBhcmVudERhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBzaWJsaW5nc0RhdGFgIChkaWN0aW9uYXJ5KVxyXG4gICAgICogICAgICAgICAtIGBpc1BhcmVudGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzQ2hpbGRsZXNzYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgaXNDaGlsZGAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGlzT3JwaGFuYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgcmVsYXRpdmVQb3NpdGlvbmAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKi9cclxuICAgIHRhcE5vZGU6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSBkaWN0aW9uYXJ5IG9mIGEgbm9kZSByZXR1cm5lZCB3aGVuIHlvdSB0YXAgb3IgY2xpY2sgaXQuIFJlYWQtb25seS5cclxuICAgICAqL1xyXG4gICAgdGFwTm9kZURhdGE6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29tcGxldGUgZWRnZSBkaWN0aW9uYXJ5IHJldHVybmVkIHdoZW4geW91IHRhcCBvciBjbGljayBpdC4gUmVhZC1vbmx5LlxyXG4gICAgICpcclxuICAgICAqICAgICAxLiBFZGdlLXNwZWNpZmljIGl0ZW1zOlxyXG4gICAgICogICAgICAgICAtIGBpc0xvb3BgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBpc1NpbXBsZWAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYG1pZHBvaW50YCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgc291cmNlRGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHNvdXJjZUVuZHBvaW50YCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgdGFyZ2V0RGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYHRhcmdldEVuZHBvaW50YCAoZGljdGlvbmFyeSlcclxuICAgICAqICAgICAgICAgLSBgdGltZVN0YW1wYCAobnVtYmVyKVxyXG4gICAgICpcclxuICAgICAqICAgICAyLiBHZW5lcmFsIGl0ZW1zIChmb3IgYWxsIGVsZW1lbnRzKTpcclxuICAgICAqICAgICAgICAgLSBgY2xhc3Nlc2AgKHN0cmluZylcclxuICAgICAqICAgICAgICAgLSBgZGF0YWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKiAgICAgICAgIC0gYGdyYWJiYWJsZWAgKGJvb2xlYW4pXHJcbiAgICAgKiAgICAgICAgIC0gYGdyb3VwYCAoc3RyaW5nKVxyXG4gICAgICogICAgICAgICAtIGBsb2NrZWRgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzZWxlY3RhYmxlYCAoYm9vbGVhbilcclxuICAgICAqICAgICAgICAgLSBgc2VsZWN0ZWRgIChib29sZWFuKVxyXG4gICAgICogICAgICAgICAtIGBzdHlsZWAgKGRpY3Rpb25hcnkpXHJcbiAgICAgKi9cclxuICAgIHRhcEVkZ2U6IFByb3BUeXBlcy5vYmplY3QsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSBkaWN0aW9uYXJ5IG9mIGFuIGVkZ2UgcmV0dXJuZWQgd2hlbiB5b3UgdGFwIG9yIGNsaWNrIGl0LiBSZWFkLW9ubHkuXHJcbiAgICAgKi9cclxuICAgIHRhcEVkZ2VEYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRhdGEgZGljdGlvbmFyeSBvZiBhIG5vZGUgcmV0dXJuZWQgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdC4gUmVhZC1vbmx5LlxyXG4gICAgICovXHJcbiAgICBtb3VzZW92ZXJOb2RlRGF0YTogUHJvcFR5cGVzLm9iamVjdCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkYXRhIGRpY3Rpb25hcnkgb2YgYW4gZWRnZSByZXR1cm5lZCB3aGVuIHlvdSBob3ZlciBvdmVyIGl0LiBSZWFkLW9ubHkuXHJcbiAgICAgKi9cclxuICAgIG1vdXNlb3ZlckVkZ2VEYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxpc3Qgb2YgZGF0YSBkaWN0aW9uYXJpZXMgb2YgYWxsIHNlbGVjdGVkIG5vZGVzIChlLmcuIHVzaW5nXHJcbiAgICAgKiBTaGlmdCtDbGljayB0byBzZWxlY3QgbXVsdGlwbGUgbm9kZXMsIG9yIFNoaWZ0K0RyYWcgdG8gdXNlIGJveCBzZWxlY3Rpb24pLiBSZWFkLW9ubHkuXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdGVkTm9kZURhdGE6IFByb3BUeXBlcy5hcnJheSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsaXN0IG9mIGRhdGEgZGljdGlvbmFyaWVzIG9mIGFsbCBzZWxlY3RlZCBlZGdlcyAoZS5nLiB1c2luZ1xyXG4gICAgICogU2hpZnQrQ2xpY2sgdG8gc2VsZWN0IG11bHRpcGxlIG5vZGVzLCBvciBTaGlmdCtEcmFnIHRvIHVzZSBib3ggc2VsZWN0aW9uKS4gUmVhZC1vbmx5LlxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZEVkZ2VEYXRhOiBQcm9wVHlwZXMuYXJyYXlcclxufTtcclxuXHJcbkN5dG9zY2FwZS5kZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBzdHlsZToge3dpZHRoOiAnNjAwcHgnLCBoZWlnaHQ6ICc2MDBweCd9LFxyXG4gICAgbGF5b3V0OiB7bmFtZTogJ2dyaWQnfSxcclxuICAgIHBhbjoge3g6IDAsIHk6IDB9LFxyXG4gICAgem9vbTogMSxcclxuICAgIG1pblpvb206IDFlLTUwLFxyXG4gICAgbWF4Wm9vbTogMWU1MCxcclxuICAgIHpvb21pbmdFbmFibGVkOiB0cnVlLFxyXG4gICAgdXNlclpvb21pbmdFbmFibGVkOiB0cnVlLFxyXG4gICAgcGFubmluZ0VuYWJsZWQ6IHRydWUsXHJcbiAgICB1c2VyUGFubmluZ0VuYWJsZWQ6IHRydWUsXHJcbiAgICBib3hTZWxlY3Rpb25FbmFibGVkOiBmYWxzZSxcclxuICAgIGF1dG9sb2NrOiBmYWxzZSxcclxuICAgIGF1dG91bmdyYWJpZnk6IGZhbHNlLFxyXG4gICAgYXV0b3Vuc2VsZWN0aWZ5OiBmYWxzZSxcclxuICAgIGF1dG9SZWZyZXNoTGF5b3V0OiB0cnVlXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDeXRvc2NhcGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/lib/components/Cytoscape.react.js\n"); /***/ }), diff --git a/dash_cytoscape/dash_cytoscape_extra.min.js b/dash_cytoscape/dash_cytoscape_extra.min.js index 496d1785..e285b92d 100644 --- a/dash_cytoscape/dash_cytoscape_extra.min.js +++ b/dash_cytoscape/dash_cytoscape_extra.min.js @@ -12,7 +12,7 @@ https://tldrlegal.com/license/mit-license https://github.com/jquery/jquery/blob/master/src/event.js */var r=function(t,e){this.recycle(t,e)};function i(){return!1}function o(){return!0}r.prototype={instanceString:function(){return"event"},recycle:function(t,e){if(this.isImmediatePropagationStopped=this.isPropagationStopped=this.isDefaultPrevented=i,null!=t&&t.preventDefault?(this.type=t.type,this.isDefaultPrevented=t.defaultPrevented?o:i):null!=t&&t.type?e=t:this.type=t,null!=e&&(this.originalEvent=e.originalEvent,this.type=null!=e.type?e.type:this.type,this.cy=e.cy,this.target=e.target,this.position=e.position,this.renderedPosition=e.renderedPosition,this.namespace=e.namespace,this.layout=e.layout),null!=this.cy&&null!=this.position&&null==this.renderedPosition){var n=this.position,r=this.cy.zoom(),a=this.cy.pan();this.renderedPosition={x:n.x*r+a.x,y:n.y*r+a.y}}this.timeStamp=t&&t.timeStamp||Date.now()},preventDefault:function(){this.isDefaultPrevented=o;var t=this.originalEvent;t&&t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.isPropagationStopped=o;var t=this.originalEvent;t&&t.stopPropagation&&t.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=o,this.stopPropagation()},isDefaultPrevented:i,isPropagationStopped:i,isImmediatePropagationStopped:i},t.exports=r},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e){var n=t.cy().hasCompoundNodes();function i(t){var e=t.pstyle("z-compound-depth");return"auto"===e.value?n?t.zDepth():0:"bottom"===e.value?-1:"top"===e.value?r.MAX_INT:0}var o=i(t)-i(e);if(0!==o)return o;function a(t){return"auto"===t.pstyle("z-index-compare").value&&t.isNode()?1:0}var s=a(t)-a(e);if(0!==s)return s;var c=t.pstyle("z-index").value-e.pstyle("z-index").value;return 0!==c?c:t.poolIndex()-e.poolIndex()}},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(6),a=function t(e){if(!(this instanceof t))return new t(e);r.core(e)?(this._private={cy:e,coreStyle:{}},this.length=0,this.resetToDefault()):i.error("A style must have a core reference")},s=a.prototype;s.instanceString=function(){return"style"},s.clear=function(){for(var t=0;t=t.deqFastCost*v)break}else if(o){if(p>=t.deqCost*u||p>=t.deqAvgCost*c)break}else if(g>=t.deqNoDrawCost*(1e3/60))break;var b=t.deq(e,h,f);if(!(b.length>0))break;for(var y=0;y0&&(t.onDeqd(e,l),!o&&t.shouldRedraw(e,l,h,f)&&i())},o(e))}}}}},function(t,e,n){"use strict";var r=n(0),i=n(12),o=n(94),a=n(136),s=function(t){return void 0===t&&(t={}),r.plainObject(t)?new i(t):r.string(t)?o.apply(o,arguments):void 0};s.use=function(t){var e=Array.prototype.slice.call(arguments,1);return e.unshift(s),t.apply(null,e),this},s.version=n(137),s.stylesheet=s.Stylesheet=a,t.exports=s},function(t,e,n){"use strict";var r=n(0);t.exports={hex2tuple:function(t){if((4===t.length||7===t.length)&&"#"===t[0]){var e=void 0,n=void 0,r=void 0;return 4===t.length?(e=parseInt(t[1]+t[1],16),n=parseInt(t[2]+t[2],16),r=parseInt(t[3]+t[3],16)):(e=parseInt(t[1]+t[2],16),n=parseInt(t[3]+t[4],16),r=parseInt(t[5]+t[6],16)),[e,n,r]}},hsl2tuple:function(t){var e=void 0,n=void 0,r=void 0,i=void 0,o=void 0,a=void 0,s=void 0,c=void 0;function u(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}var l=new RegExp("^"+this.regex.hsla+"$").exec(t);if(l){if((n=parseInt(l[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(l[2]))<0||r>100)return;if(r/=100,(i=parseFloat(l[3]))<0||i>100)return;if(i/=100,void 0!==(o=l[4])&&((o=parseFloat(o))<0||o>1))return;if(0===r)a=s=c=Math.round(255*i);else{var f=i<.5?i*(1+r):i+r-i*r,h=2*i-f;a=Math.round(255*u(h,f,n+1/3)),s=Math.round(255*u(h,f,n)),c=Math.round(255*u(h,f,n-1/3))}e=[a,s,c,o]}return e},rgb2tuple:function(t){var e=void 0,n=new RegExp("^"+this.regex.rgba+"$").exec(t);if(n){e=[];for(var r=[],i=1;i<=3;i++){var o=n[i];if("%"===o[o.length-1]&&(r[i]=!0),o=parseFloat(o),r[i]&&(o=o/100*255),o<0||o>255)return;e.push(Math.floor(o))}var a=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(a&&!s)return;var c=n[4];if(void 0!==c){if((c=parseFloat(c))<0||c>1)return;e.push(c)}}return e},colorname2tuple:function(t){return this.colors[t.toLowerCase()]},color2tuple:function(t){return(r.array(t)?t:null)||this.colorname2tuple(t)||this.hex2tuple(t)||this.rgb2tuple(t)||this.hsl2tuple(t)},colors:{transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}},function(t,e,n){"use strict";var r=n(0);t.exports={mapEmpty:function(t){return null==t||0===Object.keys(t).length},pushMap:function(t){var e=this.getMap(t);null==e?this.setMap(this.extend({},t,{value:[t.value]})):e.push(t.value)},setMap:function(t){for(var e=t.map,n=t.keys,i=n.length,o=0;oe?1:0}t.exports={sort:{ascending:r,descending:function(t,e){return-1*r(t,e)}}}},function(t,e,n){"use strict";function r(){this._obj={}}var i=r.prototype;i.set=function(t,e){this._obj[t]=e},i.delete=function(t){this._obj[t]=null},i.has=function(t){return null!=this._obj[t]},i.get=function(t){return this._obj[t]},t.exports=r},function(t,e,n){"use strict";var r=n(1),i={};[n(30),n(31),n(33),n(34),n(35),n(36),n(37),n(38),n(39),n(40),n(41)].forEach(function(t){r.extend(i,t)}),t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return t={bfs:t.bfs||!t.dfs,dfs:t.dfs||!t.bfs},function(e,n,i){var o;r.plainObject(e)&&!r.elementOrCollection(e)&&(e=(o=e).roots||o.root,n=o.visit,i=o.directed),i=2!==arguments.length||r.fn(n)?i:n,n=r.fn(n)?n:function(){};for(var a,s=this._private.cy,c=e=r.string(e)?this.filter(e):e,u=[],l=[],f={},h={},d={},p=0,g=this.nodes(),v=this.edges(),b=0;b0;){var w=g.pop(),m=d(w),x=w.id();if(l[x]=m,m!==1/0){var _=w.neighborhood().intersect(h);for(v=0;v<_.length;v++){var E=_[v],k=E.id(),S=y(w,E),T=m+S.dist;T0)for(n.unshift(e);u[i.id()];){var o=u[i.id()];n.unshift(o.edge),n.unshift(o.node),i=o.node}return a.collection(n)}}}};t.exports=o},function(t,e){t.exports=n},function(t,e,n){"use strict";var r=n(0),i={kruskal:function(t){var e=this.cy();function n(t){for(var e=0;e0;){var w=n(d,b),m=i.getElementById(d[w]),x=m.id();if(y++,x==f){var _=e(l,f,p,[]);return{found:!0,distance:v[x],path:this.spawn(_),steps:y}}h.push(x),d.splice(w,1);for(var E=m._private.edges,k=0;ky&&(l[v][b]=y,d[v][b]=b,p[v][b]=o[u])}if(!i)for(u=0;uy&&(l[v][b]=y,d[v][b]=b,p[v][b]=o[u])}for(var w=0;wl&&(l=e)},h=function(t){return u[t]},d=0;d0?S.edgesTo(k)[0]:k.edgesTo(S)[0]);k=k.id(),w[k]>w[_]+T&&(w[k]=w[_]+T,m.nodes.indexOf(k)<0?m.push(k):m.updateItem(k),y[k]=0,b[k]=[]),w[k]==w[_]+T&&(y[k]=y[k]+y[_],b[k].push(_))}else for(E=0;E0;)for(k=v.pop(),E=0;E0:void 0}},clearQueue:function(){return function(){var t=void 0!==this.length?this:[this];if(!(this._private.cy||this).styleEnabled())return this;for(var e=0;e0&&this.spawn(n).updateStyle().emit("class"),e},addClass:function(t){return this.toggleClass(t,!0)},hasClass:function(t){var e=this[0];return null!=e&&e._private.classes.has(t)},toggleClass:function(t,e){for(var n=t.match(/\S+/g)||[],r=[],i=0,o=this.length;i0&&this.spawn(r).updateStyle().emit("class"),this},removeClass:function(t){return this.toggleClass(t,!1)},flashClass:function(t,e){var n=this;if(null==e)e=250;else if(0===e)return n;return n.addClass(t),setTimeout(function(){n.removeClass(t)},e),n}};t.exports=i},function(t,e,n){"use strict";n(0);var r=n(6),i={allAre:function(t){var e=new r(t);return this.every(function(t){return e.matches(t)})},is:function(t){var e=new r(t);return this.some(function(t){return e.matches(t)})},some:function(t,e){for(var n=0;n\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:'"(?:\\\\"|[^"])*"|'+"'(?:\\\\'|[^'])*'",number:n(1).regex.number,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};r.variable="(?:[\\w-]|(?:\\\\"+r.metaChar+"))+",r.value=r.string+"|"+r.number,r.className=r.variable,r.id=r.variable,function(){var t=void 0,e=void 0,n=void 0;for(t=r.comparatorOp.split("|"),n=0;n=0||"="!==e&&(r.comparatorOp+="|\\!"+e)}(),t.exports=r},function(t,e,n){"use strict";var r=n(15).stateSelectorMatches,i=n(0),o=function(t,e){for(var n=!0,r=0;r=0&&(f=f.toLowerCase(),h=h.toLowerCase(),a=a.replace("@",""),d=!0);var p=!1;a.indexOf("!")>=0&&(a=a.replace("!",""),p=!0),d&&(s=h.toLowerCase(),l=f.toLowerCase());var g=!1;switch(a){case"*=":u=f.indexOf(h)>=0;break;case"$=":u=f.indexOf(h,f.length-h.length)>=0;break;case"^=":u=0===f.indexOf(h);break;case"=":u=l===s;break;case">":g=!0,u=l>s;break;case">=":g=!0,u=l>=s;break;case"<":g=!0,u=l0;){var l=o.shift();e(l),a.add(l.id()),s&&i(o,a,l)}return t}function a(t,e,n){if(n.isParent())for(var r=n._private.children,i=0;i1&&void 0!==arguments[1])||arguments[1],a)},i.forEachUp=function(t){return o(this,t,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s)},i.forEachUpAndDown=function(t){return o(this,t,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],c)},i.ancestors=i.parents,t.exports=i},function(t,e,n){"use strict";var r,i=n(4),o=void 0;(o=r={data:i.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:i.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:i.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:i.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:i.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:i.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var t=this[0];if(t)return t._private.data.id}}).attr=o.data,o.removeAttr=o.removeData,t.exports=r},function(t,e,n){"use strict";var r=n(1),i={};function o(t){return function(e){if(void 0===e&&(e=!0),0!==this.length&&this.isNode()&&!this.removed()){for(var n=0,r=this[0],i=r._private.edges,o=0;oe}),minIndegree:a("indegree",function(t,e){return te}),minOutdegree:a("outdegree",function(t,e){return te})}),r.extend(i,{totalDegree:function(t){for(var e=0,n=this.nodes(),r=0;r0,f=l;l&&(u=u[0]);var h=f?u.position():{x:0,y:0};return i={x:c.x-h.x,y:c.y-h.y},void 0===t?i:i[t]}for(var d=0;d0,b=v;v&&(g=g[0]);var y=b?g.position():{x:0,y:0};void 0!==e?p.position(t,e+y[t]):void 0!==i&&p.position({x:i.x+y.x,y:i.y+y.y})}}else if(!a)return;return this}}).modelPosition=s.point=s.position,s.modelPositions=s.points=s.positions,s.renderedPoint=s.renderedPosition,s.relativePoint=s.relativePosition,t.exports=r},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(2),a=void 0,s=void 0;a=s={},s.renderedBoundingBox=function(t){var e=this.boundingBox(t),n=this.cy(),r=n.zoom(),i=n.pan(),o=e.x1*r+i.x,a=e.x2*r+i.x,s=e.y1*r+i.y,c=e.y2*r+i.y;return{x1:o,x2:a,y1:s,y2:c,w:a-o,h:c-s}},s.dirtyCompoundBoundsCache=function(){var t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp(function(t){t._private.compoundBoundsClean=!1,t.isParent()&&t.emit("bounds")}),this):this},s.updateCompoundBounds=function(){var t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(t.batching())return this;var e=[];function n(t){if(t.isParent()){var n=t._private,r=t.children(),i="include"===t.pstyle("compound-sizing-wrt-labels").value,o={width:{val:t.pstyle("min-width").pfValue,left:t.pstyle("min-width-bias-left"),right:t.pstyle("min-width-bias-right")},height:{val:t.pstyle("min-height").pfValue,top:t.pstyle("min-height-bias-top"),bottom:t.pstyle("min-height-bias-bottom")}},a=r.boundingBox({includeLabels:i,includeOverlays:!1,useCache:!1}),s=n.position;0!==a.w&&0!==a.h||((a={w:t.pstyle("width").pfValue,h:t.pstyle("height").pfValue}).x1=s.x-a.w/2,a.x2=s.x+a.w/2,a.y1=s.y-a.h/2,a.y2=s.y+a.h/2);var c=o.width.left.value;"px"===o.width.left.units&&o.width.val>0&&(c=100*c/o.width.val);var u=o.width.right.value;"px"===o.width.right.units&&o.width.val>0&&(u=100*u/o.width.val);var l=o.height.top.value;"px"===o.height.top.units&&o.height.val>0&&(l=100*l/o.height.val);var f=o.height.bottom.value;"px"===o.height.bottom.units&&o.height.val>0&&(f=100*f/o.height.val);var h=y(o.width.val-a.w,c,u),d=h.biasDiff,p=h.biasComplementDiff,g=y(o.height.val-a.h,l,f),v=g.biasDiff,b=g.biasComplementDiff;n.autoPadding=function(t,e,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return t>0?n.pfValue*t:0;case"height":return e>0?n.pfValue*e:0;case"average":return t>0&&e>0?n.pfValue*(t+e)/2:0;case"min":return t>0&&e>0?t>e?n.pfValue*e:n.pfValue*t:0;case"max":return t>0&&e>0?t>e?n.pfValue*t:n.pfValue*e:0;default:return 0}}(a.w,a.h,t.pstyle("padding"),t.pstyle("padding-relative-to").value),n.autoWidth=Math.max(a.w,o.width.val),s.x=(-d+a.x1+a.x2+p)/2,n.autoHeight=Math.max(a.h,o.height.val),s.y=(-v+a.y1+a.y2+b)/2,e.push(t)}function y(t,e,n){var r=0,i=0,o=e+n;return t>0&&o>0&&(r=e/o*t,i=n/o*t),{biasDiff:r,biasComplementDiff:i}}}for(var r=0;rt.x2?r:t.x2,t.y1=nt.y2?i:t.y2)},l=function(t,e,n){return i.getPrefixedProperty(t,e,n)},f=function(t,e,n){if(!e.cy().headless()){var r=e._private.rstyle,i=r.arrowWidth/2,o=void 0,a=void 0;"none"!==e.pstyle(n+"-arrow-shape").value&&("source"===n?(o=r.srcX,a=r.srcY):"target"===n?(o=r.tgtX,a=r.tgtY):(o=r.midX,a=r.midY),u(t,o-i,a-i,o+i,a+i))}},h=function(t,e,n){if(!e.cy().headless()){var r=void 0;r=n?n+"-":"";var i=e._private,o=i.rstyle;if(e.pstyle(r+"label").strValue){var a=e.pstyle("text-halign"),s=e.pstyle("text-valign"),c=l(o,"labelWidth",n),f=l(o,"labelHeight",n),h=l(o,"labelX",n),d=l(o,"labelY",n),p=e.pstyle(r+"text-margin-x").pfValue,g=e.pstyle(r+"text-margin-y").pfValue,v=e.isEdge(),b=e.pstyle(r+"text-rotation"),y=e.pstyle("text-outline-width").pfValue,w=e.pstyle("text-border-width").pfValue/2,m=e.pstyle("text-background-padding").pfValue,x=f+2*m,_=c+2*m,E=_/2,k=x/2,S=void 0,T=void 0,j=void 0,O=void 0;if(v)S=h-E,T=h+E,j=d-k,O=d+k;else{switch(a.value){case"left":S=h-_,T=h;break;case"center":S=h-E,T=h+E;break;case"right":S=h,T=h+_}switch(s.value){case"top":j=d-x,O=d;break;case"center":j=d-k,O=d+k;break;case"bottom":j=d,O=d+x}}var C=v&&"autorotate"===b.strValue,P=null!=b.pfValue&&0!==b.pfValue;if(C||P){var N=C?l(i.rstyle,"labelAngle",n):b.pfValue,L=Math.cos(N),A=Math.sin(N),I=function(t,e){return{x:(t-=h)*L-(e-=d)*A+h,y:t*A+e*L+d}},D=I(S,j),M=I(S,O),R=I(T,j),G=I(T,O);S=Math.min(D.x,M.x,R.x,G.x),T=Math.max(D.x,M.x,R.x,G.x),j=Math.min(D.y,M.y,R.y,G.y),O=Math.max(D.y,M.y,R.y,G.y)}S+=p-Math.max(y,w),T+=p+Math.max(y,w),j+=g-Math.max(y,w),O+=g+Math.max(y,w),u(t,S,j,T,O)}return t}},d=function(t){return t?"t":"f"},p=function(t){var e="";return e+=d(t.incudeNodes),e+=d(t.includeEdges),e+=d(t.includeLabels),e+=d(t.includeOverlays)},g=function(t,e){var n=t._private,r=void 0,i=t.cy().headless(),a=e===v?b:p(e);return e.useCache&&!i&&n.bbCache&&n.bbCache[a]?r=n.bbCache[a]:(r=function(t,e){var n=t._private.cy,r=n.styleEnabled(),i=n.headless(),a={x1:1/0,y1:1/0,x2:-1/0,y2:-1/0},s=t._private,l=r?t.pstyle("display").value:"element",d=t.isNode(),p=t.isEdge(),g=void 0,v=void 0,b=void 0,y=void 0,w=void 0,m=void 0,x="none"!==l;if(x){var _=0;r&&e.includeOverlays&&0!==t.pstyle("overlay-opacity").value&&(_=t.pstyle("overlay-padding").value);var E=0;if(r&&(E=t.pstyle("width").pfValue/2),d&&e.includeNodes){var k=t.position();w=k.x,m=k.y;var S=t.outerWidth()/2,T=t.outerHeight()/2;u(a,g=w-S-_,b=m-T-_,v=w+S+_,y=m+T+_)}else if(p&&e.includeEdges){var j=s.rstyle||{};if(r&&!i&&(g=Math.min(j.srcX,j.midX,j.tgtX),v=Math.max(j.srcX,j.midX,j.tgtX),b=Math.min(j.srcY,j.midY,j.tgtY),y=Math.max(j.srcY,j.midY,j.tgtY),u(a,g-=E,b-=E,v+=E,y+=E)),r&&!i&&"haystack"===t.pstyle("curve-style").strValue){var O=j.haystackPts||[];if(g=O[0].x,b=O[0].y,g>(v=O[1].x)){var C=g;g=v,v=C}if(b>(y=O[1].y)){var P=b;b=y,y=P}u(a,g-E,b-E,v+E,y+E)}else{for(var N=j.bezierPts||j.linePts||[],L=0;L(v=D.x)){var M=g;g=v,v=M}if((b=I.y)>(y=D.y)){var R=b;b=y,y=R}u(a,g-=E,b-=E,v+=E,y+=E)}}}if(r&&e.includeEdges&&p&&(f(a,t,"mid-source"),f(a,t,"mid-target"),f(a,t,"source"),f(a,t,"target")),r&&"yes"===t.pstyle("ghost").value){var G=t.pstyle("ghost-offset-x").pfValue,B=t.pstyle("ghost-offset-y").pfValue;u(a,a.x1+G,a.y1+B,a.x2+G,a.y2+B)}r&&(g=a.x1,v=a.x2,b=a.y1,y=a.y2,u(a,g-_,b-_,v+_,y+_)),r&&e.includeLabels&&(h(a,t,null),p&&(h(a,t,"source"),h(a,t,"target")))}return a.x1=c(a.x1),a.y1=c(a.y1),a.x2=c(a.x2),a.y2=c(a.y2),a.w=c(a.x2-a.x1),a.h=c(a.y2-a.y1),a.w>0&&a.h>0&&x&&o.expandBoundingBox(a,1),a}(t,e),i||(n.bbCache=n.bbCache||{},n.bbCache[a]=r)),r},v={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeOverlays:!0,useCache:!0},b=p(v);function y(t){return{includeNodes:i.default(t.includeNodes,v.includeNodes),includeEdges:i.default(t.includeEdges,v.includeEdges),includeLabels:i.default(t.includeLabels,v.includeLabels),includeOverlays:i.default(t.includeOverlays,v.includeOverlays),useCache:i.default(t.useCache,v.useCache)}}s.boundingBox=function(t){if(1===this.length&&this[0]._private.bbCache&&(void 0===t||void 0===t.useCache||!0===t.useCache))return t=void 0===t?v:y(t),g(this[0],t);var e={x1:1/0,y1:1/0,x2:-1/0,y2:-1/0},n=y(t=t||i.staticEmptyObject()),r=this.cy().styleEnabled();r&&this.recalculateRenderedStyle(n.useCache),this.updateCompoundBounds();for(var o,a,s={},l=0;l1&&!a){var s=this.length-1,c=this[s],u=c._private.data.id;this[s]=void 0,this[o]=c,r.set(u,{ele:c,index:o})}return this.length--,this},unmerge:function(t){var e=this._private.cy;if(!t)return this;if(t&&r.string(t)){var n=t;t=e.mutableElements().filter(n)}for(var i=0;in&&(n=a,r=o)}return{value:n,ele:r}},min:function(t,e){for(var n=1/0,r=void 0,i=0;i=0&&i0&&e.push(l[0]),e.push(s[0])}return this.spawn(e,{unique:!0}).filter(t)},"neighborhood"),closedNeighborhood:function(t){return this.neighborhood().add(this).filter(t)},openNeighborhood:function(t){return this.neighborhood(t)}}),o.neighbourhood=o.neighborhood,o.closedNeighbourhood=o.closedNeighborhood,o.openNeighbourhood=o.openNeighborhood,r.extend(o,{source:a(function(t){var e=this[0],n=void 0;return e&&(n=e._private.source||e.cy().collection()),n&&t?n.filter(t):n},"source"),target:a(function(t){var e=this[0],n=void 0;return e&&(n=e._private.target||e.cy().collection()),n&&t?n.filter(t):n},"target"),sources:l({attr:"source"}),targets:l({attr:"target"})}),r.extend(o,{edgesWith:a(f(),"edgesWith"),edgesTo:a(f({thisIsSrc:!0}),"edgesTo")}),r.extend(o,{connectedEdges:a(function(t){for(var e=[],n=0;n0);return i.map(function(t){var e=t.connectedEdges().stdFilter(function(e){return t.anySame(e.source())&&t.anySame(e.target())});return t.union(e)})}}),t.exports=o},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(7),a=n(14),s={add:function(t){var e=void 0,n=this;if(r.elementOrCollection(t)){var s=t;if(s._private.cy===n)e=s.restore();else{for(var c=[],u=0;u=0;e--)(0,t[e])();t.splice(0,t.length)},d=s.length-1;d>=0;d--){var p=s[d],g=p._private;g.stopped?(s.splice(d,1),g.hooked=!1,g.playing=!1,g.started=!1,h(g.frames)):(g.playing||g.applying)&&(g.playing&&g.applying&&(g.applying=!1),g.started||i(e,p,t,n),r(e,p,t,n),g.applying&&(g.applying=!1),h(g.frames),p.completed()&&(s.splice(d,1),g.hooked=!1,g.playing=!1,g.started=!1,h(g.completes)),u=!0)}return n||0!==s.length||0!==c.length||o.push(e),u}for(var s=!1,c=0;c0?(n.dirtyCompoundBoundsCache(),e.notify({type:"draw",eles:n})):e.notify({type:"draw"})),n.unmerge(o),e.emit("step")}},function(t,e,n){"use strict";var r=n(73),i=n(76),o=n(0);function a(t,e){return null!=t&&null!=e&&(!(!o.number(t)||!o.number(e))||!(!t||!e))}t.exports=function(t,e,n,s){var c=!s,u=t._private,l=e._private,f=l.easing,h=l.startTime,d=(s?t:t.cy()).style();if(!l.easingImpl)if(null==f)l.easingImpl=r.linear;else{var p=void 0;p=o.string(f)?d.parse("transition-timing-function",f).value:f;var g=void 0,v=void 0;o.string(p)?(g=p,v=[]):(g=p[1],v=p.slice(2).map(function(t){return+t})),v.length>0?("spring"===g&&v.push(l.duration),l.easingImpl=r[g].apply(null,v)):l.easingImpl=r[g]}var b=l.easingImpl,y=void 0;if(y=0===l.duration?1:(n-h)/l.duration,l.applying&&(y=l.progress),y<0?y=0:y>1&&(y=1),null==l.delay){var w=l.startPosition,m=l.position;if(m&&c&&!t.locked()){var x=t.position();a(w.x,m.x)&&(x.x=i(w.x,m.x,y,b)),a(w.y,m.y)&&(x.y=i(w.y,m.y,y,b)),t.emit("position")}var _=l.startPan,E=l.pan,k=u.pan,S=null!=E&&s;S&&(a(_.x,E.x)&&(k.x=i(_.x,E.x,y,b)),a(_.y,E.y)&&(k.y=i(_.y,E.y,y,b)),t.emit("pan"));var T=l.startZoom,j=l.zoom,O=null!=j&&s;O&&(a(T,j)&&(u.zoom=i(T,j,y,b)),t.emit("zoom")),(S||O)&&t.emit("viewport");var C=l.style;if(C&&C.length>0&&c){for(var P=0;P=o?function(e,r){for(var o=0;o0?i=c:r=c}while(Math.abs(o)>a&&++u1e-4&&Math.abs(l.v)>1e-4;);return o?function(t){return s[t*(s.length-1)|0]}:c}}();t.exports=r},function(t,e,n){"use strict";var r=n(0);function i(t,e,n,r,i){if(1===r)return n;var o=i(e,n,r);return null==t?o:((t.roundValue||t.color)&&(o=Math.round(o)),void 0!==t.min&&(o=Math.max(o,t.min)),void 0!==t.max&&(o=Math.min(o,t.max)),o)}function o(t,e){return null!=t.pfValue||null!=t.value?null==t.pfValue||null!=e&&"%"===e.type.units?t.value:t.pfValue:t}t.exports=function(t,e,n,a,s){var c=null!=s?s.type:null;n<0?n=0:n>1&&(n=1);var u=o(t,s),l=o(e,s);if(r.number(u)&&r.number(l))return i(c,u,l,n,a);if(r.array(u)&&r.array(l)){for(var f=[],h=0;h0},startBatch:function(){var t=this._private;return null==t.batchCount&&(t.batchCount=0),0===t.batchCount&&(t.batchingStyle=t.batchingNotify=!0,t.batchStyleEles=this.collection(),t.batchNotifyEles=this.collection(),t.batchNotifyTypes=[],t.batchNotifyTypes.ids={}),t.batchCount++,this},endBatch:function(){var t=this._private;return t.batchCount--,0===t.batchCount&&(t.batchingStyle=!1,t.batchStyleEles.updateStyle(),t.batchingNotify=!1,this.notify({type:t.batchNotifyTypes,eles:t.batchNotifyEles})),this},batch:function(t){return this.startBatch(),t(),this.endBatch(),this},batchData:function(t){var e=this;return this.batch(function(){for(var n=Object.keys(t),r=0;r0;)t.removeChild(t.childNodes[0]);this._private.renderer=null},onRender:function(t){return this.on("render",t)},offRender:function(t){return this.off("render",t)}};i.invalidateDimensions=i.resize,t.exports=i},function(t,e,n){"use strict";var r=n(0),i=n(7),o={collection:function(t,e){return r.string(t)?this.$(t):r.elementOrCollection(t)?t.collection():r.array(t)?new i(this,t,e):new i(this)},nodes:function(t){var e=this.$(function(t){return t.isNode()});return t?e.filter(t):e},edges:function(t){var e=this.$(function(t){return t.isEdge()});return t?e.filter(t):e},$:function(t){var e=this._private.elements;return t?e.filter(t):e.spawnSelf()},mutableElements:function(){return this._private.elements}};o.elements=o.filter=o.$,t.exports=o},function(t,e,n){"use strict";var r=n(0),i=n(18),o={style:function(t){t&&this.setStyle(t).update();return this._private.style},setStyle:function(t){var e=this._private;return r.stylesheet(t)?e.style=t.generateStyle(this):r.array(t)?e.style=i.fromJson(this,t):r.string(t)?e.style=i.fromString(this,t):e.style=i(this),e.style}};t.exports=o},function(t,e,n){"use strict";var r=n(1),i=n(0),o=n(5),a={apply:function(t){var e=this._private,n=e.cy.collection();e.newStyle&&(e.contextStyles={},e.propDiffs={},this.cleanElements(t,!0));for(var r=0;r0;if(u||l){var f=void 0;u&&l?f=c.properties:u?f=c.properties:l&&(f=c.mappedProperties);for(var h=0;h0){n=!0;break}}e.hasPie=n;var i=t.pstyle("text-transform").strValue,o=t.pstyle("label").strValue,a=t.pstyle("source-label").strValue,s=t.pstyle("target-label").strValue,c=t.pstyle("font-style").strValue,u=t.pstyle("font-size").pfValue+"px",l=t.pstyle("font-family").strValue,f=t.pstyle("font-weight").strValue,h=c+"$"+u+"$"+l+"$"+f+"$"+i+"$"+t.pstyle("text-valign").strValue+"$"+t.pstyle("text-valign").strValue+"$"+t.pstyle("text-outline-width").pfValue+"$"+t.pstyle("text-wrap").strValue+"$"+t.pstyle("text-max-width").pfValue;e.labelStyleKey=h,e.sourceLabelKey=h+"$"+a,e.targetLabelKey=h+"$"+s,e.labelKey=h+"$"+o,e.fontKey=c+"$"+f+"$"+u+"$"+l,e.styleKey=Date.now()}},applyParsedProperty:function(t,e){var n=this,o=e,a=t._private.style,s=void 0,c=n.types,u=n.properties[o.name].type,l=o.bypass,f=a[o.name],h=f&&f.bypass,d=t._private,p=function(){n.checkZOrderTrigger(t,o.name,f?f.value:null,o.value)};if("curve-style"===e.name&&"haystack"===e.value&&t.isEdge()&&(t.isLoop()||t.source().isParent()||t.target().isParent())&&(o=e=this.parse(e.name,"bezier",l)),o.delete)return a[o.name]=void 0,p(),!0;if(o.deleteBypassed)return f?!!f.bypass&&(f.bypassed=void 0,p(),!0):(p(),!0);if(o.deleteBypass)return f?!!f.bypass&&(a[o.name]=f.bypassed,p(),!0):(p(),!0);var g=function(){r.error("Do not assign mappings to elements without corresponding data (e.g. ele `"+t.id()+"` for property `"+o.name+"` with data field `"+o.field+"`); try a `["+o.field+"]` selector to limit scope to elements with `"+o.field+"` defined")};switch(o.mapped){case c.mapData:for(var v=o.field.split("."),b=d.data,y=0;y1&&(w=1),u.color){var m=o.valueMin[0],x=o.valueMax[0],_=o.valueMin[1],E=o.valueMax[1],k=o.valueMin[2],S=o.valueMax[2],T=null==o.valueMin[3]?1:o.valueMin[3],j=null==o.valueMax[3]?1:o.valueMax[3],O=[Math.round(m+(x-m)*w),Math.round(_+(E-_)*w),Math.round(k+(S-k)*w),Math.round(T+(j-T)*w)];s={bypass:o.bypass,name:o.name,value:O,strValue:"rgb("+O[0]+", "+O[1]+", "+O[2]+")"}}else{if(!u.number)return!1;var C=o.valueMin+(o.valueMax-o.valueMin)*w;s=this.parse(o.name,C,o.bypass,"mapping")}s||(s=this.parse(o.name,f.strValue,o.bypass,"mapping")),s||g(),s.mapping=o,o=s;break;case c.data:var P=o.field.split("."),N=d.data;if(N)for(var L=0;L0&&c>0){for(var l={},f=!1,h=0;h0?t.delayAnimation(u).play().promise().then(e):e()}).then(function(){return t.animation({style:l,duration:c,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,s),t.emitAndNotify("style"),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(t,s),t.emitAndNotify("style"),a.transitioning=!1)},checkZOrderTrigger:function(t,e,n,r){var i=this.properties[e];null==i.triggersZOrder||null!=n&&!i.triggersZOrder(n,r)||this._private.cy.notify({type:"zorder",eles:t})}};t.exports=a},function(t,e,n){"use strict";var r=n(0),i=n(1),o={applyBypass:function(t,e,n,o){var a=[];if("*"===e||"**"===e){if(void 0!==n)for(var s=0;sn.length?e.substr(n.length):""}function c(){o=o.length>a.length?o.substr(a.length):""}for(e=e.replace(/[\/][*](\s|.)+?[*][\/]/g,"");;){if(e.match(/^\s*$/))break;var u=e.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!u){r.error("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+e);break}n=u[0];var l=u[1];if("core"!==l)if(new i(l)._private.invalid){r.error("Skipping parsing of block: Invalid selector found in string stylesheet: "+l),s();continue}var f=u[2],h=!1;o=f;for(var d=[];;){if(o.match(/^\s*$/))break;var p=o.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!p){r.error("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+f),h=!0;break}a=p[0];var g=p[1],v=p[2];if(this.properties[g])this.parse(g,v)?(d.push({name:g,val:v}),c()):(r.error("Skipping property: Invalid property definition in: "+a),c());else r.error("Skipping property: Invalid property name in: "+a),c()}if(h){s();break}this.selector(l);for(var b=0;b node").css({shape:"rectangle",padding:10,"background-color":"#eee","border-color":"#ccc","border-width":1}).selector("edge").css({width:3,"curve-style":"haystack"}).selector(":parent <-> node").css({"curve-style":"bezier","source-endpoint":"outside-to-line","target-endpoint":"outside-to-line"}).selector(":selected").css({"background-color":"#0169D9","line-color":"#0169D9","source-arrow-color":"#0169D9","target-arrow-color":"#0169D9","mid-source-arrow-color":"#0169D9","mid-target-arrow-color":"#0169D9"}).selector("node:parent:selected").css({"background-color":"#CCE1F9","border-color":"#aec8e5"}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}).selector("core").css({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":30,"outside-texture-bg-color":"#000","outside-texture-bg-opacity":.125}),this.defaultLength=this.length},t.exports=o},function(t,e,n){"use strict";var r=n(1),i=n(0),o=n(2),a={parse:function(t,e,n,o){if(i.fn(e))return this.parseImplWarn(t,e,n,o);var a=[t,e,n,"mapping"===o||!0===o||!1===o||null==o?"dontcare":o].join("$"),s=this.propCache=this.propCache||{},c=void 0;return(c=s[a])||(c=s[a]=this.parseImplWarn(t,e,n,o)),(n||"mapping"===o)&&(c=r.copy(c))&&(c.value=r.copy(c.value)),c},parseImplWarn:function(t,e,n,i){var o=this.parseImpl(t,e,n,i);return o||null==e||r.error("The style property `%s: %s` is invalid",t,e),o},parseImpl:function(t,e,n,a){t=r.camel2dash(t);var s=this.properties[t],c=e,u=this.types;if(!s)return null;if(void 0===e)return null;s.alias&&(s=s.pointsTo,t=s.name);var l=i.string(e);l&&(e=e.trim());var f=s.type;if(!f)return null;if(n&&(""===e||null===e))return{name:t,value:e,bypass:!0,deleteBypass:!0};if(i.fn(e))return{name:t,value:e,strValue:"fn",mapped:u.fn,bypass:n};var h=void 0,d=void 0;if(!l||a);else{if(h=new RegExp(u.data.regex).exec(e)){if(n)return!1;var p=u.data;return{name:t,value:h,strValue:""+e,mapped:p,field:h[1],bypass:n}}if(d=new RegExp(u.mapData.regex).exec(e)){if(n)return!1;if(f.multiple)return!1;var g=u.mapData;if(!f.color&&!f.number)return!1;var v=this.parse(t,d[4]);if(!v||v.mapped)return!1;var b=this.parse(t,d[5]);if(!b||b.mapped)return!1;if(v.value===b.value)return!1;if(f.color){var y=v.value,w=b.value;if(!(y[0]!==w[0]||y[1]!==w[1]||y[2]!==w[2]||y[3]!==w[3]&&(null!=y[3]&&1!==y[3]||null!=w[3]&&1!==w[3])))return!1}return{name:t,value:d,strValue:""+e,mapped:g,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:v.value,valueMax:b.value,bypass:n}}}if(f.multiple&&"multiple"!==a){var m=void 0;if(m=l?e.split(/\s+/):i.array(e)?e:[e],f.evenMultiple&&m.length%2!=0)return null;for(var x=[],_=[],E=[],k=!1,S=0;Sf.max||f.strictMax&&e===f.max))return null;var L={name:t,value:e,strValue:""+e+(O||""),units:O,bypass:n};return f.unitless||"px"!==O&&"em"!==O?L.pfValue=e:L.pfValue="px"!==O&&O?this.getEmSizeInPixels()*e:e,"ms"!==O&&"s"!==O||(L.pfValue="ms"===O?e:1e3*e),"deg"!==O&&"rad"!==O||(L.pfValue="rad"===O?e:o.deg2rad(e)),"%"===O&&(L.pfValue=e/100),L}if(f.propList){var A=[],I=""+e;if("none"===I);else{for(var D=I.split(","),M=0;M0&&s>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:c=(c=(c=Math.min((a-2*e)/n.w,(s-2*e)/n.h))>this._private.maxZoom?this._private.maxZoom:c)e.maxZoom?e.maxZoom:s)e.maxZoom||!e.zoomingEnabled?a=!0:(e.zoom=c,o.push("zoom"))}if(i&&(!a||!t.cancelOnFailedZoom)&&e.panningEnabled){var u=t.pan;r.number(u.x)&&(e.pan.x=u.x,s=!1),r.number(u.y)&&(e.pan.y=u.y,s=!1),s||o.push("pan")}return o.length>0&&(o.push("viewport"),this.emit(o.join(" ")),this.notify({type:"viewport"})),this},center:function(t){var e=this.getCenterPan(t);return e&&(this._private.pan=e,this.emit("pan viewport"),this.notify({type:"viewport"})),this},getCenterPan:function(t,e){if(this._private.panningEnabled){if(r.string(t)){var n=t;t=this.mutableElements().filter(n)}else r.elementOrCollection(t)||(t=this.mutableElements());if(0!==t.length){var i=t.boundingBox(),o=this.width(),a=this.height();return{x:(o-(e=void 0===e?this._private.zoom:e)*(i.x1+i.x2))/2,y:(a-e*(i.y1+i.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var t,e,n=this._private,r=n.container;return n.sizeCache=n.sizeCache||(r?(t=i.getComputedStyle(r),e=function(e){return parseFloat(t.getPropertyValue(e))},{width:r.clientWidth-e("padding-left")-e("padding-right"),height:r.clientHeight-e("padding-top")-e("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var t=this._private.pan,e=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-t.x)/e,x2:(n.x2-t.x)/e,y1:(n.y1-t.y)/e,y2:(n.y2-t.y)/e};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var t=this.width(),e=this.height();return{x1:0,y1:0,x2:t,y2:e,w:t,h:e}}};a.centre=a.center,a.autolockNodes=a.autolock,a.autoungrabifyNodes=a.autoungrabify,t.exports=a},function(t,e,n){"use strict";var r=n(1),i=n(4),o=n(7),a=n(12),s=n(95),c=n(0),u=n(11),l={},f={};function h(t,e,n){var s=n,f=function(n){r.error("Can not register `"+e+"` for `"+t+"` since `"+n+"` already exists in the prototype and can not be overridden")};if("core"===t){if(a.prototype[e])return f(e);a.prototype[e]=n}else if("collection"===t){if(o.prototype[e])return f(e);o.prototype[e]=n}else if("layout"===t){for(var h=function(t){this.options=t,n.call(this,t),c.plainObject(this._private)||(this._private={}),this._private.cy=t.cy,this._private.listeners=[],this.createEmitter()},p=h.prototype=Object.create(n.prototype),g=[],v=0;v0;)v();u=n.collection();for(var b=function(t){var e=p[t],n=e.maxDegree(!1),r=e.filter(function(t){return t.degree(!1)===n});u=u.add(r)},y=0;yw.length-1;)w.push([]);w[K].push($),Z.depth=K,Z.index=w[K].length-1}M()}var J=0;if(e.avoidOverlap)for(var tt=0;ttu||0===e)&&(r+=c/l,i++)}return r/=i=Math.max(1,i),0===i&&(r=void 0),it[t.id()]=r,r},at=function(t,e){return ot(t)-ot(e)},st=0;st<3;st++){for(var ct=0;ct0&&w[0].length<=3?l/2:0),h=2*Math.PI/w[i].length*o;return 0===i&&1===w[0].length&&(f=1),{x:ft+f*Math.cos(h),y:ht+f*Math.sin(h)}}return{x:ft+(o+1-(a+1)/2)*s,y:(i+1)*u}}var d={x:ft+(o+1-(a+1)/2)*s,y:(i+1)*u};return d},pt={},gt=w.length-1;gt>=0;gt--)for(var vt=w[gt],bt=0;bt1&&e.avoidOverlap){d*=1.75;var y=Math.cos(f)-Math.cos(0),w=Math.sin(f)-Math.sin(0),m=Math.sqrt(d*d/(y*y+w*w));h=Math.max(m,h)}return s.layoutPositions(this,e,function(t,n){var r=e.startAngle+n*f*(a?1:-1),i=h*Math.cos(r),o=h*Math.sin(r);return{x:u+i,y:l+o}}),this},t.exports=s},function(t,e,n){"use strict";var r=n(1),i=n(2),o={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(t){return t.degree()},levelWidth:function(t){return t.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(t,e){return!0},ready:void 0,stop:void 0,transform:function(t,e){return e}};function a(t){this.options=r.extend({},o,t)}a.prototype.run=function(){for(var t=this.options,e=t,n=void 0!==e.counterclockwise?!e.counterclockwise:e.clockwise,r=t.cy,o=e.eles.nodes().not(":parent"),a=i.makeBoundingBox(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=a.x1+a.w/2,c=a.y1+a.h/2,u=[],l=(e.startAngle,0),f=0;f0)Math.abs(y[0].value-m.value)>=v&&(y=[],b.push(y));y.push(m)}var x=l+e.minNodeSpacing;if(!e.avoidOverlap){var _=b.length>0&&b[0].length>1,E=(Math.min(a.w,a.h)/2-x)/(b.length+_?1:0);x=Math.min(x,E)}for(var k=0,S=0;S1&&e.avoidOverlap){var C=Math.cos(O)-Math.cos(0),P=Math.sin(O)-Math.sin(0),N=Math.sqrt(x*x/(C*C+P*P));k=Math.max(N,k)}T.r=k,k+=x}if(e.equidistant){for(var L=0,A=0,I=0;I0)var u=(h=r.nodeOverlap*s)*i/(y=Math.sqrt(i*i+o*o)),f=h*o/y;else{var h,d=l(t,i,o),p=l(e,-1*i,-1*o),g=p.x-d.x,v=p.y-d.y,b=g*g+v*v,y=Math.sqrt(b);u=(h=(t.nodeRepulsion+e.nodeRepulsion)/b)*g/y,f=h*v/y}t.isLocked||(t.offsetX-=u,t.offsetY-=f),e.isLocked||(e.offsetX+=u,e.offsetY+=f)}},c=function(t,e,n,r){if(n>0)var i=t.maxX-e.minX;else i=e.maxX-t.minX;if(r>0)var o=t.maxY-e.minY;else o=e.maxY-t.minY;return i>=0&&o>=0?Math.sqrt(i*i+o*o):0},l=function(t,e,n){var r=t.positionX,i=t.positionY,o=t.height||1,a=t.width||1,s=n/e,c=o/a,u={};return 0===e&&0n?(u.x=r,u.y=i+o/2,u):0e&&-1*c<=s&&s<=c?(u.x=r-a/2,u.y=i-a*n/2/e,u):0=c)?(u.x=r+o*e/2/n,u.y=i+o/2,u):0>n&&(s<=-1*c||s>=c)?(u.x=r-o*e/2/n,u.y=i-o/2,u):u},f=function(t,e){for(var n=0;n1){var p=e.gravity*f/d,g=e.gravity*h/d;l.offsetX+=p,l.offsetY+=g}}}}},d=function(t,e){var n=[],r=0,i=-1;for(n.push.apply(n,t.graphSet[0]),i+=t.graphSet[0].length;r<=i;){var o=n[r++],a=t.idToIndex[o],s=t.layoutNodes[a],c=s.children;if(0n)var i={x:n*t/r,y:n*e/r};else i={x:t,y:e};return i},v=function t(e,n){var r=e.parentId;if(null!=r){var i=n.layoutNodes[n.idToIndex[r]],o=!1;return(null==i.maxX||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,o=!0),(null==i.minX||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,o=!0),(null==i.minY||e.minY-i.padTopg&&(h+=p+e.componentSpacing,f=0,d=0,p=0)}}}(0,i),r}).then(function(t){f.layoutNodes=t.layoutNodes,o.stop(),y()});var y=function(){!0===t.animate||!1===t.animate?b({force:!0,next:function(){n.one("layoutstop",t.stop),n.emit({type:"layoutstop",layout:n})}}):t.eles.nodes().layoutPositions(n,t,function(t){var e=f.layoutNodes[f.idToIndex[t.data("id")]];return{x:e.positionX,y:e.positionY}})};return this},u.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},u.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var l=function(t,e,n){for(var r=n.eles.edges(),i=n.eles.nodes(),s={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:t.width(),clientHeight:t.width(),boundingBox:o.makeBoundingBox(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()})},c=n.eles.components(),u={},l=0;l0){s.graphSet.push(E);for(l=0;lr.count?0:r.graph},h=function t(e,n,r,i){var o=i.graphSet[r];if(-1a){var p=l(),g=f();(p-1)*g>=a?l(p-1):(g-1)*p>=a&&f(g-1)}else for(;u*c=a?f(b+1):l(v+1)}var y=o.w/u,w=o.h/c;if(e.condense&&(y=0,w=0),e.avoidOverlap)for(var m=0;m=u&&(N=0,P++)},A={},I=0;I(r=i.sqdistToFiniteLine(t,e,x[_],x[_+1],x[_+2],x[_+3])))return y(n,r),!0}else if("bezier"===a.edgeType||"multibezier"===a.edgeType||"self"===a.edgeType||"compound"===a.edgeType)for(x=a.allpts,_=0;_+5(r=i.sqdistToQuadraticBezier(t,e,x[_],x[_+1],x[_+2],x[_+3],x[_+4],x[_+5])))return y(n,r),!0;b=b||o.source,m=m||o.target;var E=c.getArrowWidth(s,l),k=[{name:"source",x:a.arrowStartX,y:a.arrowStartY,angle:a.srcArrowAngle},{name:"target",x:a.arrowEndX,y:a.arrowEndY,angle:a.tgtArrowAngle},{name:"mid-source",x:a.midX,y:a.midY,angle:a.midsrcArrowAngle},{name:"mid-target",x:a.midX,y:a.midY,angle:a.midtgtArrowAngle}];for(_=0;_0&&(w(b),w(m))}function x(t,e,n){return o.getPrefixedProperty(t,e,n)}function _(n,r){var o,a=n._private,s=v;o=r?r+"-":"";var c=n.pstyle(o+"label").value;if("yes"===n.pstyle("text-events").strValue&&c){var u=a.rstyle,l=n.pstyle("text-border-width").pfValue,f=n.pstyle("text-background-padding").pfValue,h=x(u,"labelWidth",r)+l+2*s+2*f,d=x(u,"labelHeight",r)+l+2*s+2*f,p=x(u,"labelX",r),g=x(u,"labelY",r),b=x(a.rscratch,"labelAngle",r),w=p-h/2,m=p+h/2,_=g-d/2,E=g+d/2;if(b){var k=Math.cos(b),S=Math.sin(b),T=function(t,e){return{x:(t-=p)*k-(e-=g)*S+p,y:t*S+e*k+g}},j=T(w,_),O=T(w,E),C=T(m,_),P=T(m,E),N=[j.x,j.y,C.x,C.y,P.x,P.y,O.x,O.y];if(i.pointInsidePolygonPoints(t,e,N))return y(n),!0}else{var L={w:h,h:d,x1:w,x2:m,y1:_,y2:E};if(i.inBoundingBox(L,t,e))return y(n),!0}}}n&&(l=l.interactive);for(var E=l.length-1;E>=0;E--){var k=l[E];k.isNode()?w(k)||_(k):m(k)||_(k)||_(k,"source")||_(k,"target")}return f},getAllInBox:function(t,e,n,r){var o=this.getCachedZSortedEles().interactive,a=[],s=Math.min(t,n),c=Math.max(t,n),u=Math.min(e,r),l=Math.max(e,r);t=s,n=c,e=u,r=l;for(var f=i.makeBoundingBox({x1:t,y1:e,x2:n,y2:r}),h=0;hy?y+"$-$"+b:b+"$-$"+y,g&&(e="unbundled$-$"+p.id);var w=l[e];null==w&&(w=l[e]=[],f.push(e)),w.push(Ue),g&&(w.hasUnbundled=!0),v&&(w.hasBezier=!0)}else h.push(Ue)}for(var m=0;mKe.id()){var _=Qe;Qe=Ke,Ke=_}Je=Qe.position(),tn=Ke.position(),en=Qe.outerWidth(),rn=Qe.outerHeight(),nn=Ke.outerWidth(),on=Ke.outerHeight(),n=c.nodeShapes[this.getNodeShape(Qe)],o=c.nodeShapes[this.getNodeShape(Ke)],s=!1;var E={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0},k=Je.x,S=Je.y,T=en,j=rn,O=tn.x,C=tn.y,P=nn,N=on,L=x.length;for(d=0;d=h||x){d={cp:y,segment:m};break}}if(d)break}y=d.cp;var _=(h-g)/(m=d.segment).length,E=m.t1-m.t0,k=f?m.t0+E*_:m.t1-E*_;k=r.bound(0,k,1),e=r.qbezierPtAt(y.p0,y.p1,y.p2,k),s=function(t,e,n,i){var o=r.bound(0,i-.001,1),a=r.bound(0,i+.001,1),s=r.qbezierPtAt(t,e,n,o),u=r.qbezierPtAt(t,e,n,a);return c(s,u)}(y.p0,y.p1,y.p2,k);break;case"straight":case"segments":case"haystack":var S,T,j,O,C=0,P=i.allpts.length;for(b=0;b+3=h));b+=2);k=(h-T)/S;k=r.bound(0,k,1),e=r.lineAt(j,O,k),s=c(j,O)}l("labelX",o,e.x),l("labelY",o,e.y),l("labelAutoAngle",o,s)}};h("source"),h("target"),this.applyLabelDimensions(t)}},a.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))},a.applyPrefixedLabelDimensions=function(t,e){var n=t._private,r=this.getLabelText(t,e),i=this.calculateLabelDimensions(t,r);o.setPrefixedProperty(n.rstyle,"labelWidth",e,i.width),o.setPrefixedProperty(n.rscratch,"labelWidth",e,i.width),o.setPrefixedProperty(n.rstyle,"labelHeight",e,i.height),o.setPrefixedProperty(n.rscratch,"labelHeight",e,i.height)},a.getLabelText=function(t,e){var n=t._private,r=e?e+"-":"",i=t.pstyle(r+"label").strValue,a=t.pstyle("text-transform").value,s=function(t,r){return r?(o.setPrefixedProperty(n.rscratch,t,e,r),r):o.getPrefixedProperty(n.rscratch,t,e)};if(!i)return"";"none"==a||("uppercase"==a?i=i.toUpperCase():"lowercase"==a&&(i=i.toLowerCase()));var c=t.pstyle("text-wrap").value;if("wrap"===c){var u=s("labelKey");if(u&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var l=i.split("\n"),f=t.pstyle("text-max-width").pfValue,h=[],d=0;df){for(var g=p.split(/\s+/),v="",b=0;bf)break;m+=i[_],_===i.length-1&&(x=!0)}return x||(m+="…"),m}return i},a.calculateLabelDimensions=function(t,e,n){var r=t._private.labelStyleKey+"$@$"+e;n&&(r+="$@$"+n);var i=this.labelDimCache||(this.labelDimCache={});if(i[r])return i[r];var o=t.pstyle("font-style").strValue,a=1*t.pstyle("font-size").pfValue+"px",s=t.pstyle("font-family").strValue,c=t.pstyle("font-weight").strValue,u=this.labelCalcDiv;u||(u=this.labelCalcDiv=document.createElement("div"),document.body.appendChild(u));var l=u.style;return l.fontFamily=s,l.fontStyle=o,l.fontSize=a,l.fontWeight=c,l.position="absolute",l.left="-9999px",l.top="-9999px",l.zIndex="-1",l.visibility="hidden",l.pointerEvents="none",l.padding="0",l.lineHeight="1","wrap"===t.pstyle("text-wrap").value?l.whiteSpace="pre":l.whiteSpace="normal",u.textContent=e,i[r]={width:Math.ceil(u.clientWidth/1),height:Math.ceil(u.clientHeight/1)},i[r]},a.calculateLabelAngles=function(t){var e=t._private.rscratch,n=t.isEdge(),r=t.pstyle("text-rotation"),i=r.strValue;"none"===i?e.labelAngle=e.sourceLabelAngle=e.targetLabelAngle=0:n&&"autorotate"===i?(e.labelAngle=e.labelAutoAngle,e.sourceLabelAngle=e.sourceLabelAutoAngle,e.targetLabelAngle=e.targetLabelAutoAngle):e.labelAngle=e.sourceLabelAngle=e.targetLabelAngle="autorotate"===i?0:r.pfValue},t.exports=a},function(t,e,n){"use strict";var r={getNodeShape:function(t){var e=t.pstyle("shape").value;if(t.isParent())return"rectangle"===e||"roundrectangle"===e||"cutrectangle"===e||"barrel"===e?e:"rectangle";if("polygon"===e){var n=t.pstyle("shape-polygon-points").value;return this.nodeShapes.makePolygon(n).name}return e}};t.exports=r},function(t,e,n){"use strict";var r={registerCalculationListeners:function(){var t=this.cy,e=t.collection(),n=this,r=function(t,n){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e.merge(t);for(var i=0;i=t.desktopTapThreshold2}var O=n(i);w&&(t.hoverData.tapholdCancelled=!0);s=!0,e(b,["mousemove","vmousemove","tapdrag"],i,{position:{x:d[0],y:d[1]}});var C=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||c.emit("boxstart"),v[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(3===t.hoverData.which){if(w){var P={originalEvent:i,type:"cxtdrag",position:{x:d[0],y:d[1]}};x?x.emit(P):c.emit(P),t.hoverData.cxtDragged=!0,t.hoverData.cxtOver&&b===t.hoverData.cxtOver||(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:i,type:"cxtdragout",position:{x:d[0],y:d[1]}}),t.hoverData.cxtOver=b,b&&b.emit({originalEvent:i,type:"cxtdragover",position:{x:d[0],y:d[1]}}))}}else if(t.hoverData.dragging){if(s=!0,c.panningEnabled()&&c.userPanningEnabled()){var N;if(t.hoverData.justStartedPan){var L=t.hoverData.mdownPos;N={x:(d[0]-L[0])*u,y:(d[1]-L[1])*u},t.hoverData.justStartedPan=!1}else N={x:_[0]*u,y:_[1]*u};c.panBy(N),t.hoverData.dragged=!0}d=t.projectIntoViewport(i.clientX,i.clientY)}else if(1!=v[4]||null!=x&&!x.isEdge()){if(x&&x.isEdge()&&x.active()&&x.unactivate(),x&&x.grabbed()||b==m||(m&&e(m,["mouseout","tapdragout"],i,{position:{x:d[0],y:d[1]}}),b&&e(b,["mouseover","tapdragover"],i,{position:{x:d[0],y:d[1]}}),t.hoverData.last=b),x)if(w){if(c.boxSelectionEnabled()&&O)x&&x.grabbed()&&(h(E),x.emit("free")),C();else if(x&&x.grabbed()&&t.nodeIsDraggable(x)){var A=!t.dragData.didDrag;A&&t.redrawHint("eles",!0),t.dragData.didDrag=!0;var I=[];t.hoverData.draggingEles||l(c.collection(E),{inDragLayer:!0});for(var D=0;D0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=c=[]),e(s,["mouseup","tapend","vmouseup"],r,{position:{x:o[0],y:o[1]}}),t.dragData.didDrag||t.hoverData.dragged||t.hoverData.selecting||t.hoverData.isOverThresholdDrag||e(u,["click","tap","vclick"],r,{position:{x:o[0],y:o[1]}}),s!=u||t.dragData.didDrag||t.hoverData.selecting||null!=s&&s._private.selectable&&(t.hoverData.dragging||("additive"===i.selectionType()||l?s.selected()?s.unselect():s.select():l||(i.$(":selected").unmerge(s).unselect(),s.select())),t.redrawHint("eles",!0)),t.hoverData.selecting){var p=i.collection(t.getAllInBox(a[0],a[1],a[2],a[3]));t.redrawHint("select",!0),p.length>0&&t.redrawHint("eles",!0),i.emit("boxend");var g=function(t){return t.selectable()&&!t.selected()};"additive"===i.selectionType()?p.emit("box").stdFilter(g).select().emit("boxselect"):(l||i.$(":selected").unmerge(p).unselect(),p.emit("box").stdFilter(g).select().emit("boxselect")),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!a[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var v=u&&u.grabbed();h(c),v&&u.emit("free")}}a[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null}},!1);var w,m,x,_,E,k,S,T,j,O,C,P,N;t.registerBinding(t.container,"wheel",function(e){if(!t.scrollingPage){var n,r=t.cy,i=t.projectIntoViewport(e.clientX,e.clientY),o=[i[0]*r.zoom()+r.pan().x,i[1]*r.zoom()+r.pan().y];t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||0!==t.selection[4]?e.preventDefault():r.panningEnabled()&&r.userPanningEnabled()&&r.zoomingEnabled()&&r.userZoomingEnabled()&&(e.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150),n=null!=e.deltaY?e.deltaY/-250:null!=e.wheelDeltaY?e.wheelDeltaY/1e3:e.wheelDelta/1e3,n*=t.wheelSensitivity,1===e.deltaMode&&(n*=33),r.zoom({level:r.zoom()*Math.pow(10,n),renderedPosition:{x:o[0],y:o[1]}}))}},!0),t.registerBinding(window,"scroll",function(e){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,"mouseout",function(e){var n=t.projectIntoViewport(e.clientX,e.clientY);t.cy.emit({originalEvent:e,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),t.registerBinding(t.container,"mouseover",function(e){var n=t.projectIntoViewport(e.clientX,e.clientY);t.cy.emit({originalEvent:e,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var L,A,I,D,M=function(t,e,n,r){return Math.sqrt((n-t)*(n-t)+(r-e)*(r-e))},R=function(t,e,n,r){return(n-t)*(n-t)+(r-e)*(r-e)};if(t.registerBinding(t.container,"touchstart",L=function(n){if(y(n)){p(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var r=t.cy,i=t.touchData.now,o=t.touchData.earlier;if(n.touches[0]){var a=t.projectIntoViewport(n.touches[0].clientX,n.touches[0].clientY);i[0]=a[0],i[1]=a[1]}if(n.touches[1]){a=t.projectIntoViewport(n.touches[1].clientX,n.touches[1].clientY);i[2]=a[0],i[3]=a[1]}if(n.touches[2]){a=t.projectIntoViewport(n.touches[2].clientX,n.touches[2].clientY);i[4]=a[0],i[5]=a[1]}if(n.touches[1]){h(t.dragData.touchDragEles);var s=t.findContainerClientCoords();j=s[0],O=s[1],C=s[2],P=s[3],w=n.touches[0].clientX-j,m=n.touches[0].clientY-O,x=n.touches[1].clientX-j,_=n.touches[1].clientY-O,N=0<=w&&w<=C&&0<=x&&x<=C&&0<=m&&m<=P&&0<=_&&_<=P;var u=r.pan(),d=r.zoom();E=M(w,m,x,_),k=R(w,m,x,_),T=[((S=[(w+x)/2,(m+_)/2])[0]-u.x)/d,(S[1]-u.y)/d];if(k<4e4&&!n.touches[2]){var g=t.findNearestElement(i[0],i[1],!0,!0),v=t.findNearestElement(i[2],i[3],!0,!0);return g&&g.isNode()?(g.activate().emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),t.touchData.start=g):v&&v.isNode()?(v.activate().emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),t.touchData.start=v):r.emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!0,t.touchData.cxtDragged=!1,t.data.bgActivePosistion=void 0,void t.redraw()}}if(n.touches[2]);else if(n.touches[1]);else if(n.touches[0]){var b=t.findNearestElements(i[0],i[1],!0,!0),L=b[0];if(null!=L&&(L.activate(),t.touchData.start=L,t.touchData.starts=b,t.nodeIsGrabbable(L))){var A=t.dragData.touchDragEles=[],I=null;t.redrawHint("eles",!0),t.redrawHint("drag",!0),L.selected()?(I=r.$(function(e){return e.selected()&&t.nodeIsGrabbable(e)}),l(I,{addToList:A})):f(L,{addToList:A}),c(L);var D=function(t){return{originalEvent:n,type:t,position:{x:i[0],y:i[1]}}};L.emit(D("grabon")),I?I.forEach(function(t){t.emit(D("grab"))}):L.emit(D("grab"))}e(L,["touchstart","tapstart","vmousedown"],n,{position:{x:i[0],y:i[1]}}),null==L&&(t.data.bgActivePosistion={x:a[0],y:a[1]},t.redrawHint("select",!0),t.redraw()),t.touchData.singleTouchMoved=!1,t.touchData.singleTouchStartTime=+new Date,clearTimeout(t.touchData.tapholdTimeout),t.touchData.tapholdTimeout=setTimeout(function(){!1!==t.touchData.singleTouchMoved||t.pinching||t.touchData.selecting||(e(t.touchData.start,["taphold"],n,{position:{x:i[0],y:i[1]}}),t.touchData.start||r.$(":selected").unselect())},t.tapholdDuration)}if(n.touches.length>=1){for(var G=t.touchData.startPosition=[],B=0;B=t.touchTapThreshold2}if(i&&t.touchData.cxt){n.preventDefault();var A=n.touches[0].clientX-j,I=n.touches[0].clientY-O,D=n.touches[1].clientX-j,G=n.touches[1].clientY-O,B=R(A,I,D,G);if(B/k>=2.25||B>=22500){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Y={originalEvent:n,type:"cxttapend",position:{x:u[0],y:u[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(Y),t.touchData.start=null):c.emit(Y)}}if(i&&t.touchData.cxt){Y={originalEvent:n,type:"cxtdrag",position:{x:u[0],y:u[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Y):c.emit(Y),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var F=t.findNearestElement(u[0],u[1],!0,!0);t.touchData.cxtOver&&F===t.touchData.cxtOver||(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:n,type:"cxtdragout",position:{x:u[0],y:u[1]}}),t.touchData.cxtOver=F,F&&F.emit({originalEvent:n,type:"cxtdragover",position:{x:u[0],y:u[1]}}))}else if(i&&n.touches[2]&&c.boxSelectionEnabled())n.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||c.emit("boxstart"),t.touchData.selecting=!0,t.redrawHint("select",!0),s&&0!==s.length&&void 0!==s[0]?(s[2]=(u[0]+u[2]+u[4])/3,s[3]=(u[1]+u[3]+u[5])/3):(s[0]=(u[0]+u[2]+u[4])/3,s[1]=(u[1]+u[3]+u[5])/3,s[2]=(u[0]+u[2]+u[4])/3+1,s[3]=(u[1]+u[3]+u[5])/3+1),s[4]=1,t.touchData.selecting=!0,t.redraw();else if(i&&n.touches[1]&&c.zoomingEnabled()&&c.panningEnabled()&&c.userZoomingEnabled()&&c.userPanningEnabled()){if(n.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),tt=t.dragData.touchDragEles){t.redrawHint("drag",!0);for(var H=0;H0&&!t.hoverData.draggingEles&&!t.swipePanning&&null!=t.data.bgActivePosistion&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1),t.registerBinding(window,"touchcancel",I=function(e){var n=t.touchData.start;t.touchData.capture=!1,n&&n.unactivate()}),t.registerBinding(window,"touchend",D=function(n){var r=t.touchData.start;if(t.touchData.capture){0===n.touches.length&&(t.touchData.capture=!1),n.preventDefault();var i=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var o,a=t.cy,s=a.zoom(),c=t.touchData.now,u=t.touchData.earlier;if(n.touches[0]){var l=t.projectIntoViewport(n.touches[0].clientX,n.touches[0].clientY);c[0]=l[0],c[1]=l[1]}if(n.touches[1]){l=t.projectIntoViewport(n.touches[1].clientX,n.touches[1].clientY);c[2]=l[0],c[3]=l[1]}if(n.touches[2]){l=t.projectIntoViewport(n.touches[2].clientX,n.touches[2].clientY);c[4]=l[0],c[5]=l[1]}if(r&&r.unactivate(),t.touchData.cxt){if(o={originalEvent:n,type:"cxttapend",position:{x:c[0],y:c[1]}},r?r.emit(o):a.emit(o),!t.touchData.cxtDragged){var f={originalEvent:n,type:"cxttap",position:{x:c[0],y:c[1]}};r?r.emit(f):a.emit(f)}return t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,void t.redraw()}if(!n.touches[2]&&a.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var d=a.collection(t.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,t.redrawHint("select",!0),a.emit("boxend");d.emit("box").stdFilter(function(t){return t.selectable()&&!t.selected()}).select().emit("boxselect"),d.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(null!=r&&r.unactivate(),n.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(n.touches[1]);else if(n.touches[0]);else if(!n.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var p=t.dragData.touchDragEles;if(null!=r){var g=r._private.grabbed;h(p),t.redrawHint("drag",!0),t.redrawHint("eles",!0),g&&r.emit("free"),e(r,["touchend","tapend","vmouseup","tapdragout"],n,{position:{x:c[0],y:c[1]}}),r.unactivate(),t.touchData.start=null}else{var v=t.findNearestElement(c[0],c[1],!0,!0);e(v,["touchend","tapend","vmouseup","tapdragout"],n,{position:{x:c[0],y:c[1]}})}var b=t.touchData.startPosition[0]-c[0],y=b*b,w=t.touchData.startPosition[1]-c[1],m=(y+w*w)*s*s;null!=r&&!t.dragData.didDrag&&r._private.selectable&&m0)return p[0]}return null},d=Object.keys(f),p=0;p0?h:r.roundRectangleIntersectLine(o,a,t,e,n,i,s)},checkPoint:function(t,e,n,i,o,a,s){var c=r.getRoundRectangleRadius(i,o),u=2*c;if(r.pointInsidePolygon(t,e,this.points,a,s,i,o-u,[0,-1],n))return!0;if(r.pointInsidePolygon(t,e,this.points,a,s,i-u,o,[0,-1],n))return!0;var l=i/2+2*n,f=o/2+2*n,h=[a-l,s-f,a-l,s,a+l,s,a+l,s-f];return!!r.pointInsidePolygonPoints(t,e,h)||(!!r.checkInEllipse(t,e,u,u,a+i/2-c,s+o/2-c,n)||!!r.checkInEllipse(t,e,u,u,a-i/2+c,s+o/2-c,n))}}},registerNodeShapes:function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",r.generateUnitNgonPointsFitToSquare(3,0)),this.generatePolygon("rectangle",r.generateUnitNgonPointsFitToSquare(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle(),this.generatePolygon("diamond",[0,1,1,0,0,-1,-1,0]),this.generatePolygon("pentagon",r.generateUnitNgonPointsFitToSquare(5,0)),this.generatePolygon("hexagon",r.generateUnitNgonPointsFitToSquare(6,0)),this.generatePolygon("heptagon",r.generateUnitNgonPointsFitToSquare(7,0)),this.generatePolygon("octagon",r.generateUnitNgonPointsFitToSquare(8,0));var n=new Array(20),i=r.generateUnitNgonPoints(5,0),o=r.generateUnitNgonPoints(5,Math.PI/5),a=.5*(3-Math.sqrt(5));a*=1.57;for(var s=0;s0&&e.data.lyrTxrCache.invalidateElements(n)})}c.CANVAS_LAYERS=3,c.SELECT_BOX=0,c.DRAG=1,c.NODE=2,c.BUFFER_COUNT=3,c.TEXTURE_BUFFER=0,c.MOTIONBLUR_BUFFER_NODE=1,c.MOTIONBLUR_BUFFER_DRAG=2,c.redrawHint=function(t,e){var n=this;switch(t){case"eles":n.data.canvasNeedsRedraw[c.NODE]=e;break;case"drag":n.data.canvasNeedsRedraw[c.DRAG]=e;break;case"select":n.data.canvasNeedsRedraw[c.SELECT_BOX]=e}};var l="undefined"!=typeof Path2D;c.path2dEnabled=function(t){if(void 0===t)return this.pathsEnabled;this.pathsEnabled=!!t},c.usePaths=function(){return l&&this.pathsEnabled},[n(126),n(127),n(128),n(129),n(130),n(131),n(132),n(133),n(134),n(135)].forEach(function(t){r.extend(c,t)}),t.exports=s},function(t,e,n){"use strict";var r=n(2),i=n(1),o=n(9),a=n(19),s={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},c=function(t){this.renderer=t,this.onDequeues=[],this.setupDequeueing()},u=c.prototype;u.reasons=s,u.getTextureQueue=function(t){return this.eleImgCaches=this.eleImgCaches||{},this.eleImgCaches[t]=this.eleImgCaches[t]||[]},u.getRetiredTextureQueue=function(t){var e=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return e[t]=e[t]||[]},u.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new o(function(t,e){return e.reqs-t.reqs})},u.getElementIdToQueue=function(){return this.eleIdToCacheQueue=this.eleIdToCacheQueue||{}},u.getElement=function(t,e,n,i,o){var a=this,c=this.renderer,u=t._private.rscratch,l=c.cy.zoom();if(0===e.w||0===e.h||!t.visible())return null;if(null==i&&(i=Math.ceil(r.log2(l*n))),i<-4)i=-4;else if(l>=3.99||i>2)return null;var f,h=Math.pow(2,i),d=e.h*h,p=e.w*h,g=u.imgCaches=u.imgCaches||{},v=g[i];if(v)return v;if(f=d<=25?25:d<=50?50:50*Math.ceil(d/50),d>1024||p>1024||t.isEdge()||t.isParent())return null;var b=a.getTextureQueue(f),y=b[b.length-2],w=function(){return a.recycleTexture(f,p)||a.addTexture(f,p)};y||(y=b[b.length-1]),y||(y=w()),y.width-y.usedWidthi;T--)j=a.getElement(t,e,n,T,s.downscale);O()}else{var C;if(!E&&!k&&!S)for(T=i-1;T>=-4;T--){var P;if(P=g[T]){C=P;break}}if(_(C))return a.queueElement(t,i),C;y.context.translate(y.usedWidth,0),y.context.scale(h,h),c.drawElement(y.context,t,e,x),y.context.scale(1/h,1/h),y.context.translate(-y.usedWidth,0)}return v=g[i]={ele:t,x:y.usedWidth,texture:y,level:i,scale:h,width:p,height:d,scaledLabelShown:x},y.usedWidth+=Math.ceil(p+8),y.eleCaches.push(v),a.checkTextureFullness(y),v},u.invalidateElement=function(t){var e=t._private.rscratch.imgCaches;if(e)for(var n=-4;n<=2;n++){var r=e[n];if(r){var o=r.texture;o.invalidatedWidth+=r.width,e[n]=null,i.removeFromArray(o.eleCaches,r),this.removeFromQueue(t),this.checkTextureUtility(o)}}},u.checkTextureUtility=function(t){t.invalidatedWidth>=.5*t.width&&this.retireTexture(t)},u.checkTextureFullness=function(t){var e=this.getTextureQueue(t.height);t.usedWidth/t.width>.8&&t.fullnessChecks>=10?i.removeFromArray(e,t):t.fullnessChecks++},u.retireTexture=function(t){var e=t.height,n=this.getTextureQueue(e);i.removeFromArray(n,t),t.retired=!0;for(var r=t.eleCaches,o=0;o=e)return a.retired=!1,a.usedWidth=0,a.invalidatedWidth=0,a.fullnessChecks=0,i.clearArray(a.eleCaches),a.context.setTransform(1,0,0,1,0,0),a.context.clearRect(0,0,a.width,a.height),i.removeFromArray(r,a),n.push(a),a}},u.queueElement=function(t,e){var n=this.getElementQueue(),r=this.getElementIdToQueue(),i=t.id(),o=r[i];if(o)o.level=Math.max(o.level,e),o.reqs++,n.updateItem(o);else{var a={ele:t,level:e,reqs:1};n.push(a),r[i]=a}},u.dequeue=function(t){for(var e=this.getElementQueue(),n=this.getElementIdToQueue(),r=[],i=0;i<1&&e.size()>0;i++){var o=e.pop(),a=o.ele;if(null==a._private.rscratch.imgCaches[o.level]){n[a.id()]=null,r.push(o);var c=a.boundingBox();this.getElement(a,c,t,o.level,s.dequeue)}}return r},u.removeFromQueue=function(t){var e=this.getElementQueue(),n=this.getElementIdToQueue(),r=n[t.id()];null!=r&&(r.reqs=i.MAX_INT,e.updateItem(r),e.pop(),n[t.id()]=null)},u.onDequeue=function(t){this.onDequeues.push(t)},u.offDequeue=function(t){i.removeFromArray(this.onDequeues,t)},u.setupDequeueing=a.setupDequeueing({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(t,e,n){return t.dequeue(e,n)},onDeqd:function(t,e){for(var n=0;n=3.99||n>2)return null;o.validateLayersElesOrdering(n,t);var c,u,l=o.layersByLevel,f=Math.pow(2,n),h=l[n]=l[n]||[];if(o.levelIsComplete(n,t))return h;!function(){var e=function(e){if(o.validateLayersElesOrdering(e,t),o.levelIsComplete(e,t))return u=l[e],!0},i=function(t){if(!u)for(var r=n+t;-4<=r&&r<=2&&!e(r);r+=t);};i(1),i(-1);for(var a=h.length-1;a>=0;a--){var s=h[a];s.invalid&&r.removeFromArray(h,s)}}();var d=function(e){var r=(e=e||{}).after;if(function(){if(!c){c=i.makeBoundingBox();for(var e=0;e16e6)return null;var a=o.makeLayer(c,n);if(null!=r){var s=h.indexOf(r)+1;h.splice(s,0,a)}else(void 0===e.insert||e.insert)&&h.unshift(a);return a};if(o.skipping&&!s)return null;for(var p=null,g=t.length/1,v=!s,b=0;b=g||!i.boundingBoxInBoundingBox(p.bb,y.boundingBox()))&&!(p=d({insert:!0,after:p})))return null;u||v?o.queueLayer(p,y):o.drawEleInLayer(p,y,n,e),p.eles.push(y),m[n]=p}}return u||(v?null:h)},u.getEleLevelForLayerLevel=function(t,e){return t},u.drawEleInLayer=function(t,e,n,r){var i=this.renderer,o=t.context,a=e.boundingBox();if(0!==a.w&&0!==a.h&&e.visible()){var s=this.eleTxrCache,c=s.reasons.highQuality;n=this.getEleLevelForLayerLevel(n,r);var u=s.getElement(e,a,null,n,c);u?(h(o,!1),o.drawImage(u.texture.canvas,u.x,0,u.width,u.height,a.x1,a.y1,a.w,a.h),h(o,!0)):i.drawElement(o,e)}},u.levelIsComplete=function(t,e){var n=this.layersByLevel[t];if(!n||0===n.length)return!1;for(var r=0,i=0;i0)return!1;if(o.invalid)return!1;r+=o.eles.length}return r===e.length},u.validateLayersElesOrdering=function(t,e){var n=this.layersByLevel[t];if(n)for(var r=0;r0){t=!0;break}}return t},u.invalidateElements=function(t){var e=this;e.lastInvalidationTime=r.performanceNow(),0!==t.length&&e.haveLayers()&&e.updateElementsInLayers(t,function(t,n,r){e.invalidateLayer(t)})},u.invalidateLayer=function(t){if(this.lastInvalidationTime=r.performanceNow(),!t.invalid){var e=t.level,n=t.eles,i=this.layersByLevel[e];r.removeFromArray(i,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:h;t.lineWidth=p,t.lineCap="butt",i.strokeStyle(t,f[0],f[1],f[2],n),i.drawEdgePath(e,t,o.allpts,d)},v=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h;i.drawArrowheads(t,e,n)};if(t.lineJoin="round","yes"===e.pstyle("ghost").value){var b=e.pstyle("ghost-offset-x").pfValue,y=e.pstyle("ghost-offset-y").pfValue,w=e.pstyle("ghost-opacity").value,m=h*w;t.translate(b,y),g(m),v(m),t.translate(-b,-y)}g(),v(),function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u;t.lineWidth=c,"self"!==o.edgeType||a?t.lineCap="round":t.lineCap="butt",i.strokeStyle(t,l[0],l[1],l[2],n),i.drawEdgePath(e,t,o.allpts,"solid")}(),i.drawElementText(t,e,r),n&&t.translate(s.x1,s.y1)}},drawEdgePath:function(t,e,n,r){var i=t._private.rscratch,o=e,a=void 0,s=!1,c=this.usePaths();if(c){var u=n.join("$");i.pathCacheKey&&i.pathCacheKey===u?(a=e=i.pathCache,s=!0):(a=e=new Path2D,i.pathCacheKey=u,i.pathCache=a)}if(o.setLineDash)switch(r){case"dotted":o.setLineDash([1,1]);break;case"dashed":o.setLineDash([6,3]);break;case"solid":o.setLineDash([])}if(!s&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var l=2;l+30||P>0&&C>0){var L=h-N;switch(_){case"left":L-=v;break;case"center":L-=v/2}var A=d-b-N,I=v+2*N,D=b+2*N;if(O>0){var M=t.fillStyle,R=e.pstyle("text-background-color").value;t.fillStyle="rgba("+R[0]+","+R[1]+","+R[2]+","+O*o+")","roundrectangle"==e.pstyle("text-background-shape").strValue?(s=L,c=A,u=I,l=D,f=(f=2)||5,(a=t).beginPath(),a.moveTo(s+f,c),a.lineTo(s+u-f,c),a.quadraticCurveTo(s+u,c,s+u,c+f),a.lineTo(s+u,c+l-f),a.quadraticCurveTo(s+u,c+l,s+u-f,c+l),a.lineTo(s+f,c+l),a.quadraticCurveTo(s,c+l,s,c+l-f),a.lineTo(s,c+f),a.quadraticCurveTo(s,c,s+f,c),a.closePath(),a.fill()):t.fillRect(L,A,I,D),t.fillStyle=M}if(P>0&&C>0){var G=t.strokeStyle,B=t.lineWidth,Y=e.pstyle("text-border-color").value,F=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+Y[0]+","+Y[1]+","+Y[2]+","+C*o+")",t.lineWidth=P,t.setLineDash)switch(F){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=P/4,t.setLineDash([]);break;case"solid":t.setLineDash([])}if(t.strokeRect(L,A,I,D),"double"===F){var H=P/2;t.strokeRect(L+H,A+H,I-2*H,D-2*H)}t.setLineDash&&t.setLineDash([]),t.lineWidth=B,t.strokeStyle=G}}var z=2*e.pstyle("text-outline-width").pfValue;if(z>0&&(t.lineWidth=z),"wrap"===e.pstyle("text-wrap").value){var V=r.getPrefixedProperty(i,"labelWrapCachedLines",n),q=b/V.length;switch(E){case"top":d-=(V.length-1)*q;break;case"center":case"bottom":d-=(V.length-1)*q}for(var U=0;U0&&t.strokeText(V[U],h,d),t.fillText(V[U],h,d),d+=q}else z>0&&t.strokeText(p,h,d),t.fillText(p,h,d);0!==k&&(t.rotate(-k),t.translate(-T,-j))}}},t.exports=o},function(t,e,n){"use strict";var r=n(0),i={drawNode:function(t,e,n,i){var o,a,s=this,c=e._private,u=c.rscratch,l=e.position();if(r.number(l.x)&&r.number(l.y)&&e.visible()){var f=e.effectiveOpacity(),h=s.usePaths(),d=void 0,p=!1,g=e.padding();o=e.width()+2*g,a=e.height()+2*g;var v=void 0;n&&(v=n,t.translate(-v.x1,-v.y1));for(var b=e.pstyle("background-image").value,y=new Array(b.length),w=new Array(b.length),m=0,x=0;x0&&void 0!==arguments[0]?arguments[0]:j;s.fillStyle(t,T[0],T[1],T[2],e)},L=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:P;s.strokeStyle(t,O[0],O[1],O[2],e)},A=e.pstyle("shape").strValue,I=e.pstyle("shape-polygon-points").pfValue;if(h){var D=A+"$"+o+"$"+a+("polygon"===A?"$"+I.join("$"):"");t.translate(l.x,l.y),u.pathCacheKey===D?(d=u.pathCache,p=!0):(d=new Path2D,u.pathCacheKey=D,u.pathCache=d)}var M,R,G,B=function(){if(!p){var n=l;h&&(n={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(d||t,n.x,n.y,o,a)}h?t.fill(d):t.fill()},Y=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,r=c.backgrounding,i=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f;s.hasPie(e)&&(s.drawPie(t,e,r),n&&(h||s.nodeShapes[s.getNodeShape(e)].draw(t,l.x,l.y,o,a)))},H=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,n=(k>0?k:-k)*e,r=k>0?0:255;0!==k&&(s.fillStyle(t,r,r,r,n),h?t.fill(d):t.fill())},z=function(){if(S>0){if(t.lineWidth=S,t.lineCap="butt",t.setLineDash)switch(C){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([])}if(h?t.stroke(d):t.stroke(),"double"===C){t.lineWidth=S/3;var e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",h?t.stroke(d):t.stroke(),t.globalCompositeOperation=e}t.setLineDash&&t.setLineDash([])}};if("yes"===e.pstyle("ghost").value){var V=e.pstyle("ghost-offset-x").pfValue,q=e.pstyle("ghost-offset-y").pfValue,U=e.pstyle("ghost-opacity").value,X=U*f;t.translate(V,q),N(U*j),B(),Y(X),F(0!==k||0!==S),H(X),L(U*P),z(),t.translate(-V,-q)}N(),B(),Y(),F(0!==k||0!==S),H(),L(),z(),h&&t.translate(-l.x,-l.y),s.drawElementText(t,e,i),M=e.pstyle("overlay-padding").pfValue,R=e.pstyle("overlay-opacity").value,G=e.pstyle("overlay-color").value,R>0&&(s.fillStyle(t,G[0],G[1],G[2],R),s.nodeShapes.roundrectangle.draw(t,l.x,l.y,o+2*M,a+2*M),t.fill()),n&&t.translate(v.x1,v.y1)}},hasPie:function(t){return(t=t[0])._private.hasPie},drawPie:function(t,e,n,r){e=e[0],r=r||e.position();var i=e.cy().style(),o=e.pstyle("pie-size"),a=r.x,s=r.y,c=e.width(),u=e.height(),l=Math.min(c,u)/2,f=0;this.usePaths()&&(a=0,s=0),"%"===o.units?l*=o.pfValue:void 0!==o.pfValue&&(l=o.pfValue/2);for(var h=1;h<=i.pieBackgroundN;h++){var d=e.pstyle("pie-"+h+"-background-size").value,p=e.pstyle("pie-"+h+"-background-color").value,g=e.pstyle("pie-"+h+"-background-opacity").value*n,v=d/100;v+f>1&&(v=1-f);var b=1.5*Math.PI+2*Math.PI*f,y=b+2*Math.PI*v;0===d||f>=1||f+v>1||(t.beginPath(),t.moveTo(a,s),t.arc(a,s,l,b,y),t.closePath(),this.fillStyle(t,p[0],p[1],p[2],g),t.fill(),f+=v)}}};t.exports=i},function(t,e,n){"use strict";var r={},i=n(1);r.getPixelRatio=function(){var t=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var e=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/e},r.paintCache=function(t){for(var e,n=this.paintCaches=this.paintCaches||[],r=!0,i=0;is.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!h&&(f[s.NODE]=!0,f[s.SELECT_BOX]=!0);var w=u.style()._private.coreStyle,m=u.zoom(),x=void 0!==o?o:m,_=u.pan(),E={x:_.x,y:_.y},k={zoom:m,pan:{x:_.x,y:_.y}},S=s.prevViewport;void 0===S||k.zoom!==S.zoom||k.pan.x!==S.pan.x||k.pan.y!==S.pan.y||v&&!g||(s.motionBlurPxRatio=1),a&&(E=a),x*=c,E.x*=c,E.y*=c;var T=s.getCachedZSortedEles();function j(t,e,n,r,i){var o=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",s.fillStyle(t,255,255,255,s.motionBlurTransparency),t.fillRect(e,n,r,i),t.globalCompositeOperation=o}function O(t,r){var i,c,u,f;s.clearingMotionBlur||t!==l.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]&&t!==l.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]?(i=E,c=x,u=s.canvasWidth,f=s.canvasHeight):(i={x:_.x*p,y:_.y*p},c=m*p,u=s.canvasWidth*p,f=s.canvasHeight*p),t.setTransform(1,0,0,1,0,0),"motionBlur"===r?j(t,0,0,u,f):e||void 0!==r&&!r||t.clearRect(0,0,u,f),n||(t.translate(i.x,i.y),t.scale(c,c)),a&&t.translate(a.x,a.y),o&&t.scale(o,o)}if(h||(s.textureDrawLastFrame=!1),h){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=u.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var C=s.data.bufferContexts[s.TEXTURE_BUFFER];C.setTransform(1,0,0,1,0,0),C.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:C,drawOnlyNodeLayer:!0,forcedPxRatio:c*s.textureMult}),(k=s.textureCache.viewport={zoom:u.zoom(),pan:u.pan(),width:s.canvasWidth,height:s.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}f[s.DRAG]=!1,f[s.NODE]=!1;var P=l.contexts[s.NODE],N=s.textureCache.texture;k=s.textureCache.viewport;s.textureCache.bb,P.setTransform(1,0,0,1,0,0),d?j(P,0,0,k.width,k.height):P.clearRect(0,0,k.width,k.height);var L=w["outside-texture-bg-color"].value,A=w["outside-texture-bg-opacity"].value;s.fillStyle(P,L[0],L[1],L[2],A),P.fillRect(0,0,k.width,k.height);m=u.zoom();O(P,!1),P.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/c,k.height/k.zoom/c),P.drawImage(N,k.mpan.x,k.mpan.y,k.width/k.zoom/c,k.height/k.zoom/c)}else s.textureOnViewport&&!e&&(s.textureCache=null);var I=u.extent(),D=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles,M=s.hideEdgesOnViewport&&D,R=[];if(R[s.NODE]=!f[s.NODE]&&d&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,R[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),R[s.DRAG]=!f[s.DRAG]&&d&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,R[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),f[s.NODE]||n||r||R[s.NODE]){var G=d&&!R[s.NODE]&&1!==p;O(P=e||(G?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:l.contexts[s.NODE]),d&&!G?"motionBlur":void 0),M?s.drawCachedNodes(P,T.nondrag,c,I):s.drawLayeredElements(P,T.nondrag,c,I),s.debug&&s.drawDebugPoints(P,T.nondrag),n||d||(f[s.NODE]=!1)}if(!r&&(f[s.DRAG]||n||R[s.DRAG])){G=d&&!R[s.DRAG]&&1!==p;O(P=e||(G?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:l.contexts[s.DRAG]),d&&!G?"motionBlur":void 0),M?s.drawCachedNodes(P,T.drag,c,I):s.drawCachedElements(P,T.drag,c,I),s.debug&&s.drawDebugPoints(P,T.drag),n||d||(f[s.DRAG]=!1)}if(s.showFps||!r&&f[s.SELECT_BOX]&&!n){if(O(P=e||l.contexts[s.SELECT_BOX]),1==s.selection[4]&&(s.hoverData.selecting||s.touchData.selecting)){m=s.cy.zoom();var B=w["selection-box-border-width"].value/m;P.lineWidth=B,P.fillStyle="rgba("+w["selection-box-color"].value[0]+","+w["selection-box-color"].value[1]+","+w["selection-box-color"].value[2]+","+w["selection-box-opacity"].value+")",P.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),B>0&&(P.strokeStyle="rgba("+w["selection-box-border-color"].value[0]+","+w["selection-box-border-color"].value[1]+","+w["selection-box-border-color"].value[2]+","+w["selection-box-opacity"].value+")",P.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(l.bgActivePosistion&&!s.hoverData.selecting){m=s.cy.zoom();var Y=l.bgActivePosistion;P.fillStyle="rgba("+w["active-bg-color"].value[0]+","+w["active-bg-color"].value[1]+","+w["active-bg-color"].value[2]+","+w["active-bg-opacity"].value+")",P.beginPath(),P.arc(Y.x,Y.y,w["active-bg-size"].pfValue/m,0,2*Math.PI),P.fill()}var F=s.lastRedrawTime;if(s.showFps&&F){F=Math.round(F);var H=Math.round(1e3/F);P.setTransform(1,0,0,1,0,0),P.fillStyle="rgba(255, 0, 0, 0.75)",P.strokeStyle="rgba(255, 0, 0, 0.75)",P.lineWidth=1,P.fillText("1 frame = "+F+" ms = "+H+" fps",0,20);P.strokeRect(0,30,250,20),P.fillRect(0,30,250*Math.min(H/60,1),20)}n||(f[s.SELECT_BOX]=!1)}if(d&&1!==p){var z=l.contexts[s.NODE],V=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],q=l.contexts[s.DRAG],U=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],X=function(t,e,n){t.setTransform(1,0,0,1,0,0),n||!y?t.clearRect(0,0,s.canvasWidth,s.canvasHeight):j(t,0,0,s.canvasWidth,s.canvasHeight);var r=p;t.drawImage(e,0,0,s.canvasWidth*r,s.canvasHeight*r,0,0,s.canvasWidth,s.canvasHeight)};(f[s.NODE]||R[s.NODE])&&(X(z,V,R[s.NODE]),f[s.NODE]=!1),(f[s.DRAG]||R[s.DRAG])&&(X(q,U,R[s.DRAG]),f[s.DRAG]=!1)}s.prevViewport=k,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),d&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!h,s.mbFrames=0,f[s.NODE]=!0,f[s.DRAG]=!0,s.redraw()},100)),e||u.emit("render")},t.exports=r},function(t,e,n){"use strict";for(var r=n(2),i={drawPolygonPath:function(t,e,n,r,i,o){var a=r/2,s=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+a*o[0],n+s*o[1]);for(var c=1;c0&&a>0){d.clearRect(0,0,o,a),d.globalCompositeOperation="source-over";var p=this.getCachedZSortedEles();if(t.full)d.translate(-n.x1*u,-n.y1*u),d.scale(u,u),this.drawElements(d,p),d.scale(1/u,1/u),d.translate(n.x1*u,n.y1*u);else{var g=e.pan(),v={x:g.x*u,y:g.y*u};u*=e.zoom(),d.translate(v.x,v.y),d.scale(u,u),this.drawElements(d,p),d.scale(1/u,1/u),d.translate(-v.x,-v.y)}t.bg&&(d.globalCompositeOperation="destination-over",d.fillStyle=t.bg,d.rect(0,0,o,a),d.fill())}return h},i.png=function(t){return a(t,this.bufferCanvasImage(t),"image/png")},i.jpg=function(t){return a(t,this.bufferCanvasImage(t),"image/jpeg")},t.exports=i},function(t,e,n){"use strict";var r={nodeShapeImpl:function(t,e,n,r,i,o,a){switch(t){case"ellipse":return this.drawEllipsePath(e,n,r,i,o);case"polygon":return this.drawPolygonPath(e,n,r,i,o,a);case"roundrectangle":return this.drawRoundRectanglePath(e,n,r,i,o);case"cutrectangle":return this.drawCutRectanglePath(e,n,r,i,o);case"bottomroundrectangle":return this.drawBottomRoundRectanglePath(e,n,r,i,o);case"barrel":return this.drawBarrelPath(e,n,r,i,o)}}};t.exports=r},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(18),a=function t(){if(!(this instanceof t))return new t;this.length=0},s=a.prototype;s.instanceString=function(){return"stylesheet"},s.selector=function(t){return this[this.length++]={selector:t,properties:[]},this},s.css=function(t,e){var n=this.length-1;if(r.string(t))this[n].properties.push({name:t,value:e});else if(r.plainObject(t))for(var a=t,s=0;s=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(190),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(21))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){return function(t,e,n){this.source=t,this.target=e,this.type=n}}();e.PowerEdge=r;var i=function(){function t(t,e,n,r){var i=this;if(this.linkAccessor=n,this.modules=new Array(t),this.roots=[],r)this.initModulesFromGroup(r);else{this.roots.push(new s);for(var a=0;a=this.R))return this.merge(e.a,e.b,t),!0}},t.prototype.nEdges=function(t,e){var n=t.incoming.intersection(e.incoming),r=t.outgoing.intersection(e.outgoing);return this.R-n.count()-r.count()},t.prototype.getGroupHierarchy=function(t){var e=this,n=[];return function t(e,n,r){e.forAll(function(e){if(e.isLeaf())n.leaves||(n.leaves=[]),n.leaves.push(e.id);else{var i=n;if(e.gid=r.length,!e.isIsland()||e.isPredefined()){if(i={id:e.gid},e.isPredefined())for(var o in e.definition)i[o]=e.definition[o];n.groups||(n.groups=[]),n.groups.push(e.gid),r.push(i)}t(e.children,i,r)}})}(this.roots[0],{},n),this.allEdges().forEach(function(i){var o=e.modules[i.source],a=e.modules[i.target];t.push(new r(void 0===o.gid?i.source:n[o.gid],void 0===a.gid?i.target:n[a.gid],i.type))}),n},t.prototype.allEdges=function(){var e=[];return t.getEdges(this.roots[0],e),e},t.getEdges=function(e,n){e.forAll(function(e){e.getEdges(n),t.getEdges(e.children,n)})},t}();e.Configuration=i;var o=function(){function t(t,e,n,r,i){void 0===e&&(e=new c),void 0===n&&(n=new c),void 0===r&&(r=new s),this.id=t,this.outgoing=e,this.incoming=n,this.children=r,this.definition=i}return t.prototype.getEdges=function(t){var e=this;this.outgoing.forAll(function(n,i){n.forAll(function(n){t.push(new r(e.id,n.id,i))})})},t.prototype.isLeaf=function(){return 0===this.children.count()},t.prototype.isIsland=function(){return 0===this.outgoing.count()&&0===this.incoming.count()},t.prototype.isPredefined=function(){return void 0!==this.definition},t}();function a(t,e){var n={};for(var r in t)r in e&&(n[r]=t[r]);return n}e.Module=o;var s=function(){function t(){this.table={}}return t.prototype.count=function(){return Object.keys(this.table).length},t.prototype.intersection=function(e){var n=new t;return n.table=a(this.table,e.table),n},t.prototype.intersectionCount=function(t){return this.intersection(t).count()},t.prototype.contains=function(t){return t in this.table},t.prototype.add=function(t){this.table[t.id]=t},t.prototype.remove=function(t){delete this.table[t.id]},t.prototype.forAll=function(t){for(var e in this.table)t(this.table[e])},t.prototype.modules=function(){var t=[];return this.forAll(function(e){e.isPredefined()||t.push(e)}),t},t}();e.ModuleSet=s;var c=function(){function t(){this.sets={},this.n=0}return t.prototype.count=function(){return this.n},t.prototype.contains=function(t){var e=!1;return this.forAllModules(function(n){e||n.id!=t||(e=!0)}),e},t.prototype.add=function(t,e){(t in this.sets?this.sets[t]:this.sets[t]=new s).add(e),++this.n},t.prototype.remove=function(t,e){var n=this.sets[t];n.remove(e),0===n.count()&&delete this.sets[t],--this.n},t.prototype.forAll=function(t){for(var e in this.sets)t(this.sets[e],Number(e))},t.prototype.forAllModules=function(t){this.forAll(function(e,n){return e.forAll(t)})},t.prototype.intersection=function(e){var n=new t;return this.forAll(function(t,r){if(r in e.sets){var i=t.intersection(e.sets[r]),o=i.count();o>0&&(n.sets[r]=i,n.n+=o)}}),n},t}();e.LinkSets=c,e.getGroups=function(t,e,n,r){for(var o=t.length,a=new i(o,e,n,r);a.greedyMerge(););var s=[],c=a.getGroupHierarchy(s);return s.forEach(function(e){var n=function(n){var r=e[n];"number"==typeof r&&(e[n]=t[r])};n("source"),n("target")}),{groups:c,powerEdges:s}}},function(t,e,n){"use strict";var r,i=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(){this.findIter=function(t){for(var e=this._root,n=this.iterator();null!==e;){var r=this._comparator(t,e.data);if(0===r)return n._cursor=e,n;n._ancestors.push(e),e=e.get_child(r>0)}return null}}return t.prototype.clear=function(){this._root=null,this.size=0},t.prototype.find=function(t){for(var e=this._root;null!==e;){var n=this._comparator(t,e.data);if(0===n)return e.data;e=e.get_child(n>0)}return null},t.prototype.lowerBound=function(t){return this._bound(t,this._comparator)},t.prototype.upperBound=function(t){var e=this._comparator;return this._bound(t,function(t,n){return e(n,t)})},t.prototype.min=function(){var t=this._root;if(null===t)return null;for(;null!==t.left;)t=t.left;return t.data},t.prototype.max=function(){var t=this._root;if(null===t)return null;for(;null!==t.right;)t=t.right;return t.data},t.prototype.iterator=function(){return new a(this)},t.prototype.each=function(t){for(var e,n=this.iterator();null!==(e=n.next());)t(e)},t.prototype.reach=function(t){for(var e,n=this.iterator();null!==(e=n.prev());)t(e)},t.prototype._bound=function(t,e){for(var n=this._root,r=this.iterator();null!==n;){var i=this._comparator(t,n.data);if(0===i)return r._cursor=n,r;r._ancestors.push(n),n=n.get_child(i>0)}for(var o=r._ancestors.length-1;o>=0;--o)if(e(t,(n=r._ancestors[o]).data)>0)return r._cursor=n,r._ancestors.length=o,r;return r._ancestors.length=0,r},t}();e.TreeBase=o;var a=function(){function t(t){this._tree=t,this._ancestors=[],this._cursor=null}return t.prototype.data=function(){return null!==this._cursor?this._cursor.data:null},t.prototype.next=function(){if(null===this._cursor){var t=this._tree._root;null!==t&&this._minNode(t)}else{var e;if(null===this._cursor.right)do{if(e=this._cursor,!this._ancestors.length){this._cursor=null;break}this._cursor=this._ancestors.pop()}while(this._cursor.right===e);else this._ancestors.push(this._cursor),this._minNode(this._cursor.right)}return null!==this._cursor?this._cursor.data:null},t.prototype.prev=function(){if(null===this._cursor){var t=this._tree._root;null!==t&&this._maxNode(t)}else{var e;if(null===this._cursor.left)do{if(e=this._cursor,!this._ancestors.length){this._cursor=null;break}this._cursor=this._ancestors.pop()}while(this._cursor.left===e);else this._ancestors.push(this._cursor),this._maxNode(this._cursor.left)}return null!==this._cursor?this._cursor.data:null},t.prototype._minNode=function(t){for(;null!==t.left;)this._ancestors.push(t),t=t.left;this._cursor=t},t.prototype._maxNode=function(t){for(;null!==t.right;)this._ancestors.push(t),t=t.right;this._cursor=t},t}();e.Iterator=a;var s=function(){function t(t){this.data=t,this.left=null,this.right=null,this.red=!0}return t.prototype.get_child=function(t){return t?this.right:this.left},t.prototype.set_child=function(t,e){t?this.right=e:this.left=e},t}(),c=function(t){function e(e){var n=t.call(this)||this;return n._root=null,n._comparator=e,n.size=0,n}return i(e,t),e.prototype.insert=function(t){var n=!1;if(null===this._root)this._root=new s(t),n=!0,this.size++;else{var r=new s(void 0),i=!1,o=!1,a=null,c=r,u=null,l=this._root;for(c.right=this._root;;){if(null===l?(l=new s(t),u.set_child(i,l),n=!0,this.size++):e.is_red(l.left)&&e.is_red(l.right)&&(l.red=!0,l.left.red=!1,l.right.red=!1),e.is_red(l)&&e.is_red(u)){var f=c.right===a;l===u.get_child(o)?c.set_child(f,e.single_rotate(a,!o)):c.set_child(f,e.double_rotate(a,!o))}var h=this._comparator(l.data,t);if(0===h)break;o=i,i=h<0,null!==a&&(c=a),a=u,u=l,l=l.get_child(i)}this._root=r.right}return this._root.red=!1,n},e.prototype.remove=function(t){if(null===this._root)return!1;var n=new s(void 0),r=n;r.right=this._root;for(var i=null,o=null,a=null,c=!0;null!==r.get_child(c);){var u=c;o=i,i=r,r=r.get_child(c);var l=this._comparator(t,r.data);if(c=l>0,0===l&&(a=r),!e.is_red(r)&&!e.is_red(r.get_child(c)))if(e.is_red(r.get_child(!c))){var f=e.single_rotate(r,c);i.set_child(u,f),i=f}else if(!e.is_red(r.get_child(!c))){var h=i.get_child(!u);if(null!==h)if(e.is_red(h.get_child(!u))||e.is_red(h.get_child(u))){var d=o.right===i;e.is_red(h.get_child(u))?o.set_child(d,e.double_rotate(i,u)):e.is_red(h.get_child(!u))&&o.set_child(d,e.single_rotate(i,u));var p=o.get_child(d);p.red=!0,r.red=!0,p.left.red=!1,p.right.red=!1}else i.red=!1,h.red=!0,r.red=!0}}return null!==a&&(a.data=r.data,i.set_child(i.right===r,r.get_child(null===r.left)),this.size--),this._root=n.right,null!==this._root&&(this._root.red=!1),null!==a},e.is_red=function(t){return null!==t&&t.red},e.single_rotate=function(t,e){var n=t.get_child(!e);return t.set_child(!e,n.get_child(e)),n.set_child(e,t),t.red=!0,n.red=!1,n},e.double_rotate=function(t,n){return t.set_child(!n,e.single_rotate(t.get_child(!n),!n)),e.single_rotate(t,n)},e}(o);e.RBTree=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this.elem=t,this.subheaps=[]}return t.prototype.toString=function(t){for(var e="",n=!1,r=0;r0}function f(t,e,n){return u(t,e,n)<0}function h(t,e){var n,r,i,o,a=e.length-1;if(f(t,e[1],e[0])&&!l(t,e[a-1],e[0]))return 0;for(n=0,r=a;;){if(r-n==1)return l(t,e[n],e[r])?n:r;if((o=f(t,e[(i=Math.floor((n+r)/2))+1],e[i]))&&!l(t,e[i-1],e[i]))return i;l(t,e[n+1],e[n])?o?r=i:l(t,e[n],e[i])?r=i:n=i:o&&f(t,e[n],e[i])?r=i:n=i}}function d(t,e){var n,r,i,o,a=e.length-1;if(l(t,e[a-1],e[0])&&!f(t,e[1],e[0]))return 0;for(n=0,r=a;;){if(r-n==1)return f(t,e[n],e[r])?n:r;if(o=f(t,e[(i=Math.floor((n+r)/2))+1],e[i]),l(t,e[i-1],e[i])&&!o)return i;f(t,e[n+1],e[n])?o?f(t,e[n],e[i])?r=i:n=i:r=i:o?n=i:l(t,e[n],e[i])?r=i:n=i}}function p(t,e,n,r,i,o){var a,s;s=r(t[a=n(e[0],t)],e);for(var c=!1;!c;){for(c=!0;a===t.length-1&&(a=0),!i(e[s],t[a],t[a+1]);)++a;for(;0===s&&(s=e.length-1),!o(t[a],e[s],e[s-1]);)--s,c=!1}return{t1:a,t2:s}}function g(t,e){return p(t,e,h,d,l,f)}e.PolyPoint=c,e.isLeft=u,e.ConvexHull=function(t){var e,n=t.slice(0).sort(function(t,e){return t.x!==e.x?e.x-t.x:e.y-t.y}),r=t.length,i=n[0].x;for(e=1;e=0&&n[e].x===l;e--);for(s=e+1,e=o;++e<=s;)if(!(u(n[0],n[s],n[e])>=0&&e1&&!(u(a[a.length-2],a[a.length-1],n[e])>0);)a.length-=1;0!=e&&a.push(n[e])}c!=s&&a.push(n[c]);var f=a.length;for(e=s;--e>=o;)if(!(u(n[c],n[o],n[e])>=0&&e>o)){for(;a.length>f&&!(u(a[a.length-2],a[a.length-1],n[e])>0);)a.length-=1;0!=e&&a.push(n[e])}}return a},e.clockwiseRadialSweep=function(t,e,n){e.slice(0).sort(function(e,n){return Math.atan2(e.y-t.y,e.x-t.x)-Math.atan2(n.y-t.y,n.x-t.x)}).forEach(n)},e.tangent_PolyPolyC=p,e.LRtangent_PolyPolyC=function(t,e){var n=g(e,t);return{t1:n.t2,t2:n.t1}},e.RLtangent_PolyPolyC=g,e.LLtangent_PolyPolyC=function(t,e){return p(t,e,d,d,f,f)},e.RRtangent_PolyPolyC=function(t,e){return p(t,e,h,h,l,l)};var v=function(){return function(t,e){this.t1=t,this.t2=e}}();e.BiTangent=v;var b=function(){return function(){}}();e.BiTangents=b;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(a);e.TVGPoint=y;var w=function(){return function(t,e,n,r){this.id=t,this.polyid=e,this.polyvertid=n,this.p=r,r.vv=this}}();e.VisibilityVertex=w;var m=function(){function t(t,e){this.source=t,this.target=e}return t.prototype.length=function(){var t=this.source.p.x-this.target.p.x,e=this.source.p.y-this.target.p.y;return Math.sqrt(t*t+e*e)},t}();e.VisibilityEdge=m;var x=function(){function t(t,e){if(this.P=t,this.V=[],this.E=[],e)this.V=e.V.slice(0),this.E=e.E.slice(0);else{for(var n=t.length,r=0;r0&&this.E.push(new m(i[o-1].vv,s))}i.length>1&&this.E.push(new m(i[0].vv,i[i.length-1].vv))}for(r=0;r0)return!0;return!1},t}();function _(t,e){for(var n=[],r=1,i=e.length;r=0&&g>=0&&y<0&&w>=0&&m>=0&&x<0?i.ll=new v(o,a):p<=0&&g<=0&&y>0&&w<=0&&m<=0&&x>0?i.rr=new v(o,a):p<=0&&g>0&&y<=0&&w>=0&&m<0&&x>=0?i.rl=new v(o,a):p>=0&&g<0&&y>=0&&w<=0&&m>0&&x<=0&&(i.lr=new v(o,a))}return i}function k(t,e){return!t.every(function(t){return!function(t,e){for(var n=1,r=e.length;n0)return!0}return!1}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={PADDING:10,GOLDEN_SECTION:(1+Math.sqrt(5))/2,FLOAT_EPSILON:1e-4,MAX_INERATIONS:100};e.applyPacking=function(t,e,n,i,o,a){void 0===o&&(o=1),void 0===a&&(a=!0);var s=0,c=0,u=e,l=n,f=(o=void 0!==o?o:1,i=void 0!==i?i:0,0),h=0,d=0,p=0,g=[];function v(t,e){g=[],f=0,h=0,p=c;for(var n=0;n=t.height&&g[i].x+g[i].width+t.width+r.PADDING-e<=r.FLOAT_EPSILON){n=g[i];break}g.push(t),void 0!==n?(t.x=n.x+n.width+r.PADDING,t.y=n.bottom,t.space_left=t.height,t.bottom=t.y,n.space_left-=t.height+r.PADDING,n.bottom+=t.height+r.PADDING):(t.y=p,p+=t.height+r.PADDING,t.x=s,t.bottom=t.y,t.space_left=t.height),t.y+t.height-h>-r.FLOAT_EPSILON&&(h=t.y+t.height-c),t.x+t.width-f>-r.FLOAT_EPSILON&&(f=t.x+t.width-s)}0!=t.length&&(function(t){t.forEach(function(t){var e,n,r,o,a;e=t,n=Number.MAX_VALUE,r=Number.MAX_VALUE,o=0,a=0,e.array.forEach(function(t){var e=void 0!==t.width?t.width:i,s=void 0!==t.height?t.height:i;e/=2,s/=2,o=Math.max(t.x+e,o),n=Math.min(t.x-e,n),a=Math.max(t.y+s,a),r=Math.min(t.y-s,r)}),e.width=o-n,e.height=a-r})}(t),function(t,e){var n=Number.POSITIVE_INFINITY,i=0;t.sort(function(t,e){return e.height-t.height}),d=t.reduce(function(t,e){return t.widthd||h>r.FLOAT_EPSILON;){if(1!=l)var p=a-(a-o)/r.GOLDEN_SECTION,c=v(t,p);if(0!=l)var g=o+(a-o)/r.GOLDEN_SECTION,u=v(t,g);if(f=Math.abs(p-g),h=Math.abs(c-u),cu?(o=p,p=g,c=u,l=1):(a=g,g=p,u=c,l=0),s++>100)break}v(t,i)}(t),a&&function(t){t.forEach(function(t){var e={x:0,y:0};t.array.forEach(function(t){e.x+=t.x,e.y+=t.y}),e.x/=t.array.length,e.y/=t.array.length;var n={x:e.x-t.width/2,y:e.y-t.height/2},r={x:t.x-n.x+u/2-f/2,y:t.y-n.y+l/2-h/2};t.array.forEach(function(t){t.x+=r.x,t.y+=r.y})})}(t))},e.separateGraphs=function(t,e){for(var n={},r={},i=[],o=0,a=0;a=o.length?(this.length=r.length,this.si=r.si,this.ti=r.ti,this.reversed=!1):(this.length=o.length,this.si=o.si,this.ti=n.length-o.ti-o.length,this.reversed=!0)}return t.findMatch=function(t,e){for(var n=t.length,r=e.length,i={length:0,si:-1,ti:-1},o=new Array(n),a=0;ai.length&&(i.length=c,i.si=a-c+1,i.ti=s-c+1)}else o[a][s]=0}return i},t.prototype.getSequence=function(){return this.length>=0?this.s.slice(this.si,this.si+this.length):[]},t}();e.LongestCommonSubsequence=c;var u=function(){function t(t,e,n){void 0===n&&(n=12);var i=this;this.originalnodes=t,this.groupPadding=n,this.leaves=null,this.nodes=t.map(function(t,n){return new a(n,e.getBounds(t),e.getChildren(t))}),this.leaves=this.nodes.filter(function(t){return t.leaf}),this.groups=this.nodes.filter(function(t){return!t.leaf}),this.cols=this.getGridLines("x"),this.rows=this.getGridLines("y"),this.groups.forEach(function(t){return t.children.forEach(function(e){return i.nodes[e].parent=t})}),this.root={children:[]},this.nodes.forEach(function(t){void 0===t.parent&&(t.parent=i.root,i.root.children.push(t.id)),t.ports=[]}),this.backToFront=this.nodes.slice(0),this.backToFront.sort(function(t,e){return i.getDepth(t)-i.getDepth(e)}),this.backToFront.slice(0).reverse().filter(function(t){return!t.leaf}).forEach(function(t){var e=r.Rectangle.empty();t.children.forEach(function(t){return e=e.union(i.nodes[t].rect)}),t.rect=e.inflate(i.groupPadding)});var o=this.midPoints(this.cols.map(function(t){return t.pos})),c=this.midPoints(this.rows.map(function(t){return t.pos})),u=o[0],l=o[o.length-1],f=c[0],h=c[c.length-1],d=this.rows.map(function(t){return{x1:u,x2:l,y1:t.pos,y2:t.pos}}).concat(c.map(function(t){return{x1:u,x2:l,y1:t,y2:t}})),p=this.cols.map(function(t){return{x1:t.pos,x2:t.pos,y1:f,y2:h}}).concat(o.map(function(t){return{x1:t,x2:t,y1:f,y2:h}})),g=d.concat(p);g.forEach(function(t){return t.verts=[]}),this.verts=[],this.edges=[],d.forEach(function(t){return p.forEach(function(e){var n=new s(i.verts.length,e.x1,t.y1);t.verts.push(n),e.verts.push(n),i.verts.push(n);for(var r=i.backToFront.length;r-- >0;){var o=i.backToFront[r],a=o.rect,c=Math.abs(n.x-a.cx()),u=Math.abs(n.y-a.cy());if(c0;){var r=n.filter(function(e){return e.rect["overlap"+t.toUpperCase()](n[0].rect)}),i={nodes:r,pos:this.avg(r.map(function(e){return e.rect["c"+t]()}))};e.push(i),i.nodes.forEach(function(t){return n.splice(n.indexOf(t),1)})}return e.sort(function(t,e){return t.pos-e.pos}),e},t.prototype.getDepth=function(t){for(var e=0;t.parent!==this.root;)e++,t=t.parent;return e},t.prototype.midPoints=function(t){for(var e=t[1]-t[0],n=[t[0]-e/2],r=1;r.1)&&(u={pos:f[0][e],segments:[]},c.push(u)),u.segments.push(f)}return c},t.nudgeSegs=function(t,e,n,r,o,a){var s=r.length;if(!(s<=1)){for(var c=r.map(function(e){return new i.Variable(e[0][t])}),u=[],l=0;l=0&&u.push(new i.Constraint(c[v],c[b],a))}new i.Solver(c,u).solve(),c.forEach(function(e,i){var o=r[i],a=e.position();o[0][t]=o[1][t]=a;var s=n[o.edgeid];o.i>0&&(s[o.i-1][1][t]=a),o.iMath.PI||i<-Math.PI)&&(i=r-n),i},t.isLeft=function(t,e,n){return(e.x-t.x)*(n.y-t.y)-(e.y-t.y)*(n.x-t.x)<=0},t.getOrder=function(t){for(var e={},n=0;n=u.length||f.ti+f.length>=l.length)?n.push({l:r,r:i}):(f.si+f.length>=u.length||f.ti+f.length>=l.length?(o=u[f.si+1],s=u[f.si-1],a=l[f.ti-1]):(o=u[f.si+f.length-2],a=u[f.si+f.length],s=l[f.ti+f.length]),t.isLeft(o,a,s)?n.push({l:i,r:r}):n.push({l:r,r:i})))}return t.getOrder(n)},t.makeSegments=function(t){function e(t){return{x:t.x,y:t.y}}for(var n=function(t,e,n){return Math.abs((e.x-t.x)*(n.y-t.y)-(e.y-t.y)*(n.x-t.x))<.001},r=[],i=e(t[0]),o=1;o1&&l>1?1e3:0}).reverse().map(function(t){return n.verts[t]});return l.push(this.nodes[i.id].ports[0]),l.filter(function(t,e){return!(e0&&t.node===i&&l[e-1].node===i)})},t.getRoutePath=function(e,n,r,i){var o={routepath:"M "+e[0][0].x+" "+e[0][0].y+" ",arrowpath:""};if(e.length>1)for(var a=0;a0?s-=u/Math.abs(u)*n:c-=l/Math.abs(l)*n,o.routepath+="L "+s+" "+c+" ";var f=e[a+1],h=f[0].x,d=f[0].y;u=f[1].x-h,l=f[1].y-d;var p,g,v=t.angleBetween2Lines(m,f)<0?1:0;Math.abs(u)>0?(p=h+u/Math.abs(u)*n,g=d):(p=h,g=d+l/Math.abs(l)*n);var b=Math.abs(p-s),y=Math.abs(g-c);o.routepath+="A "+b+" "+y+" 0 0 "+v+" "+p+" "+g+" "}else{var w=[s,c];Math.abs(u)>0?(x=[s-=u/Math.abs(u)*i,c+r],_=[s,c-r]):(x=[s+r,c-=l/Math.abs(l)*i],_=[s-r,c]),o.routepath+="L "+s+" "+c+" ",i>0&&(o.arrowpath="M "+w[0]+" "+w[1]+" L "+x[0]+" "+x[1]+" L "+_[0]+" "+_[1])}}else{var m,x,_;s=(m=e[0])[1].x,c=m[1].y,u=s-m[0].x,l=c-m[0].y,w=[s,c];Math.abs(u)>0?(x=[s-=u/Math.abs(u)*i,c+r],_=[s,c-r]):(x=[s+r,c-=l/Math.abs(l)*i],_=[s-r,c]),o.routepath+="L "+s+" "+c+" ",i>0&&(o.arrowpath="M "+w[0]+" "+w[1]+" L "+x[0]+" "+x[1]+" L "+_[0]+" "+_[1])}return o},t}();e.GridRouter=u},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(21))},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(116),i=n(71),o=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var a=t[e];o.call(t,e)&&i(a,n)&&(void 0!==n||e in t)||r(t,e,n)}},function(t,e,n){var r=n(117);t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},function(t,e,n){var r=n(13),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,n){var r=n(240),i=n(42),o=n(1),a=n(32),s=n(119),c=n(43),u=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=o(t),l=!n&&i(t),f=!n&&!l&&a(t),h=!n&&!l&&!f&&c(t),d=n||l||f||h,p=d?r(t.length,String):[],g=p.length;for(var v in t)!e&&!u.call(t,v)||d&&("length"==v||f&&("offset"==v||"parent"==v)||h&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||s(v,g))||p.push(v);return p}},function(t,e){var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var i=typeof t;return!!(e=null==e?n:e)&&("number"==i||"symbol"!=i&&r.test(t))&&t>-1&&t%1==0&&th))return!1;var p=l.get(t);if(p&&l.get(e))return p==e;var g=-1,v=!0,b=n&s?new r:void 0;for(l.set(t,e),l.set(e,t);++g0&&(o=c.removeMin(),(a=s[o]).distance!==Number.POSITIVE_INFINITY);)r(o).forEach(u);return s}(t,String(e),n||o,r||function(e){return t.outEdges(e)})};var o=r.constant(1)},function(t,e,n){var r=n(4);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map(function(t){return t.key})},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,o=i.length;return n[t]=o,i.push({key:t,priority:e}),this._decrease(o),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){var e=this._arr,n=2*t,r=n+1,i=t;n>1].priorityh))return!1;var p=l.get(t);if(p&&l.get(e))return p==e;var g=-1,v=!0,b=n&s?new r:void 0;for(l.set(t,e),l.set(e,t);++g0&&o(l)?n>1?t(l,n-1,o,a,s):r(s,l):a||(s[s.length]=l)}return s}},function(t,e,n){var r=n(62),i=n(19);t.exports=function(t,e){var n=-1,o=i(t)?Array(t.length):[];return r(t,function(t,r,i){o[++n]=e(t,r,i)}),o}},function(t,e,n){var r=n(55),i=n(25);t.exports=function(t,e,n){(void 0===n||i(t[e],n))&&(void 0!==n||e in t)||r(t,e,n)}},function(t,e){t.exports=function(t,e){return"__proto__"==e?void 0:t[e]}},function(t,e){t.exports=function(t,e){return t0&&t.remove(c),s.length>0&&t.add(s),u.forEach(function(e){var n=e.ele1,o=e.ele2;return l(t,n,o,r,i,a)})},l=function(t,e,n,r,i,o){var a=i(i(n,"data"),"id"),s=t.getElementById(a),c={};["data","position","selected","selectable","locked","grabbable","classes"].forEach(function(t){var a=i(n,t);o(a,i(e,t))&&(c[t]=r(a))});var u=i(n,"scratch");o(u,i(e,"scratch"))&&s.scratch(r(u)),Object.keys(c).length>0&&s.json(c)}}]))},function(t,e){t.exports=window.ReactDOM},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i,o,a,s,c=1,u={},l=!1,f=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){p(t)})}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){p(t.data)},r=function(t){o.port2.postMessage(t)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(t){var e=f.createElement("script");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):r=function(t){setTimeout(p,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&p(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),h.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n=e||n<0||h&&t-l>=a}function x(){var t=v();if(m(t))return _(t);c=setTimeout(x,function(t){var n=e-(t-u);return h?g(n,a-(t-l)):n}(t))}function _(t){return c=void 0,d&&i?w(t):(i=o=void 0,s)}function E(){var t=v(),n=m(t);if(i=arguments,o=this,u=t,n){if(void 0===c)return function(t){return l=t,c=setTimeout(x,e),f?w(t):s}(u);if(h)return c=setTimeout(x,e),w(u)}return void 0===c&&(c=setTimeout(x,e)),s}return e=y(e)||0,b(r)&&(f=!!r.leading,a=(h="maxWait"in r)?p(y(r.maxWait)||0,e):a,d="trailing"in r?!!r.trailing:d),E.cancel=function(){void 0!==c&&clearTimeout(c),l=0,i=u=o=c=void 0},E.flush=function(){return void 0===c?s:_(v())},E}}).call(this,n(21))},function(t,e,n){t.exports=n(194)},function(t,e,n){var r,i,o;(function(){var n,a,s,c,u,l,f,h,d,p,g,v,b,y,w;s=Math.floor,p=Math.min,a=function(t,e){return te?1:0},d=function(t,e,n,r,i){var o;if(null==n&&(n=0),null==i&&(i=a),n<0)throw new Error("lo must be non-negative");for(null==r&&(r=t.length);nn;0<=n?e++:e--)u.push(e);return u}.apply(this).reverse()).length;rg;0<=g?++l:--l)v.push(u(t,n));return v},y=function(t,e,n,r){var i,o,s;for(null==r&&(r=a),i=t[n];n>e&&r(i,o=t[s=n-1>>1])<0;)t[n]=o,n=s;return t[n]=i},w=function(t,e,n){var r,i,o,s,c;for(null==n&&(n=a),i=t.length,c=e,o=t[e],r=2*e+1;r1e-4&&Math.abs(l.v)>1e-4;);return o?function(t){return s[t*(s.length-1)|0]}:c}}();t.exports=r},function(t,e,n){"use strict";var r=n(0);function i(t,e,n,r,i){if(1===r)return n;var o=i(e,n,r);return null==t?o:((t.roundValue||t.color)&&(o=Math.round(o)),void 0!==t.min&&(o=Math.max(o,t.min)),void 0!==t.max&&(o=Math.min(o,t.max)),o)}function o(t,e){return null!=t.pfValue||null!=t.value?null==t.pfValue||null!=e&&"%"===e.type.units?t.value:t.pfValue:t}t.exports=function(t,e,n,a,s){var c=null!=s?s.type:null;n<0?n=0:n>1&&(n=1);var u=o(t,s),l=o(e,s);if(r.number(u)&&r.number(l))return i(c,u,l,n,a);if(r.array(u)&&r.array(l)){for(var f=[],h=0;h0},startBatch:function(){var t=this._private;return null==t.batchCount&&(t.batchCount=0),0===t.batchCount&&(t.batchingStyle=t.batchingNotify=!0,t.batchStyleEles=this.collection(),t.batchNotifyEles=this.collection(),t.batchNotifyTypes=[],t.batchNotifyTypes.ids={}),t.batchCount++,this},endBatch:function(){var t=this._private;return t.batchCount--,0===t.batchCount&&(t.batchingStyle=!1,t.batchStyleEles.updateStyle(),t.batchingNotify=!1,this.notify({type:t.batchNotifyTypes,eles:t.batchNotifyEles})),this},batch:function(t){return this.startBatch(),t(),this.endBatch(),this},batchData:function(t){var e=this;return this.batch(function(){for(var n=Object.keys(t),r=0;r0;)t.removeChild(t.childNodes[0]);this._private.renderer=null},onRender:function(t){return this.on("render",t)},offRender:function(t){return this.off("render",t)}};i.invalidateDimensions=i.resize,t.exports=i},function(t,e,n){"use strict";var r=n(0),i=n(7),o={collection:function(t,e){return r.string(t)?this.$(t):r.elementOrCollection(t)?t.collection():r.array(t)?new i(this,t,e):new i(this)},nodes:function(t){var e=this.$(function(t){return t.isNode()});return t?e.filter(t):e},edges:function(t){var e=this.$(function(t){return t.isEdge()});return t?e.filter(t):e},$:function(t){var e=this._private.elements;return t?e.filter(t):e.spawnSelf()},mutableElements:function(){return this._private.elements}};o.elements=o.filter=o.$,t.exports=o},function(t,e,n){"use strict";var r=n(0),i=n(18),o={style:function(t){t&&this.setStyle(t).update();return this._private.style},setStyle:function(t){var e=this._private;return r.stylesheet(t)?e.style=t.generateStyle(this):r.array(t)?e.style=i.fromJson(this,t):r.string(t)?e.style=i.fromString(this,t):e.style=i(this),e.style}};t.exports=o},function(t,e,n){"use strict";var r=n(1),i=n(0),o=n(5),a={apply:function(t){var e=this._private,n=e.cy.collection();e.newStyle&&(e.contextStyles={},e.propDiffs={},this.cleanElements(t,!0));for(var r=0;r0;if(u||l){var f=void 0;u&&l?f=c.properties:u?f=c.properties:l&&(f=c.mappedProperties);for(var h=0;h0){n=!0;break}}e.hasPie=n;var i=t.pstyle("text-transform").strValue,o=t.pstyle("label").strValue,a=t.pstyle("source-label").strValue,s=t.pstyle("target-label").strValue,c=t.pstyle("font-style").strValue,u=t.pstyle("font-size").pfValue+"px",l=t.pstyle("font-family").strValue,f=t.pstyle("font-weight").strValue,h=c+"$"+u+"$"+l+"$"+f+"$"+i+"$"+t.pstyle("text-valign").strValue+"$"+t.pstyle("text-valign").strValue+"$"+t.pstyle("text-outline-width").pfValue+"$"+t.pstyle("text-wrap").strValue+"$"+t.pstyle("text-max-width").pfValue;e.labelStyleKey=h,e.sourceLabelKey=h+"$"+a,e.targetLabelKey=h+"$"+s,e.labelKey=h+"$"+o,e.fontKey=c+"$"+f+"$"+u+"$"+l,e.styleKey=Date.now()}},applyParsedProperty:function(t,e){var n=this,o=e,a=t._private.style,s=void 0,c=n.types,u=n.properties[o.name].type,l=o.bypass,f=a[o.name],h=f&&f.bypass,d=t._private,p=function(){n.checkZOrderTrigger(t,o.name,f?f.value:null,o.value)};if("curve-style"===e.name&&"haystack"===e.value&&t.isEdge()&&(t.isLoop()||t.source().isParent()||t.target().isParent())&&(o=e=this.parse(e.name,"bezier",l)),o.delete)return a[o.name]=void 0,p(),!0;if(o.deleteBypassed)return f?!!f.bypass&&(f.bypassed=void 0,p(),!0):(p(),!0);if(o.deleteBypass)return f?!!f.bypass&&(a[o.name]=f.bypassed,p(),!0):(p(),!0);var g=function(){r.error("Do not assign mappings to elements without corresponding data (e.g. ele `"+t.id()+"` for property `"+o.name+"` with data field `"+o.field+"`); try a `["+o.field+"]` selector to limit scope to elements with `"+o.field+"` defined")};switch(o.mapped){case c.mapData:for(var v=o.field.split("."),b=d.data,y=0;y1&&(w=1),u.color){var m=o.valueMin[0],x=o.valueMax[0],_=o.valueMin[1],E=o.valueMax[1],k=o.valueMin[2],S=o.valueMax[2],T=null==o.valueMin[3]?1:o.valueMin[3],j=null==o.valueMax[3]?1:o.valueMax[3],O=[Math.round(m+(x-m)*w),Math.round(_+(E-_)*w),Math.round(k+(S-k)*w),Math.round(T+(j-T)*w)];s={bypass:o.bypass,name:o.name,value:O,strValue:"rgb("+O[0]+", "+O[1]+", "+O[2]+")"}}else{if(!u.number)return!1;var C=o.valueMin+(o.valueMax-o.valueMin)*w;s=this.parse(o.name,C,o.bypass,"mapping")}s||(s=this.parse(o.name,f.strValue,o.bypass,"mapping")),s||g(),s.mapping=o,o=s;break;case c.data:var P=o.field.split("."),N=d.data;if(N)for(var L=0;L0&&c>0){for(var l={},f=!1,h=0;h0?t.delayAnimation(u).play().promise().then(e):e()}).then(function(){return t.animation({style:l,duration:c,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,s),t.emitAndNotify("style"),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(t,s),t.emitAndNotify("style"),a.transitioning=!1)},checkZOrderTrigger:function(t,e,n,r){var i=this.properties[e];null==i.triggersZOrder||null!=n&&!i.triggersZOrder(n,r)||this._private.cy.notify({type:"zorder",eles:t})}};t.exports=a},function(t,e,n){"use strict";var r=n(0),i=n(1),o={applyBypass:function(t,e,n,o){var a=[];if("*"===e||"**"===e){if(void 0!==n)for(var s=0;sn.length?e.substr(n.length):""}function c(){o=o.length>a.length?o.substr(a.length):""}for(e=e.replace(/[\/][*](\s|.)+?[*][\/]/g,"");;){if(e.match(/^\s*$/))break;var u=e.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!u){r.error("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+e);break}n=u[0];var l=u[1];if("core"!==l)if(new i(l)._private.invalid){r.error("Skipping parsing of block: Invalid selector found in string stylesheet: "+l),s();continue}var f=u[2],h=!1;o=f;for(var d=[];;){if(o.match(/^\s*$/))break;var p=o.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!p){r.error("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+f),h=!0;break}a=p[0];var g=p[1],v=p[2];if(this.properties[g])this.parse(g,v)?(d.push({name:g,val:v}),c()):(r.error("Skipping property: Invalid property definition in: "+a),c());else r.error("Skipping property: Invalid property name in: "+a),c()}if(h){s();break}this.selector(l);for(var b=0;b node").css({shape:"rectangle",padding:10,"background-color":"#eee","border-color":"#ccc","border-width":1}).selector("edge").css({width:3,"curve-style":"haystack"}).selector(":parent <-> node").css({"curve-style":"bezier","source-endpoint":"outside-to-line","target-endpoint":"outside-to-line"}).selector(":selected").css({"background-color":"#0169D9","line-color":"#0169D9","source-arrow-color":"#0169D9","target-arrow-color":"#0169D9","mid-source-arrow-color":"#0169D9","mid-target-arrow-color":"#0169D9"}).selector("node:parent:selected").css({"background-color":"#CCE1F9","border-color":"#aec8e5"}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}).selector("core").css({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":30,"outside-texture-bg-color":"#000","outside-texture-bg-opacity":.125}),this.defaultLength=this.length},t.exports=o},function(t,e,n){"use strict";var r=n(1),i=n(0),o=n(2),a={parse:function(t,e,n,o){if(i.fn(e))return this.parseImplWarn(t,e,n,o);var a=[t,e,n,"mapping"===o||!0===o||!1===o||null==o?"dontcare":o].join("$"),s=this.propCache=this.propCache||{},c=void 0;return(c=s[a])||(c=s[a]=this.parseImplWarn(t,e,n,o)),(n||"mapping"===o)&&(c=r.copy(c))&&(c.value=r.copy(c.value)),c},parseImplWarn:function(t,e,n,i){var o=this.parseImpl(t,e,n,i);return o||null==e||r.error("The style property `%s: %s` is invalid",t,e),o},parseImpl:function(t,e,n,a){t=r.camel2dash(t);var s=this.properties[t],c=e,u=this.types;if(!s)return null;if(void 0===e)return null;s.alias&&(s=s.pointsTo,t=s.name);var l=i.string(e);l&&(e=e.trim());var f=s.type;if(!f)return null;if(n&&(""===e||null===e))return{name:t,value:e,bypass:!0,deleteBypass:!0};if(i.fn(e))return{name:t,value:e,strValue:"fn",mapped:u.fn,bypass:n};var h=void 0,d=void 0;if(!l||a);else{if(h=new RegExp(u.data.regex).exec(e)){if(n)return!1;var p=u.data;return{name:t,value:h,strValue:""+e,mapped:p,field:h[1],bypass:n}}if(d=new RegExp(u.mapData.regex).exec(e)){if(n)return!1;if(f.multiple)return!1;var g=u.mapData;if(!f.color&&!f.number)return!1;var v=this.parse(t,d[4]);if(!v||v.mapped)return!1;var b=this.parse(t,d[5]);if(!b||b.mapped)return!1;if(v.value===b.value)return!1;if(f.color){var y=v.value,w=b.value;if(!(y[0]!==w[0]||y[1]!==w[1]||y[2]!==w[2]||y[3]!==w[3]&&(null!=y[3]&&1!==y[3]||null!=w[3]&&1!==w[3])))return!1}return{name:t,value:d,strValue:""+e,mapped:g,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:v.value,valueMax:b.value,bypass:n}}}if(f.multiple&&"multiple"!==a){var m=void 0;if(m=l?e.split(/\s+/):i.array(e)?e:[e],f.evenMultiple&&m.length%2!=0)return null;for(var x=[],_=[],E=[],k=!1,S=0;Sf.max||f.strictMax&&e===f.max))return null;var L={name:t,value:e,strValue:""+e+(O||""),units:O,bypass:n};return f.unitless||"px"!==O&&"em"!==O?L.pfValue=e:L.pfValue="px"!==O&&O?this.getEmSizeInPixels()*e:e,"ms"!==O&&"s"!==O||(L.pfValue="ms"===O?e:1e3*e),"deg"!==O&&"rad"!==O||(L.pfValue="rad"===O?e:o.deg2rad(e)),"%"===O&&(L.pfValue=e/100),L}if(f.propList){var A=[],I=""+e;if("none"===I);else{for(var D=I.split(","),M=0;M0&&s>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:c=(c=(c=Math.min((a-2*e)/n.w,(s-2*e)/n.h))>this._private.maxZoom?this._private.maxZoom:c)e.maxZoom?e.maxZoom:s)e.maxZoom||!e.zoomingEnabled?a=!0:(e.zoom=c,o.push("zoom"))}if(i&&(!a||!t.cancelOnFailedZoom)&&e.panningEnabled){var u=t.pan;r.number(u.x)&&(e.pan.x=u.x,s=!1),r.number(u.y)&&(e.pan.y=u.y,s=!1),s||o.push("pan")}return o.length>0&&(o.push("viewport"),this.emit(o.join(" ")),this.notify({type:"viewport"})),this},center:function(t){var e=this.getCenterPan(t);return e&&(this._private.pan=e,this.emit("pan viewport"),this.notify({type:"viewport"})),this},getCenterPan:function(t,e){if(this._private.panningEnabled){if(r.string(t)){var n=t;t=this.mutableElements().filter(n)}else r.elementOrCollection(t)||(t=this.mutableElements());if(0!==t.length){var i=t.boundingBox(),o=this.width(),a=this.height();return{x:(o-(e=void 0===e?this._private.zoom:e)*(i.x1+i.x2))/2,y:(a-e*(i.y1+i.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var t,e,n=this._private,r=n.container;return n.sizeCache=n.sizeCache||(r?(t=i.getComputedStyle(r),e=function(e){return parseFloat(t.getPropertyValue(e))},{width:r.clientWidth-e("padding-left")-e("padding-right"),height:r.clientHeight-e("padding-top")-e("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var t=this._private.pan,e=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-t.x)/e,x2:(n.x2-t.x)/e,y1:(n.y1-t.y)/e,y2:(n.y2-t.y)/e};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var t=this.width(),e=this.height();return{x1:0,y1:0,x2:t,y2:e,w:t,h:e}}};a.centre=a.center,a.autolockNodes=a.autolock,a.autoungrabifyNodes=a.autoungrabify,t.exports=a},function(t,e,n){"use strict";var r=n(1),i=n(4),o=n(7),a=n(12),s=n(95),c=n(0),u=n(11),l={},f={};function h(t,e,n){var s=n,f=function(n){r.error("Can not register `"+e+"` for `"+t+"` since `"+n+"` already exists in the prototype and can not be overridden")};if("core"===t){if(a.prototype[e])return f(e);a.prototype[e]=n}else if("collection"===t){if(o.prototype[e])return f(e);o.prototype[e]=n}else if("layout"===t){for(var h=function(t){this.options=t,n.call(this,t),c.plainObject(this._private)||(this._private={}),this._private.cy=t.cy,this._private.listeners=[],this.createEmitter()},p=h.prototype=Object.create(n.prototype),g=[],v=0;v0;)v();u=n.collection();for(var b=function(t){var e=p[t],n=e.maxDegree(!1),r=e.filter(function(t){return t.degree(!1)===n});u=u.add(r)},y=0;yw.length-1;)w.push([]);w[K].push($),Z.depth=K,Z.index=w[K].length-1}M()}var J=0;if(e.avoidOverlap)for(var tt=0;ttu||0===e)&&(r+=c/l,i++)}return r/=i=Math.max(1,i),0===i&&(r=void 0),it[t.id()]=r,r},at=function(t,e){return ot(t)-ot(e)},st=0;st<3;st++){for(var ct=0;ct0&&w[0].length<=3?l/2:0),h=2*Math.PI/w[i].length*o;return 0===i&&1===w[0].length&&(f=1),{x:ft+f*Math.cos(h),y:ht+f*Math.sin(h)}}return{x:ft+(o+1-(a+1)/2)*s,y:(i+1)*u}}var d={x:ft+(o+1-(a+1)/2)*s,y:(i+1)*u};return d},pt={},gt=w.length-1;gt>=0;gt--)for(var vt=w[gt],bt=0;bt1&&e.avoidOverlap){d*=1.75;var y=Math.cos(f)-Math.cos(0),w=Math.sin(f)-Math.sin(0),m=Math.sqrt(d*d/(y*y+w*w));h=Math.max(m,h)}return s.layoutPositions(this,e,function(t,n){var r=e.startAngle+n*f*(a?1:-1),i=h*Math.cos(r),o=h*Math.sin(r);return{x:u+i,y:l+o}}),this},t.exports=s},function(t,e,n){"use strict";var r=n(1),i=n(2),o={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(t){return t.degree()},levelWidth:function(t){return t.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(t,e){return!0},ready:void 0,stop:void 0,transform:function(t,e){return e}};function a(t){this.options=r.extend({},o,t)}a.prototype.run=function(){for(var t=this.options,e=t,n=void 0!==e.counterclockwise?!e.counterclockwise:e.clockwise,r=t.cy,o=e.eles.nodes().not(":parent"),a=i.makeBoundingBox(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=a.x1+a.w/2,c=a.y1+a.h/2,u=[],l=(e.startAngle,0),f=0;f0)Math.abs(y[0].value-m.value)>=v&&(y=[],b.push(y));y.push(m)}var x=l+e.minNodeSpacing;if(!e.avoidOverlap){var _=b.length>0&&b[0].length>1,E=(Math.min(a.w,a.h)/2-x)/(b.length+_?1:0);x=Math.min(x,E)}for(var k=0,S=0;S1&&e.avoidOverlap){var C=Math.cos(O)-Math.cos(0),P=Math.sin(O)-Math.sin(0),N=Math.sqrt(x*x/(C*C+P*P));k=Math.max(N,k)}T.r=k,k+=x}if(e.equidistant){for(var L=0,A=0,I=0;I0)var u=(h=r.nodeOverlap*s)*i/(y=Math.sqrt(i*i+o*o)),f=h*o/y;else{var h,d=l(t,i,o),p=l(e,-1*i,-1*o),g=p.x-d.x,v=p.y-d.y,b=g*g+v*v,y=Math.sqrt(b);u=(h=(t.nodeRepulsion+e.nodeRepulsion)/b)*g/y,f=h*v/y}t.isLocked||(t.offsetX-=u,t.offsetY-=f),e.isLocked||(e.offsetX+=u,e.offsetY+=f)}},c=function(t,e,n,r){if(n>0)var i=t.maxX-e.minX;else i=e.maxX-t.minX;if(r>0)var o=t.maxY-e.minY;else o=e.maxY-t.minY;return i>=0&&o>=0?Math.sqrt(i*i+o*o):0},l=function(t,e,n){var r=t.positionX,i=t.positionY,o=t.height||1,a=t.width||1,s=n/e,c=o/a,u={};return 0===e&&0n?(u.x=r,u.y=i+o/2,u):0e&&-1*c<=s&&s<=c?(u.x=r-a/2,u.y=i-a*n/2/e,u):0=c)?(u.x=r+o*e/2/n,u.y=i+o/2,u):0>n&&(s<=-1*c||s>=c)?(u.x=r-o*e/2/n,u.y=i-o/2,u):u},f=function(t,e){for(var n=0;n1){var p=e.gravity*f/d,g=e.gravity*h/d;l.offsetX+=p,l.offsetY+=g}}}}},d=function(t,e){var n=[],r=0,i=-1;for(n.push.apply(n,t.graphSet[0]),i+=t.graphSet[0].length;r<=i;){var o=n[r++],a=t.idToIndex[o],s=t.layoutNodes[a],c=s.children;if(0n)var i={x:n*t/r,y:n*e/r};else i={x:t,y:e};return i},v=function t(e,n){var r=e.parentId;if(null!=r){var i=n.layoutNodes[n.idToIndex[r]],o=!1;return(null==i.maxX||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,o=!0),(null==i.minX||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,o=!0),(null==i.minY||e.minY-i.padTopg&&(h+=p+e.componentSpacing,f=0,d=0,p=0)}}}(0,i),r}).then(function(t){f.layoutNodes=t.layoutNodes,o.stop(),y()});var y=function(){!0===t.animate||!1===t.animate?b({force:!0,next:function(){n.one("layoutstop",t.stop),n.emit({type:"layoutstop",layout:n})}}):t.eles.nodes().layoutPositions(n,t,function(t){var e=f.layoutNodes[f.idToIndex[t.data("id")]];return{x:e.positionX,y:e.positionY}})};return this},u.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},u.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var l=function(t,e,n){for(var r=n.eles.edges(),i=n.eles.nodes(),s={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:t.width(),clientHeight:t.width(),boundingBox:o.makeBoundingBox(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()})},c=n.eles.components(),u={},l=0;l0){s.graphSet.push(E);for(l=0;lr.count?0:r.graph},h=function t(e,n,r,i){var o=i.graphSet[r];if(-1a){var p=l(),g=f();(p-1)*g>=a?l(p-1):(g-1)*p>=a&&f(g-1)}else for(;u*c=a?f(b+1):l(v+1)}var y=o.w/u,w=o.h/c;if(e.condense&&(y=0,w=0),e.avoidOverlap)for(var m=0;m=u&&(N=0,P++)},A={},I=0;I(r=i.sqdistToFiniteLine(t,e,x[_],x[_+1],x[_+2],x[_+3])))return y(n,r),!0}else if("bezier"===a.edgeType||"multibezier"===a.edgeType||"self"===a.edgeType||"compound"===a.edgeType)for(x=a.allpts,_=0;_+5(r=i.sqdistToQuadraticBezier(t,e,x[_],x[_+1],x[_+2],x[_+3],x[_+4],x[_+5])))return y(n,r),!0;b=b||o.source,m=m||o.target;var E=c.getArrowWidth(s,l),k=[{name:"source",x:a.arrowStartX,y:a.arrowStartY,angle:a.srcArrowAngle},{name:"target",x:a.arrowEndX,y:a.arrowEndY,angle:a.tgtArrowAngle},{name:"mid-source",x:a.midX,y:a.midY,angle:a.midsrcArrowAngle},{name:"mid-target",x:a.midX,y:a.midY,angle:a.midtgtArrowAngle}];for(_=0;_0&&(w(b),w(m))}function x(t,e,n){return o.getPrefixedProperty(t,e,n)}function _(n,r){var o,a=n._private,s=v;o=r?r+"-":"";var c=n.pstyle(o+"label").value;if("yes"===n.pstyle("text-events").strValue&&c){var u=a.rstyle,l=n.pstyle("text-border-width").pfValue,f=n.pstyle("text-background-padding").pfValue,h=x(u,"labelWidth",r)+l+2*s+2*f,d=x(u,"labelHeight",r)+l+2*s+2*f,p=x(u,"labelX",r),g=x(u,"labelY",r),b=x(a.rscratch,"labelAngle",r),w=p-h/2,m=p+h/2,_=g-d/2,E=g+d/2;if(b){var k=Math.cos(b),S=Math.sin(b),T=function(t,e){return{x:(t-=p)*k-(e-=g)*S+p,y:t*S+e*k+g}},j=T(w,_),O=T(w,E),C=T(m,_),P=T(m,E),N=[j.x,j.y,C.x,C.y,P.x,P.y,O.x,O.y];if(i.pointInsidePolygonPoints(t,e,N))return y(n),!0}else{var L={w:h,h:d,x1:w,x2:m,y1:_,y2:E};if(i.inBoundingBox(L,t,e))return y(n),!0}}}n&&(l=l.interactive);for(var E=l.length-1;E>=0;E--){var k=l[E];k.isNode()?w(k)||_(k):m(k)||_(k)||_(k,"source")||_(k,"target")}return f},getAllInBox:function(t,e,n,r){var o=this.getCachedZSortedEles().interactive,a=[],s=Math.min(t,n),c=Math.max(t,n),u=Math.min(e,r),l=Math.max(e,r);t=s,n=c,e=u,r=l;for(var f=i.makeBoundingBox({x1:t,y1:e,x2:n,y2:r}),h=0;hy?y+"$-$"+b:b+"$-$"+y,g&&(e="unbundled$-$"+p.id);var w=l[e];null==w&&(w=l[e]=[],f.push(e)),w.push(Ue),g&&(w.hasUnbundled=!0),v&&(w.hasBezier=!0)}else h.push(Ue)}for(var m=0;mKe.id()){var _=Qe;Qe=Ke,Ke=_}Je=Qe.position(),tn=Ke.position(),en=Qe.outerWidth(),rn=Qe.outerHeight(),nn=Ke.outerWidth(),on=Ke.outerHeight(),n=c.nodeShapes[this.getNodeShape(Qe)],o=c.nodeShapes[this.getNodeShape(Ke)],s=!1;var E={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0},k=Je.x,S=Je.y,T=en,j=rn,O=tn.x,C=tn.y,P=nn,N=on,L=x.length;for(d=0;d=h||x){d={cp:y,segment:m};break}}if(d)break}y=d.cp;var _=(h-g)/(m=d.segment).length,E=m.t1-m.t0,k=f?m.t0+E*_:m.t1-E*_;k=r.bound(0,k,1),e=r.qbezierPtAt(y.p0,y.p1,y.p2,k),s=function(t,e,n,i){var o=r.bound(0,i-.001,1),a=r.bound(0,i+.001,1),s=r.qbezierPtAt(t,e,n,o),u=r.qbezierPtAt(t,e,n,a);return c(s,u)}(y.p0,y.p1,y.p2,k);break;case"straight":case"segments":case"haystack":var S,T,j,O,C=0,P=i.allpts.length;for(b=0;b+3=h));b+=2);k=(h-T)/S;k=r.bound(0,k,1),e=r.lineAt(j,O,k),s=c(j,O)}l("labelX",o,e.x),l("labelY",o,e.y),l("labelAutoAngle",o,s)}};h("source"),h("target"),this.applyLabelDimensions(t)}},a.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))},a.applyPrefixedLabelDimensions=function(t,e){var n=t._private,r=this.getLabelText(t,e),i=this.calculateLabelDimensions(t,r);o.setPrefixedProperty(n.rstyle,"labelWidth",e,i.width),o.setPrefixedProperty(n.rscratch,"labelWidth",e,i.width),o.setPrefixedProperty(n.rstyle,"labelHeight",e,i.height),o.setPrefixedProperty(n.rscratch,"labelHeight",e,i.height)},a.getLabelText=function(t,e){var n=t._private,r=e?e+"-":"",i=t.pstyle(r+"label").strValue,a=t.pstyle("text-transform").value,s=function(t,r){return r?(o.setPrefixedProperty(n.rscratch,t,e,r),r):o.getPrefixedProperty(n.rscratch,t,e)};if(!i)return"";"none"==a||("uppercase"==a?i=i.toUpperCase():"lowercase"==a&&(i=i.toLowerCase()));var c=t.pstyle("text-wrap").value;if("wrap"===c){var u=s("labelKey");if(u&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var l=i.split("\n"),f=t.pstyle("text-max-width").pfValue,h=[],d=0;df){for(var g=p.split(/\s+/),v="",b=0;bf)break;m+=i[_],_===i.length-1&&(x=!0)}return x||(m+="…"),m}return i},a.calculateLabelDimensions=function(t,e,n){var r=t._private.labelStyleKey+"$@$"+e;n&&(r+="$@$"+n);var i=this.labelDimCache||(this.labelDimCache={});if(i[r])return i[r];var o=t.pstyle("font-style").strValue,a=1*t.pstyle("font-size").pfValue+"px",s=t.pstyle("font-family").strValue,c=t.pstyle("font-weight").strValue,u=this.labelCalcDiv;u||(u=this.labelCalcDiv=document.createElement("div"),document.body.appendChild(u));var l=u.style;return l.fontFamily=s,l.fontStyle=o,l.fontSize=a,l.fontWeight=c,l.position="absolute",l.left="-9999px",l.top="-9999px",l.zIndex="-1",l.visibility="hidden",l.pointerEvents="none",l.padding="0",l.lineHeight="1","wrap"===t.pstyle("text-wrap").value?l.whiteSpace="pre":l.whiteSpace="normal",u.textContent=e,i[r]={width:Math.ceil(u.clientWidth/1),height:Math.ceil(u.clientHeight/1)},i[r]},a.calculateLabelAngles=function(t){var e=t._private.rscratch,n=t.isEdge(),r=t.pstyle("text-rotation"),i=r.strValue;"none"===i?e.labelAngle=e.sourceLabelAngle=e.targetLabelAngle=0:n&&"autorotate"===i?(e.labelAngle=e.labelAutoAngle,e.sourceLabelAngle=e.sourceLabelAutoAngle,e.targetLabelAngle=e.targetLabelAutoAngle):e.labelAngle=e.sourceLabelAngle=e.targetLabelAngle="autorotate"===i?0:r.pfValue},t.exports=a},function(t,e,n){"use strict";var r={getNodeShape:function(t){var e=t.pstyle("shape").value;if(t.isParent())return"rectangle"===e||"roundrectangle"===e||"cutrectangle"===e||"barrel"===e?e:"rectangle";if("polygon"===e){var n=t.pstyle("shape-polygon-points").value;return this.nodeShapes.makePolygon(n).name}return e}};t.exports=r},function(t,e,n){"use strict";var r={registerCalculationListeners:function(){var t=this.cy,e=t.collection(),n=this,r=function(t,n){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e.merge(t);for(var i=0;i=t.desktopTapThreshold2}var O=n(i);w&&(t.hoverData.tapholdCancelled=!0);s=!0,e(b,["mousemove","vmousemove","tapdrag"],i,{position:{x:d[0],y:d[1]}});var C=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||c.emit("boxstart"),v[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(3===t.hoverData.which){if(w){var P={originalEvent:i,type:"cxtdrag",position:{x:d[0],y:d[1]}};x?x.emit(P):c.emit(P),t.hoverData.cxtDragged=!0,t.hoverData.cxtOver&&b===t.hoverData.cxtOver||(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:i,type:"cxtdragout",position:{x:d[0],y:d[1]}}),t.hoverData.cxtOver=b,b&&b.emit({originalEvent:i,type:"cxtdragover",position:{x:d[0],y:d[1]}}))}}else if(t.hoverData.dragging){if(s=!0,c.panningEnabled()&&c.userPanningEnabled()){var N;if(t.hoverData.justStartedPan){var L=t.hoverData.mdownPos;N={x:(d[0]-L[0])*u,y:(d[1]-L[1])*u},t.hoverData.justStartedPan=!1}else N={x:_[0]*u,y:_[1]*u};c.panBy(N),t.hoverData.dragged=!0}d=t.projectIntoViewport(i.clientX,i.clientY)}else if(1!=v[4]||null!=x&&!x.isEdge()){if(x&&x.isEdge()&&x.active()&&x.unactivate(),x&&x.grabbed()||b==m||(m&&e(m,["mouseout","tapdragout"],i,{position:{x:d[0],y:d[1]}}),b&&e(b,["mouseover","tapdragover"],i,{position:{x:d[0],y:d[1]}}),t.hoverData.last=b),x)if(w){if(c.boxSelectionEnabled()&&O)x&&x.grabbed()&&(h(E),x.emit("free")),C();else if(x&&x.grabbed()&&t.nodeIsDraggable(x)){var A=!t.dragData.didDrag;A&&t.redrawHint("eles",!0),t.dragData.didDrag=!0;var I=[];t.hoverData.draggingEles||l(c.collection(E),{inDragLayer:!0});for(var D=0;D0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=c=[]),e(s,["mouseup","tapend","vmouseup"],r,{position:{x:o[0],y:o[1]}}),t.dragData.didDrag||t.hoverData.dragged||t.hoverData.selecting||t.hoverData.isOverThresholdDrag||e(u,["click","tap","vclick"],r,{position:{x:o[0],y:o[1]}}),s!=u||t.dragData.didDrag||t.hoverData.selecting||null!=s&&s._private.selectable&&(t.hoverData.dragging||("additive"===i.selectionType()||l?s.selected()?s.unselect():s.select():l||(i.$(":selected").unmerge(s).unselect(),s.select())),t.redrawHint("eles",!0)),t.hoverData.selecting){var p=i.collection(t.getAllInBox(a[0],a[1],a[2],a[3]));t.redrawHint("select",!0),p.length>0&&t.redrawHint("eles",!0),i.emit("boxend");var g=function(t){return t.selectable()&&!t.selected()};"additive"===i.selectionType()?p.emit("box").stdFilter(g).select().emit("boxselect"):(l||i.$(":selected").unmerge(p).unselect(),p.emit("box").stdFilter(g).select().emit("boxselect")),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!a[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var v=u&&u.grabbed();h(c),v&&u.emit("free")}}a[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null}},!1);var w,m,x,_,E,k,S,T,j,O,C,P,N;t.registerBinding(t.container,"wheel",function(e){if(!t.scrollingPage){var n,r=t.cy,i=t.projectIntoViewport(e.clientX,e.clientY),o=[i[0]*r.zoom()+r.pan().x,i[1]*r.zoom()+r.pan().y];t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||0!==t.selection[4]?e.preventDefault():r.panningEnabled()&&r.userPanningEnabled()&&r.zoomingEnabled()&&r.userZoomingEnabled()&&(e.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150),n=null!=e.deltaY?e.deltaY/-250:null!=e.wheelDeltaY?e.wheelDeltaY/1e3:e.wheelDelta/1e3,n*=t.wheelSensitivity,1===e.deltaMode&&(n*=33),r.zoom({level:r.zoom()*Math.pow(10,n),renderedPosition:{x:o[0],y:o[1]}}))}},!0),t.registerBinding(window,"scroll",function(e){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,"mouseout",function(e){var n=t.projectIntoViewport(e.clientX,e.clientY);t.cy.emit({originalEvent:e,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),t.registerBinding(t.container,"mouseover",function(e){var n=t.projectIntoViewport(e.clientX,e.clientY);t.cy.emit({originalEvent:e,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var L,A,I,D,M=function(t,e,n,r){return Math.sqrt((n-t)*(n-t)+(r-e)*(r-e))},R=function(t,e,n,r){return(n-t)*(n-t)+(r-e)*(r-e)};if(t.registerBinding(t.container,"touchstart",L=function(n){if(y(n)){p(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var r=t.cy,i=t.touchData.now,o=t.touchData.earlier;if(n.touches[0]){var a=t.projectIntoViewport(n.touches[0].clientX,n.touches[0].clientY);i[0]=a[0],i[1]=a[1]}if(n.touches[1]){a=t.projectIntoViewport(n.touches[1].clientX,n.touches[1].clientY);i[2]=a[0],i[3]=a[1]}if(n.touches[2]){a=t.projectIntoViewport(n.touches[2].clientX,n.touches[2].clientY);i[4]=a[0],i[5]=a[1]}if(n.touches[1]){h(t.dragData.touchDragEles);var s=t.findContainerClientCoords();j=s[0],O=s[1],C=s[2],P=s[3],w=n.touches[0].clientX-j,m=n.touches[0].clientY-O,x=n.touches[1].clientX-j,_=n.touches[1].clientY-O,N=0<=w&&w<=C&&0<=x&&x<=C&&0<=m&&m<=P&&0<=_&&_<=P;var u=r.pan(),d=r.zoom();E=M(w,m,x,_),k=R(w,m,x,_),T=[((S=[(w+x)/2,(m+_)/2])[0]-u.x)/d,(S[1]-u.y)/d];if(k<4e4&&!n.touches[2]){var g=t.findNearestElement(i[0],i[1],!0,!0),v=t.findNearestElement(i[2],i[3],!0,!0);return g&&g.isNode()?(g.activate().emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),t.touchData.start=g):v&&v.isNode()?(v.activate().emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),t.touchData.start=v):r.emit({originalEvent:n,type:"cxttapstart",position:{x:i[0],y:i[1]}}),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!0,t.touchData.cxtDragged=!1,t.data.bgActivePosistion=void 0,void t.redraw()}}if(n.touches[2]);else if(n.touches[1]);else if(n.touches[0]){var b=t.findNearestElements(i[0],i[1],!0,!0),L=b[0];if(null!=L&&(L.activate(),t.touchData.start=L,t.touchData.starts=b,t.nodeIsGrabbable(L))){var A=t.dragData.touchDragEles=[],I=null;t.redrawHint("eles",!0),t.redrawHint("drag",!0),L.selected()?(I=r.$(function(e){return e.selected()&&t.nodeIsGrabbable(e)}),l(I,{addToList:A})):f(L,{addToList:A}),c(L);var D=function(t){return{originalEvent:n,type:t,position:{x:i[0],y:i[1]}}};L.emit(D("grabon")),I?I.forEach(function(t){t.emit(D("grab"))}):L.emit(D("grab"))}e(L,["touchstart","tapstart","vmousedown"],n,{position:{x:i[0],y:i[1]}}),null==L&&(t.data.bgActivePosistion={x:a[0],y:a[1]},t.redrawHint("select",!0),t.redraw()),t.touchData.singleTouchMoved=!1,t.touchData.singleTouchStartTime=+new Date,clearTimeout(t.touchData.tapholdTimeout),t.touchData.tapholdTimeout=setTimeout(function(){!1!==t.touchData.singleTouchMoved||t.pinching||t.touchData.selecting||(e(t.touchData.start,["taphold"],n,{position:{x:i[0],y:i[1]}}),t.touchData.start||r.$(":selected").unselect())},t.tapholdDuration)}if(n.touches.length>=1){for(var G=t.touchData.startPosition=[],B=0;B=t.touchTapThreshold2}if(i&&t.touchData.cxt){n.preventDefault();var A=n.touches[0].clientX-j,I=n.touches[0].clientY-O,D=n.touches[1].clientX-j,G=n.touches[1].clientY-O,B=R(A,I,D,G);if(B/k>=2.25||B>=22500){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Y={originalEvent:n,type:"cxttapend",position:{x:u[0],y:u[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(Y),t.touchData.start=null):c.emit(Y)}}if(i&&t.touchData.cxt){Y={originalEvent:n,type:"cxtdrag",position:{x:u[0],y:u[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Y):c.emit(Y),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var F=t.findNearestElement(u[0],u[1],!0,!0);t.touchData.cxtOver&&F===t.touchData.cxtOver||(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:n,type:"cxtdragout",position:{x:u[0],y:u[1]}}),t.touchData.cxtOver=F,F&&F.emit({originalEvent:n,type:"cxtdragover",position:{x:u[0],y:u[1]}}))}else if(i&&n.touches[2]&&c.boxSelectionEnabled())n.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||c.emit("boxstart"),t.touchData.selecting=!0,t.redrawHint("select",!0),s&&0!==s.length&&void 0!==s[0]?(s[2]=(u[0]+u[2]+u[4])/3,s[3]=(u[1]+u[3]+u[5])/3):(s[0]=(u[0]+u[2]+u[4])/3,s[1]=(u[1]+u[3]+u[5])/3,s[2]=(u[0]+u[2]+u[4])/3+1,s[3]=(u[1]+u[3]+u[5])/3+1),s[4]=1,t.touchData.selecting=!0,t.redraw();else if(i&&n.touches[1]&&c.zoomingEnabled()&&c.panningEnabled()&&c.userZoomingEnabled()&&c.userPanningEnabled()){if(n.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),tt=t.dragData.touchDragEles){t.redrawHint("drag",!0);for(var H=0;H0&&!t.hoverData.draggingEles&&!t.swipePanning&&null!=t.data.bgActivePosistion&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1),t.registerBinding(window,"touchcancel",I=function(e){var n=t.touchData.start;t.touchData.capture=!1,n&&n.unactivate()}),t.registerBinding(window,"touchend",D=function(n){var r=t.touchData.start;if(t.touchData.capture){0===n.touches.length&&(t.touchData.capture=!1),n.preventDefault();var i=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var o,a=t.cy,s=a.zoom(),c=t.touchData.now,u=t.touchData.earlier;if(n.touches[0]){var l=t.projectIntoViewport(n.touches[0].clientX,n.touches[0].clientY);c[0]=l[0],c[1]=l[1]}if(n.touches[1]){l=t.projectIntoViewport(n.touches[1].clientX,n.touches[1].clientY);c[2]=l[0],c[3]=l[1]}if(n.touches[2]){l=t.projectIntoViewport(n.touches[2].clientX,n.touches[2].clientY);c[4]=l[0],c[5]=l[1]}if(r&&r.unactivate(),t.touchData.cxt){if(o={originalEvent:n,type:"cxttapend",position:{x:c[0],y:c[1]}},r?r.emit(o):a.emit(o),!t.touchData.cxtDragged){var f={originalEvent:n,type:"cxttap",position:{x:c[0],y:c[1]}};r?r.emit(f):a.emit(f)}return t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,void t.redraw()}if(!n.touches[2]&&a.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var d=a.collection(t.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,t.redrawHint("select",!0),a.emit("boxend");d.emit("box").stdFilter(function(t){return t.selectable()&&!t.selected()}).select().emit("boxselect"),d.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(null!=r&&r.unactivate(),n.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(n.touches[1]);else if(n.touches[0]);else if(!n.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var p=t.dragData.touchDragEles;if(null!=r){var g=r._private.grabbed;h(p),t.redrawHint("drag",!0),t.redrawHint("eles",!0),g&&r.emit("free"),e(r,["touchend","tapend","vmouseup","tapdragout"],n,{position:{x:c[0],y:c[1]}}),r.unactivate(),t.touchData.start=null}else{var v=t.findNearestElement(c[0],c[1],!0,!0);e(v,["touchend","tapend","vmouseup","tapdragout"],n,{position:{x:c[0],y:c[1]}})}var b=t.touchData.startPosition[0]-c[0],y=b*b,w=t.touchData.startPosition[1]-c[1],m=(y+w*w)*s*s;null!=r&&!t.dragData.didDrag&&r._private.selectable&&m0)return p[0]}return null},d=Object.keys(f),p=0;p0?h:r.roundRectangleIntersectLine(o,a,t,e,n,i,s)},checkPoint:function(t,e,n,i,o,a,s){var c=r.getRoundRectangleRadius(i,o),u=2*c;if(r.pointInsidePolygon(t,e,this.points,a,s,i,o-u,[0,-1],n))return!0;if(r.pointInsidePolygon(t,e,this.points,a,s,i-u,o,[0,-1],n))return!0;var l=i/2+2*n,f=o/2+2*n,h=[a-l,s-f,a-l,s,a+l,s,a+l,s-f];return!!r.pointInsidePolygonPoints(t,e,h)||(!!r.checkInEllipse(t,e,u,u,a+i/2-c,s+o/2-c,n)||!!r.checkInEllipse(t,e,u,u,a-i/2+c,s+o/2-c,n))}}},registerNodeShapes:function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",r.generateUnitNgonPointsFitToSquare(3,0)),this.generatePolygon("rectangle",r.generateUnitNgonPointsFitToSquare(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle(),this.generatePolygon("diamond",[0,1,1,0,0,-1,-1,0]),this.generatePolygon("pentagon",r.generateUnitNgonPointsFitToSquare(5,0)),this.generatePolygon("hexagon",r.generateUnitNgonPointsFitToSquare(6,0)),this.generatePolygon("heptagon",r.generateUnitNgonPointsFitToSquare(7,0)),this.generatePolygon("octagon",r.generateUnitNgonPointsFitToSquare(8,0));var n=new Array(20),i=r.generateUnitNgonPoints(5,0),o=r.generateUnitNgonPoints(5,Math.PI/5),a=.5*(3-Math.sqrt(5));a*=1.57;for(var s=0;s0&&e.data.lyrTxrCache.invalidateElements(n)})}c.CANVAS_LAYERS=3,c.SELECT_BOX=0,c.DRAG=1,c.NODE=2,c.BUFFER_COUNT=3,c.TEXTURE_BUFFER=0,c.MOTIONBLUR_BUFFER_NODE=1,c.MOTIONBLUR_BUFFER_DRAG=2,c.redrawHint=function(t,e){var n=this;switch(t){case"eles":n.data.canvasNeedsRedraw[c.NODE]=e;break;case"drag":n.data.canvasNeedsRedraw[c.DRAG]=e;break;case"select":n.data.canvasNeedsRedraw[c.SELECT_BOX]=e}};var l="undefined"!=typeof Path2D;c.path2dEnabled=function(t){if(void 0===t)return this.pathsEnabled;this.pathsEnabled=!!t},c.usePaths=function(){return l&&this.pathsEnabled},[n(126),n(127),n(128),n(129),n(130),n(131),n(132),n(133),n(134),n(135)].forEach(function(t){r.extend(c,t)}),t.exports=s},function(t,e,n){"use strict";var r=n(2),i=n(1),o=n(9),a=n(19),s={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},c=function(t){this.renderer=t,this.onDequeues=[],this.setupDequeueing()},u=c.prototype;u.reasons=s,u.getTextureQueue=function(t){return this.eleImgCaches=this.eleImgCaches||{},this.eleImgCaches[t]=this.eleImgCaches[t]||[]},u.getRetiredTextureQueue=function(t){var e=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return e[t]=e[t]||[]},u.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new o(function(t,e){return e.reqs-t.reqs})},u.getElementIdToQueue=function(){return this.eleIdToCacheQueue=this.eleIdToCacheQueue||{}},u.getElement=function(t,e,n,i,o){var a=this,c=this.renderer,u=t._private.rscratch,l=c.cy.zoom();if(0===e.w||0===e.h||!t.visible())return null;if(null==i&&(i=Math.ceil(r.log2(l*n))),i<-4)i=-4;else if(l>=3.99||i>2)return null;var f,h=Math.pow(2,i),d=e.h*h,p=e.w*h,g=u.imgCaches=u.imgCaches||{},v=g[i];if(v)return v;if(f=d<=25?25:d<=50?50:50*Math.ceil(d/50),d>1024||p>1024||t.isEdge()||t.isParent())return null;var b=a.getTextureQueue(f),y=b[b.length-2],w=function(){return a.recycleTexture(f,p)||a.addTexture(f,p)};y||(y=b[b.length-1]),y||(y=w()),y.width-y.usedWidthi;T--)j=a.getElement(t,e,n,T,s.downscale);O()}else{var C;if(!E&&!k&&!S)for(T=i-1;T>=-4;T--){var P;if(P=g[T]){C=P;break}}if(_(C))return a.queueElement(t,i),C;y.context.translate(y.usedWidth,0),y.context.scale(h,h),c.drawElement(y.context,t,e,x),y.context.scale(1/h,1/h),y.context.translate(-y.usedWidth,0)}return v=g[i]={ele:t,x:y.usedWidth,texture:y,level:i,scale:h,width:p,height:d,scaledLabelShown:x},y.usedWidth+=Math.ceil(p+8),y.eleCaches.push(v),a.checkTextureFullness(y),v},u.invalidateElement=function(t){var e=t._private.rscratch.imgCaches;if(e)for(var n=-4;n<=2;n++){var r=e[n];if(r){var o=r.texture;o.invalidatedWidth+=r.width,e[n]=null,i.removeFromArray(o.eleCaches,r),this.removeFromQueue(t),this.checkTextureUtility(o)}}},u.checkTextureUtility=function(t){t.invalidatedWidth>=.5*t.width&&this.retireTexture(t)},u.checkTextureFullness=function(t){var e=this.getTextureQueue(t.height);t.usedWidth/t.width>.8&&t.fullnessChecks>=10?i.removeFromArray(e,t):t.fullnessChecks++},u.retireTexture=function(t){var e=t.height,n=this.getTextureQueue(e);i.removeFromArray(n,t),t.retired=!0;for(var r=t.eleCaches,o=0;o=e)return a.retired=!1,a.usedWidth=0,a.invalidatedWidth=0,a.fullnessChecks=0,i.clearArray(a.eleCaches),a.context.setTransform(1,0,0,1,0,0),a.context.clearRect(0,0,a.width,a.height),i.removeFromArray(r,a),n.push(a),a}},u.queueElement=function(t,e){var n=this.getElementQueue(),r=this.getElementIdToQueue(),i=t.id(),o=r[i];if(o)o.level=Math.max(o.level,e),o.reqs++,n.updateItem(o);else{var a={ele:t,level:e,reqs:1};n.push(a),r[i]=a}},u.dequeue=function(t){for(var e=this.getElementQueue(),n=this.getElementIdToQueue(),r=[],i=0;i<1&&e.size()>0;i++){var o=e.pop(),a=o.ele;if(null==a._private.rscratch.imgCaches[o.level]){n[a.id()]=null,r.push(o);var c=a.boundingBox();this.getElement(a,c,t,o.level,s.dequeue)}}return r},u.removeFromQueue=function(t){var e=this.getElementQueue(),n=this.getElementIdToQueue(),r=n[t.id()];null!=r&&(r.reqs=i.MAX_INT,e.updateItem(r),e.pop(),n[t.id()]=null)},u.onDequeue=function(t){this.onDequeues.push(t)},u.offDequeue=function(t){i.removeFromArray(this.onDequeues,t)},u.setupDequeueing=a.setupDequeueing({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(t,e,n){return t.dequeue(e,n)},onDeqd:function(t,e){for(var n=0;n=3.99||n>2)return null;o.validateLayersElesOrdering(n,t);var c,u,l=o.layersByLevel,f=Math.pow(2,n),h=l[n]=l[n]||[];if(o.levelIsComplete(n,t))return h;!function(){var e=function(e){if(o.validateLayersElesOrdering(e,t),o.levelIsComplete(e,t))return u=l[e],!0},i=function(t){if(!u)for(var r=n+t;-4<=r&&r<=2&&!e(r);r+=t);};i(1),i(-1);for(var a=h.length-1;a>=0;a--){var s=h[a];s.invalid&&r.removeFromArray(h,s)}}();var d=function(e){var r=(e=e||{}).after;if(function(){if(!c){c=i.makeBoundingBox();for(var e=0;e16e6)return null;var a=o.makeLayer(c,n);if(null!=r){var s=h.indexOf(r)+1;h.splice(s,0,a)}else(void 0===e.insert||e.insert)&&h.unshift(a);return a};if(o.skipping&&!s)return null;for(var p=null,g=t.length/1,v=!s,b=0;b=g||!i.boundingBoxInBoundingBox(p.bb,y.boundingBox()))&&!(p=d({insert:!0,after:p})))return null;u||v?o.queueLayer(p,y):o.drawEleInLayer(p,y,n,e),p.eles.push(y),m[n]=p}}return u||(v?null:h)},u.getEleLevelForLayerLevel=function(t,e){return t},u.drawEleInLayer=function(t,e,n,r){var i=this.renderer,o=t.context,a=e.boundingBox();if(0!==a.w&&0!==a.h&&e.visible()){var s=this.eleTxrCache,c=s.reasons.highQuality;n=this.getEleLevelForLayerLevel(n,r);var u=s.getElement(e,a,null,n,c);u?(h(o,!1),o.drawImage(u.texture.canvas,u.x,0,u.width,u.height,a.x1,a.y1,a.w,a.h),h(o,!0)):i.drawElement(o,e)}},u.levelIsComplete=function(t,e){var n=this.layersByLevel[t];if(!n||0===n.length)return!1;for(var r=0,i=0;i0)return!1;if(o.invalid)return!1;r+=o.eles.length}return r===e.length},u.validateLayersElesOrdering=function(t,e){var n=this.layersByLevel[t];if(n)for(var r=0;r0){t=!0;break}}return t},u.invalidateElements=function(t){var e=this;e.lastInvalidationTime=r.performanceNow(),0!==t.length&&e.haveLayers()&&e.updateElementsInLayers(t,function(t,n,r){e.invalidateLayer(t)})},u.invalidateLayer=function(t){if(this.lastInvalidationTime=r.performanceNow(),!t.invalid){var e=t.level,n=t.eles,i=this.layersByLevel[e];r.removeFromArray(i,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:h;t.lineWidth=p,t.lineCap="butt",i.strokeStyle(t,f[0],f[1],f[2],n),i.drawEdgePath(e,t,o.allpts,d)},v=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h;i.drawArrowheads(t,e,n)};if(t.lineJoin="round","yes"===e.pstyle("ghost").value){var b=e.pstyle("ghost-offset-x").pfValue,y=e.pstyle("ghost-offset-y").pfValue,w=e.pstyle("ghost-opacity").value,m=h*w;t.translate(b,y),g(m),v(m),t.translate(-b,-y)}g(),v(),function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u;t.lineWidth=c,"self"!==o.edgeType||a?t.lineCap="round":t.lineCap="butt",i.strokeStyle(t,l[0],l[1],l[2],n),i.drawEdgePath(e,t,o.allpts,"solid")}(),i.drawElementText(t,e,r),n&&t.translate(s.x1,s.y1)}},drawEdgePath:function(t,e,n,r){var i=t._private.rscratch,o=e,a=void 0,s=!1,c=this.usePaths();if(c){var u=n.join("$");i.pathCacheKey&&i.pathCacheKey===u?(a=e=i.pathCache,s=!0):(a=e=new Path2D,i.pathCacheKey=u,i.pathCache=a)}if(o.setLineDash)switch(r){case"dotted":o.setLineDash([1,1]);break;case"dashed":o.setLineDash([6,3]);break;case"solid":o.setLineDash([])}if(!s&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var l=2;l+30||P>0&&C>0){var L=h-N;switch(_){case"left":L-=v;break;case"center":L-=v/2}var A=d-b-N,I=v+2*N,D=b+2*N;if(O>0){var M=t.fillStyle,R=e.pstyle("text-background-color").value;t.fillStyle="rgba("+R[0]+","+R[1]+","+R[2]+","+O*o+")","roundrectangle"==e.pstyle("text-background-shape").strValue?(s=L,c=A,u=I,l=D,f=(f=2)||5,(a=t).beginPath(),a.moveTo(s+f,c),a.lineTo(s+u-f,c),a.quadraticCurveTo(s+u,c,s+u,c+f),a.lineTo(s+u,c+l-f),a.quadraticCurveTo(s+u,c+l,s+u-f,c+l),a.lineTo(s+f,c+l),a.quadraticCurveTo(s,c+l,s,c+l-f),a.lineTo(s,c+f),a.quadraticCurveTo(s,c,s+f,c),a.closePath(),a.fill()):t.fillRect(L,A,I,D),t.fillStyle=M}if(P>0&&C>0){var G=t.strokeStyle,B=t.lineWidth,Y=e.pstyle("text-border-color").value,F=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+Y[0]+","+Y[1]+","+Y[2]+","+C*o+")",t.lineWidth=P,t.setLineDash)switch(F){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=P/4,t.setLineDash([]);break;case"solid":t.setLineDash([])}if(t.strokeRect(L,A,I,D),"double"===F){var H=P/2;t.strokeRect(L+H,A+H,I-2*H,D-2*H)}t.setLineDash&&t.setLineDash([]),t.lineWidth=B,t.strokeStyle=G}}var z=2*e.pstyle("text-outline-width").pfValue;if(z>0&&(t.lineWidth=z),"wrap"===e.pstyle("text-wrap").value){var V=r.getPrefixedProperty(i,"labelWrapCachedLines",n),q=b/V.length;switch(E){case"top":d-=(V.length-1)*q;break;case"center":case"bottom":d-=(V.length-1)*q}for(var U=0;U0&&t.strokeText(V[U],h,d),t.fillText(V[U],h,d),d+=q}else z>0&&t.strokeText(p,h,d),t.fillText(p,h,d);0!==k&&(t.rotate(-k),t.translate(-T,-j))}}},t.exports=o},function(t,e,n){"use strict";var r=n(0),i={drawNode:function(t,e,n,i){var o,a,s=this,c=e._private,u=c.rscratch,l=e.position();if(r.number(l.x)&&r.number(l.y)&&e.visible()){var f=e.effectiveOpacity(),h=s.usePaths(),d=void 0,p=!1,g=e.padding();o=e.width()+2*g,a=e.height()+2*g;var v=void 0;n&&(v=n,t.translate(-v.x1,-v.y1));for(var b=e.pstyle("background-image").value,y=new Array(b.length),w=new Array(b.length),m=0,x=0;x0&&void 0!==arguments[0]?arguments[0]:j;s.fillStyle(t,T[0],T[1],T[2],e)},L=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:P;s.strokeStyle(t,O[0],O[1],O[2],e)},A=e.pstyle("shape").strValue,I=e.pstyle("shape-polygon-points").pfValue;if(h){var D=A+"$"+o+"$"+a+("polygon"===A?"$"+I.join("$"):"");t.translate(l.x,l.y),u.pathCacheKey===D?(d=u.pathCache,p=!0):(d=new Path2D,u.pathCacheKey=D,u.pathCache=d)}var M,R,G,B=function(){if(!p){var n=l;h&&(n={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(d||t,n.x,n.y,o,a)}h?t.fill(d):t.fill()},Y=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,r=c.backgrounding,i=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f;s.hasPie(e)&&(s.drawPie(t,e,r),n&&(h||s.nodeShapes[s.getNodeShape(e)].draw(t,l.x,l.y,o,a)))},H=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,n=(k>0?k:-k)*e,r=k>0?0:255;0!==k&&(s.fillStyle(t,r,r,r,n),h?t.fill(d):t.fill())},z=function(){if(S>0){if(t.lineWidth=S,t.lineCap="butt",t.setLineDash)switch(C){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([])}if(h?t.stroke(d):t.stroke(),"double"===C){t.lineWidth=S/3;var e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",h?t.stroke(d):t.stroke(),t.globalCompositeOperation=e}t.setLineDash&&t.setLineDash([])}};if("yes"===e.pstyle("ghost").value){var V=e.pstyle("ghost-offset-x").pfValue,q=e.pstyle("ghost-offset-y").pfValue,U=e.pstyle("ghost-opacity").value,X=U*f;t.translate(V,q),N(U*j),B(),Y(X),F(0!==k||0!==S),H(X),L(U*P),z(),t.translate(-V,-q)}N(),B(),Y(),F(0!==k||0!==S),H(),L(),z(),h&&t.translate(-l.x,-l.y),s.drawElementText(t,e,i),M=e.pstyle("overlay-padding").pfValue,R=e.pstyle("overlay-opacity").value,G=e.pstyle("overlay-color").value,R>0&&(s.fillStyle(t,G[0],G[1],G[2],R),s.nodeShapes.roundrectangle.draw(t,l.x,l.y,o+2*M,a+2*M),t.fill()),n&&t.translate(v.x1,v.y1)}},hasPie:function(t){return(t=t[0])._private.hasPie},drawPie:function(t,e,n,r){e=e[0],r=r||e.position();var i=e.cy().style(),o=e.pstyle("pie-size"),a=r.x,s=r.y,c=e.width(),u=e.height(),l=Math.min(c,u)/2,f=0;this.usePaths()&&(a=0,s=0),"%"===o.units?l*=o.pfValue:void 0!==o.pfValue&&(l=o.pfValue/2);for(var h=1;h<=i.pieBackgroundN;h++){var d=e.pstyle("pie-"+h+"-background-size").value,p=e.pstyle("pie-"+h+"-background-color").value,g=e.pstyle("pie-"+h+"-background-opacity").value*n,v=d/100;v+f>1&&(v=1-f);var b=1.5*Math.PI+2*Math.PI*f,y=b+2*Math.PI*v;0===d||f>=1||f+v>1||(t.beginPath(),t.moveTo(a,s),t.arc(a,s,l,b,y),t.closePath(),this.fillStyle(t,p[0],p[1],p[2],g),t.fill(),f+=v)}}};t.exports=i},function(t,e,n){"use strict";var r={},i=n(1);r.getPixelRatio=function(){var t=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var e=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/e},r.paintCache=function(t){for(var e,n=this.paintCaches=this.paintCaches||[],r=!0,i=0;is.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!h&&(f[s.NODE]=!0,f[s.SELECT_BOX]=!0);var w=u.style()._private.coreStyle,m=u.zoom(),x=void 0!==o?o:m,_=u.pan(),E={x:_.x,y:_.y},k={zoom:m,pan:{x:_.x,y:_.y}},S=s.prevViewport;void 0===S||k.zoom!==S.zoom||k.pan.x!==S.pan.x||k.pan.y!==S.pan.y||v&&!g||(s.motionBlurPxRatio=1),a&&(E=a),x*=c,E.x*=c,E.y*=c;var T=s.getCachedZSortedEles();function j(t,e,n,r,i){var o=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",s.fillStyle(t,255,255,255,s.motionBlurTransparency),t.fillRect(e,n,r,i),t.globalCompositeOperation=o}function O(t,r){var i,c,u,f;s.clearingMotionBlur||t!==l.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]&&t!==l.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]?(i=E,c=x,u=s.canvasWidth,f=s.canvasHeight):(i={x:_.x*p,y:_.y*p},c=m*p,u=s.canvasWidth*p,f=s.canvasHeight*p),t.setTransform(1,0,0,1,0,0),"motionBlur"===r?j(t,0,0,u,f):e||void 0!==r&&!r||t.clearRect(0,0,u,f),n||(t.translate(i.x,i.y),t.scale(c,c)),a&&t.translate(a.x,a.y),o&&t.scale(o,o)}if(h||(s.textureDrawLastFrame=!1),h){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=u.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var C=s.data.bufferContexts[s.TEXTURE_BUFFER];C.setTransform(1,0,0,1,0,0),C.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:C,drawOnlyNodeLayer:!0,forcedPxRatio:c*s.textureMult}),(k=s.textureCache.viewport={zoom:u.zoom(),pan:u.pan(),width:s.canvasWidth,height:s.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}f[s.DRAG]=!1,f[s.NODE]=!1;var P=l.contexts[s.NODE],N=s.textureCache.texture;k=s.textureCache.viewport;s.textureCache.bb,P.setTransform(1,0,0,1,0,0),d?j(P,0,0,k.width,k.height):P.clearRect(0,0,k.width,k.height);var L=w["outside-texture-bg-color"].value,A=w["outside-texture-bg-opacity"].value;s.fillStyle(P,L[0],L[1],L[2],A),P.fillRect(0,0,k.width,k.height);m=u.zoom();O(P,!1),P.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/c,k.height/k.zoom/c),P.drawImage(N,k.mpan.x,k.mpan.y,k.width/k.zoom/c,k.height/k.zoom/c)}else s.textureOnViewport&&!e&&(s.textureCache=null);var I=u.extent(),D=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles,M=s.hideEdgesOnViewport&&D,R=[];if(R[s.NODE]=!f[s.NODE]&&d&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,R[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),R[s.DRAG]=!f[s.DRAG]&&d&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,R[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),f[s.NODE]||n||r||R[s.NODE]){var G=d&&!R[s.NODE]&&1!==p;O(P=e||(G?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:l.contexts[s.NODE]),d&&!G?"motionBlur":void 0),M?s.drawCachedNodes(P,T.nondrag,c,I):s.drawLayeredElements(P,T.nondrag,c,I),s.debug&&s.drawDebugPoints(P,T.nondrag),n||d||(f[s.NODE]=!1)}if(!r&&(f[s.DRAG]||n||R[s.DRAG])){G=d&&!R[s.DRAG]&&1!==p;O(P=e||(G?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:l.contexts[s.DRAG]),d&&!G?"motionBlur":void 0),M?s.drawCachedNodes(P,T.drag,c,I):s.drawCachedElements(P,T.drag,c,I),s.debug&&s.drawDebugPoints(P,T.drag),n||d||(f[s.DRAG]=!1)}if(s.showFps||!r&&f[s.SELECT_BOX]&&!n){if(O(P=e||l.contexts[s.SELECT_BOX]),1==s.selection[4]&&(s.hoverData.selecting||s.touchData.selecting)){m=s.cy.zoom();var B=w["selection-box-border-width"].value/m;P.lineWidth=B,P.fillStyle="rgba("+w["selection-box-color"].value[0]+","+w["selection-box-color"].value[1]+","+w["selection-box-color"].value[2]+","+w["selection-box-opacity"].value+")",P.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),B>0&&(P.strokeStyle="rgba("+w["selection-box-border-color"].value[0]+","+w["selection-box-border-color"].value[1]+","+w["selection-box-border-color"].value[2]+","+w["selection-box-opacity"].value+")",P.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(l.bgActivePosistion&&!s.hoverData.selecting){m=s.cy.zoom();var Y=l.bgActivePosistion;P.fillStyle="rgba("+w["active-bg-color"].value[0]+","+w["active-bg-color"].value[1]+","+w["active-bg-color"].value[2]+","+w["active-bg-opacity"].value+")",P.beginPath(),P.arc(Y.x,Y.y,w["active-bg-size"].pfValue/m,0,2*Math.PI),P.fill()}var F=s.lastRedrawTime;if(s.showFps&&F){F=Math.round(F);var H=Math.round(1e3/F);P.setTransform(1,0,0,1,0,0),P.fillStyle="rgba(255, 0, 0, 0.75)",P.strokeStyle="rgba(255, 0, 0, 0.75)",P.lineWidth=1,P.fillText("1 frame = "+F+" ms = "+H+" fps",0,20);P.strokeRect(0,30,250,20),P.fillRect(0,30,250*Math.min(H/60,1),20)}n||(f[s.SELECT_BOX]=!1)}if(d&&1!==p){var z=l.contexts[s.NODE],V=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],q=l.contexts[s.DRAG],U=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],X=function(t,e,n){t.setTransform(1,0,0,1,0,0),n||!y?t.clearRect(0,0,s.canvasWidth,s.canvasHeight):j(t,0,0,s.canvasWidth,s.canvasHeight);var r=p;t.drawImage(e,0,0,s.canvasWidth*r,s.canvasHeight*r,0,0,s.canvasWidth,s.canvasHeight)};(f[s.NODE]||R[s.NODE])&&(X(z,V,R[s.NODE]),f[s.NODE]=!1),(f[s.DRAG]||R[s.DRAG])&&(X(q,U,R[s.DRAG]),f[s.DRAG]=!1)}s.prevViewport=k,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),d&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!h,s.mbFrames=0,f[s.NODE]=!0,f[s.DRAG]=!0,s.redraw()},100)),e||u.emit("render")},t.exports=r},function(t,e,n){"use strict";for(var r=n(2),i={drawPolygonPath:function(t,e,n,r,i,o){var a=r/2,s=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+a*o[0],n+s*o[1]);for(var c=1;c0&&a>0){d.clearRect(0,0,o,a),d.globalCompositeOperation="source-over";var p=this.getCachedZSortedEles();if(t.full)d.translate(-n.x1*u,-n.y1*u),d.scale(u,u),this.drawElements(d,p),d.scale(1/u,1/u),d.translate(n.x1*u,n.y1*u);else{var g=e.pan(),v={x:g.x*u,y:g.y*u};u*=e.zoom(),d.translate(v.x,v.y),d.scale(u,u),this.drawElements(d,p),d.scale(1/u,1/u),d.translate(-v.x,-v.y)}t.bg&&(d.globalCompositeOperation="destination-over",d.fillStyle=t.bg,d.rect(0,0,o,a),d.fill())}return h},i.png=function(t){return a(t,this.bufferCanvasImage(t),"image/png")},i.jpg=function(t){return a(t,this.bufferCanvasImage(t),"image/jpeg")},t.exports=i},function(t,e,n){"use strict";var r={nodeShapeImpl:function(t,e,n,r,i,o,a){switch(t){case"ellipse":return this.drawEllipsePath(e,n,r,i,o);case"polygon":return this.drawPolygonPath(e,n,r,i,o,a);case"roundrectangle":return this.drawRoundRectanglePath(e,n,r,i,o);case"cutrectangle":return this.drawCutRectanglePath(e,n,r,i,o);case"bottomroundrectangle":return this.drawBottomRoundRectanglePath(e,n,r,i,o);case"barrel":return this.drawBarrelPath(e,n,r,i,o)}}};t.exports=r},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(18),a=function t(){if(!(this instanceof t))return new t;this.length=0},s=a.prototype;s.instanceString=function(){return"stylesheet"},s.selector=function(t){return this[this.length++]={selector:t,properties:[]},this},s.css=function(t,e){var n=this.length-1;if(r.string(t))this[n].properties.push({name:t,value:e});else if(r.plainObject(t))for(var a=t,s=0;s=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(190),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(21))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){return function(t,e,n){this.source=t,this.target=e,this.type=n}}();e.PowerEdge=r;var i=function(){function t(t,e,n,r){var i=this;if(this.linkAccessor=n,this.modules=new Array(t),this.roots=[],r)this.initModulesFromGroup(r);else{this.roots.push(new s);for(var a=0;a=this.R))return this.merge(e.a,e.b,t),!0}},t.prototype.nEdges=function(t,e){var n=t.incoming.intersection(e.incoming),r=t.outgoing.intersection(e.outgoing);return this.R-n.count()-r.count()},t.prototype.getGroupHierarchy=function(t){var e=this,n=[];return function t(e,n,r){e.forAll(function(e){if(e.isLeaf())n.leaves||(n.leaves=[]),n.leaves.push(e.id);else{var i=n;if(e.gid=r.length,!e.isIsland()||e.isPredefined()){if(i={id:e.gid},e.isPredefined())for(var o in e.definition)i[o]=e.definition[o];n.groups||(n.groups=[]),n.groups.push(e.gid),r.push(i)}t(e.children,i,r)}})}(this.roots[0],{},n),this.allEdges().forEach(function(i){var o=e.modules[i.source],a=e.modules[i.target];t.push(new r(void 0===o.gid?i.source:n[o.gid],void 0===a.gid?i.target:n[a.gid],i.type))}),n},t.prototype.allEdges=function(){var e=[];return t.getEdges(this.roots[0],e),e},t.getEdges=function(e,n){e.forAll(function(e){e.getEdges(n),t.getEdges(e.children,n)})},t}();e.Configuration=i;var o=function(){function t(t,e,n,r,i){void 0===e&&(e=new c),void 0===n&&(n=new c),void 0===r&&(r=new s),this.id=t,this.outgoing=e,this.incoming=n,this.children=r,this.definition=i}return t.prototype.getEdges=function(t){var e=this;this.outgoing.forAll(function(n,i){n.forAll(function(n){t.push(new r(e.id,n.id,i))})})},t.prototype.isLeaf=function(){return 0===this.children.count()},t.prototype.isIsland=function(){return 0===this.outgoing.count()&&0===this.incoming.count()},t.prototype.isPredefined=function(){return void 0!==this.definition},t}();function a(t,e){var n={};for(var r in t)r in e&&(n[r]=t[r]);return n}e.Module=o;var s=function(){function t(){this.table={}}return t.prototype.count=function(){return Object.keys(this.table).length},t.prototype.intersection=function(e){var n=new t;return n.table=a(this.table,e.table),n},t.prototype.intersectionCount=function(t){return this.intersection(t).count()},t.prototype.contains=function(t){return t in this.table},t.prototype.add=function(t){this.table[t.id]=t},t.prototype.remove=function(t){delete this.table[t.id]},t.prototype.forAll=function(t){for(var e in this.table)t(this.table[e])},t.prototype.modules=function(){var t=[];return this.forAll(function(e){e.isPredefined()||t.push(e)}),t},t}();e.ModuleSet=s;var c=function(){function t(){this.sets={},this.n=0}return t.prototype.count=function(){return this.n},t.prototype.contains=function(t){var e=!1;return this.forAllModules(function(n){e||n.id!=t||(e=!0)}),e},t.prototype.add=function(t,e){(t in this.sets?this.sets[t]:this.sets[t]=new s).add(e),++this.n},t.prototype.remove=function(t,e){var n=this.sets[t];n.remove(e),0===n.count()&&delete this.sets[t],--this.n},t.prototype.forAll=function(t){for(var e in this.sets)t(this.sets[e],Number(e))},t.prototype.forAllModules=function(t){this.forAll(function(e,n){return e.forAll(t)})},t.prototype.intersection=function(e){var n=new t;return this.forAll(function(t,r){if(r in e.sets){var i=t.intersection(e.sets[r]),o=i.count();o>0&&(n.sets[r]=i,n.n+=o)}}),n},t}();e.LinkSets=c,e.getGroups=function(t,e,n,r){for(var o=t.length,a=new i(o,e,n,r);a.greedyMerge(););var s=[],c=a.getGroupHierarchy(s);return s.forEach(function(e){var n=function(n){var r=e[n];"number"==typeof r&&(e[n]=t[r])};n("source"),n("target")}),{groups:c,powerEdges:s}}},function(t,e,n){"use strict";var r,i=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(){this.findIter=function(t){for(var e=this._root,n=this.iterator();null!==e;){var r=this._comparator(t,e.data);if(0===r)return n._cursor=e,n;n._ancestors.push(e),e=e.get_child(r>0)}return null}}return t.prototype.clear=function(){this._root=null,this.size=0},t.prototype.find=function(t){for(var e=this._root;null!==e;){var n=this._comparator(t,e.data);if(0===n)return e.data;e=e.get_child(n>0)}return null},t.prototype.lowerBound=function(t){return this._bound(t,this._comparator)},t.prototype.upperBound=function(t){var e=this._comparator;return this._bound(t,function(t,n){return e(n,t)})},t.prototype.min=function(){var t=this._root;if(null===t)return null;for(;null!==t.left;)t=t.left;return t.data},t.prototype.max=function(){var t=this._root;if(null===t)return null;for(;null!==t.right;)t=t.right;return t.data},t.prototype.iterator=function(){return new a(this)},t.prototype.each=function(t){for(var e,n=this.iterator();null!==(e=n.next());)t(e)},t.prototype.reach=function(t){for(var e,n=this.iterator();null!==(e=n.prev());)t(e)},t.prototype._bound=function(t,e){for(var n=this._root,r=this.iterator();null!==n;){var i=this._comparator(t,n.data);if(0===i)return r._cursor=n,r;r._ancestors.push(n),n=n.get_child(i>0)}for(var o=r._ancestors.length-1;o>=0;--o)if(e(t,(n=r._ancestors[o]).data)>0)return r._cursor=n,r._ancestors.length=o,r;return r._ancestors.length=0,r},t}();e.TreeBase=o;var a=function(){function t(t){this._tree=t,this._ancestors=[],this._cursor=null}return t.prototype.data=function(){return null!==this._cursor?this._cursor.data:null},t.prototype.next=function(){if(null===this._cursor){var t=this._tree._root;null!==t&&this._minNode(t)}else{var e;if(null===this._cursor.right)do{if(e=this._cursor,!this._ancestors.length){this._cursor=null;break}this._cursor=this._ancestors.pop()}while(this._cursor.right===e);else this._ancestors.push(this._cursor),this._minNode(this._cursor.right)}return null!==this._cursor?this._cursor.data:null},t.prototype.prev=function(){if(null===this._cursor){var t=this._tree._root;null!==t&&this._maxNode(t)}else{var e;if(null===this._cursor.left)do{if(e=this._cursor,!this._ancestors.length){this._cursor=null;break}this._cursor=this._ancestors.pop()}while(this._cursor.left===e);else this._ancestors.push(this._cursor),this._maxNode(this._cursor.left)}return null!==this._cursor?this._cursor.data:null},t.prototype._minNode=function(t){for(;null!==t.left;)this._ancestors.push(t),t=t.left;this._cursor=t},t.prototype._maxNode=function(t){for(;null!==t.right;)this._ancestors.push(t),t=t.right;this._cursor=t},t}();e.Iterator=a;var s=function(){function t(t){this.data=t,this.left=null,this.right=null,this.red=!0}return t.prototype.get_child=function(t){return t?this.right:this.left},t.prototype.set_child=function(t,e){t?this.right=e:this.left=e},t}(),c=function(t){function e(e){var n=t.call(this)||this;return n._root=null,n._comparator=e,n.size=0,n}return i(e,t),e.prototype.insert=function(t){var n=!1;if(null===this._root)this._root=new s(t),n=!0,this.size++;else{var r=new s(void 0),i=!1,o=!1,a=null,c=r,u=null,l=this._root;for(c.right=this._root;;){if(null===l?(l=new s(t),u.set_child(i,l),n=!0,this.size++):e.is_red(l.left)&&e.is_red(l.right)&&(l.red=!0,l.left.red=!1,l.right.red=!1),e.is_red(l)&&e.is_red(u)){var f=c.right===a;l===u.get_child(o)?c.set_child(f,e.single_rotate(a,!o)):c.set_child(f,e.double_rotate(a,!o))}var h=this._comparator(l.data,t);if(0===h)break;o=i,i=h<0,null!==a&&(c=a),a=u,u=l,l=l.get_child(i)}this._root=r.right}return this._root.red=!1,n},e.prototype.remove=function(t){if(null===this._root)return!1;var n=new s(void 0),r=n;r.right=this._root;for(var i=null,o=null,a=null,c=!0;null!==r.get_child(c);){var u=c;o=i,i=r,r=r.get_child(c);var l=this._comparator(t,r.data);if(c=l>0,0===l&&(a=r),!e.is_red(r)&&!e.is_red(r.get_child(c)))if(e.is_red(r.get_child(!c))){var f=e.single_rotate(r,c);i.set_child(u,f),i=f}else if(!e.is_red(r.get_child(!c))){var h=i.get_child(!u);if(null!==h)if(e.is_red(h.get_child(!u))||e.is_red(h.get_child(u))){var d=o.right===i;e.is_red(h.get_child(u))?o.set_child(d,e.double_rotate(i,u)):e.is_red(h.get_child(!u))&&o.set_child(d,e.single_rotate(i,u));var p=o.get_child(d);p.red=!0,r.red=!0,p.left.red=!1,p.right.red=!1}else i.red=!1,h.red=!0,r.red=!0}}return null!==a&&(a.data=r.data,i.set_child(i.right===r,r.get_child(null===r.left)),this.size--),this._root=n.right,null!==this._root&&(this._root.red=!1),null!==a},e.is_red=function(t){return null!==t&&t.red},e.single_rotate=function(t,e){var n=t.get_child(!e);return t.set_child(!e,n.get_child(e)),n.set_child(e,t),t.red=!0,n.red=!1,n},e.double_rotate=function(t,n){return t.set_child(!n,e.single_rotate(t.get_child(!n),!n)),e.single_rotate(t,n)},e}(o);e.RBTree=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this.elem=t,this.subheaps=[]}return t.prototype.toString=function(t){for(var e="",n=!1,r=0;r0}function f(t,e,n){return u(t,e,n)<0}function h(t,e){var n,r,i,o,a=e.length-1;if(f(t,e[1],e[0])&&!l(t,e[a-1],e[0]))return 0;for(n=0,r=a;;){if(r-n==1)return l(t,e[n],e[r])?n:r;if((o=f(t,e[(i=Math.floor((n+r)/2))+1],e[i]))&&!l(t,e[i-1],e[i]))return i;l(t,e[n+1],e[n])?o?r=i:l(t,e[n],e[i])?r=i:n=i:o&&f(t,e[n],e[i])?r=i:n=i}}function d(t,e){var n,r,i,o,a=e.length-1;if(l(t,e[a-1],e[0])&&!f(t,e[1],e[0]))return 0;for(n=0,r=a;;){if(r-n==1)return f(t,e[n],e[r])?n:r;if(o=f(t,e[(i=Math.floor((n+r)/2))+1],e[i]),l(t,e[i-1],e[i])&&!o)return i;f(t,e[n+1],e[n])?o?f(t,e[n],e[i])?r=i:n=i:r=i:o?n=i:l(t,e[n],e[i])?r=i:n=i}}function p(t,e,n,r,i,o){var a,s;s=r(t[a=n(e[0],t)],e);for(var c=!1;!c;){for(c=!0;a===t.length-1&&(a=0),!i(e[s],t[a],t[a+1]);)++a;for(;0===s&&(s=e.length-1),!o(t[a],e[s],e[s-1]);)--s,c=!1}return{t1:a,t2:s}}function g(t,e){return p(t,e,h,d,l,f)}e.PolyPoint=c,e.isLeft=u,e.ConvexHull=function(t){var e,n=t.slice(0).sort(function(t,e){return t.x!==e.x?e.x-t.x:e.y-t.y}),r=t.length,i=n[0].x;for(e=1;e=0&&n[e].x===l;e--);for(s=e+1,e=o;++e<=s;)if(!(u(n[0],n[s],n[e])>=0&&e1&&!(u(a[a.length-2],a[a.length-1],n[e])>0);)a.length-=1;0!=e&&a.push(n[e])}c!=s&&a.push(n[c]);var f=a.length;for(e=s;--e>=o;)if(!(u(n[c],n[o],n[e])>=0&&e>o)){for(;a.length>f&&!(u(a[a.length-2],a[a.length-1],n[e])>0);)a.length-=1;0!=e&&a.push(n[e])}}return a},e.clockwiseRadialSweep=function(t,e,n){e.slice(0).sort(function(e,n){return Math.atan2(e.y-t.y,e.x-t.x)-Math.atan2(n.y-t.y,n.x-t.x)}).forEach(n)},e.tangent_PolyPolyC=p,e.LRtangent_PolyPolyC=function(t,e){var n=g(e,t);return{t1:n.t2,t2:n.t1}},e.RLtangent_PolyPolyC=g,e.LLtangent_PolyPolyC=function(t,e){return p(t,e,d,d,f,f)},e.RRtangent_PolyPolyC=function(t,e){return p(t,e,h,h,l,l)};var v=function(){return function(t,e){this.t1=t,this.t2=e}}();e.BiTangent=v;var b=function(){return function(){}}();e.BiTangents=b;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(a);e.TVGPoint=y;var w=function(){return function(t,e,n,r){this.id=t,this.polyid=e,this.polyvertid=n,this.p=r,r.vv=this}}();e.VisibilityVertex=w;var m=function(){function t(t,e){this.source=t,this.target=e}return t.prototype.length=function(){var t=this.source.p.x-this.target.p.x,e=this.source.p.y-this.target.p.y;return Math.sqrt(t*t+e*e)},t}();e.VisibilityEdge=m;var x=function(){function t(t,e){if(this.P=t,this.V=[],this.E=[],e)this.V=e.V.slice(0),this.E=e.E.slice(0);else{for(var n=t.length,r=0;r0&&this.E.push(new m(i[o-1].vv,s))}i.length>1&&this.E.push(new m(i[0].vv,i[i.length-1].vv))}for(r=0;r0)return!0;return!1},t}();function _(t,e){for(var n=[],r=1,i=e.length;r=0&&g>=0&&y<0&&w>=0&&m>=0&&x<0?i.ll=new v(o,a):p<=0&&g<=0&&y>0&&w<=0&&m<=0&&x>0?i.rr=new v(o,a):p<=0&&g>0&&y<=0&&w>=0&&m<0&&x>=0?i.rl=new v(o,a):p>=0&&g<0&&y>=0&&w<=0&&m>0&&x<=0&&(i.lr=new v(o,a))}return i}function k(t,e){return!t.every(function(t){return!function(t,e){for(var n=1,r=e.length;n0)return!0}return!1}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={PADDING:10,GOLDEN_SECTION:(1+Math.sqrt(5))/2,FLOAT_EPSILON:1e-4,MAX_INERATIONS:100};e.applyPacking=function(t,e,n,i,o,a){void 0===o&&(o=1),void 0===a&&(a=!0);var s=0,c=0,u=e,l=n,f=(o=void 0!==o?o:1,i=void 0!==i?i:0,0),h=0,d=0,p=0,g=[];function v(t,e){g=[],f=0,h=0,p=c;for(var n=0;n=t.height&&g[i].x+g[i].width+t.width+r.PADDING-e<=r.FLOAT_EPSILON){n=g[i];break}g.push(t),void 0!==n?(t.x=n.x+n.width+r.PADDING,t.y=n.bottom,t.space_left=t.height,t.bottom=t.y,n.space_left-=t.height+r.PADDING,n.bottom+=t.height+r.PADDING):(t.y=p,p+=t.height+r.PADDING,t.x=s,t.bottom=t.y,t.space_left=t.height),t.y+t.height-h>-r.FLOAT_EPSILON&&(h=t.y+t.height-c),t.x+t.width-f>-r.FLOAT_EPSILON&&(f=t.x+t.width-s)}0!=t.length&&(function(t){t.forEach(function(t){var e,n,r,o,a;e=t,n=Number.MAX_VALUE,r=Number.MAX_VALUE,o=0,a=0,e.array.forEach(function(t){var e=void 0!==t.width?t.width:i,s=void 0!==t.height?t.height:i;e/=2,s/=2,o=Math.max(t.x+e,o),n=Math.min(t.x-e,n),a=Math.max(t.y+s,a),r=Math.min(t.y-s,r)}),e.width=o-n,e.height=a-r})}(t),function(t,e){var n=Number.POSITIVE_INFINITY,i=0;t.sort(function(t,e){return e.height-t.height}),d=t.reduce(function(t,e){return t.widthd||h>r.FLOAT_EPSILON;){if(1!=l)var p=a-(a-o)/r.GOLDEN_SECTION,c=v(t,p);if(0!=l)var g=o+(a-o)/r.GOLDEN_SECTION,u=v(t,g);if(f=Math.abs(p-g),h=Math.abs(c-u),cu?(o=p,p=g,c=u,l=1):(a=g,g=p,u=c,l=0),s++>100)break}v(t,i)}(t),a&&function(t){t.forEach(function(t){var e={x:0,y:0};t.array.forEach(function(t){e.x+=t.x,e.y+=t.y}),e.x/=t.array.length,e.y/=t.array.length;var n={x:e.x-t.width/2,y:e.y-t.height/2},r={x:t.x-n.x+u/2-f/2,y:t.y-n.y+l/2-h/2};t.array.forEach(function(t){t.x+=r.x,t.y+=r.y})})}(t))},e.separateGraphs=function(t,e){for(var n={},r={},i=[],o=0,a=0;a=o.length?(this.length=r.length,this.si=r.si,this.ti=r.ti,this.reversed=!1):(this.length=o.length,this.si=o.si,this.ti=n.length-o.ti-o.length,this.reversed=!0)}return t.findMatch=function(t,e){for(var n=t.length,r=e.length,i={length:0,si:-1,ti:-1},o=new Array(n),a=0;ai.length&&(i.length=c,i.si=a-c+1,i.ti=s-c+1)}else o[a][s]=0}return i},t.prototype.getSequence=function(){return this.length>=0?this.s.slice(this.si,this.si+this.length):[]},t}();e.LongestCommonSubsequence=c;var u=function(){function t(t,e,n){void 0===n&&(n=12);var i=this;this.originalnodes=t,this.groupPadding=n,this.leaves=null,this.nodes=t.map(function(t,n){return new a(n,e.getBounds(t),e.getChildren(t))}),this.leaves=this.nodes.filter(function(t){return t.leaf}),this.groups=this.nodes.filter(function(t){return!t.leaf}),this.cols=this.getGridLines("x"),this.rows=this.getGridLines("y"),this.groups.forEach(function(t){return t.children.forEach(function(e){return i.nodes[e].parent=t})}),this.root={children:[]},this.nodes.forEach(function(t){void 0===t.parent&&(t.parent=i.root,i.root.children.push(t.id)),t.ports=[]}),this.backToFront=this.nodes.slice(0),this.backToFront.sort(function(t,e){return i.getDepth(t)-i.getDepth(e)}),this.backToFront.slice(0).reverse().filter(function(t){return!t.leaf}).forEach(function(t){var e=r.Rectangle.empty();t.children.forEach(function(t){return e=e.union(i.nodes[t].rect)}),t.rect=e.inflate(i.groupPadding)});var o=this.midPoints(this.cols.map(function(t){return t.pos})),c=this.midPoints(this.rows.map(function(t){return t.pos})),u=o[0],l=o[o.length-1],f=c[0],h=c[c.length-1],d=this.rows.map(function(t){return{x1:u,x2:l,y1:t.pos,y2:t.pos}}).concat(c.map(function(t){return{x1:u,x2:l,y1:t,y2:t}})),p=this.cols.map(function(t){return{x1:t.pos,x2:t.pos,y1:f,y2:h}}).concat(o.map(function(t){return{x1:t,x2:t,y1:f,y2:h}})),g=d.concat(p);g.forEach(function(t){return t.verts=[]}),this.verts=[],this.edges=[],d.forEach(function(t){return p.forEach(function(e){var n=new s(i.verts.length,e.x1,t.y1);t.verts.push(n),e.verts.push(n),i.verts.push(n);for(var r=i.backToFront.length;r-- >0;){var o=i.backToFront[r],a=o.rect,c=Math.abs(n.x-a.cx()),u=Math.abs(n.y-a.cy());if(c0;){var r=n.filter(function(e){return e.rect["overlap"+t.toUpperCase()](n[0].rect)}),i={nodes:r,pos:this.avg(r.map(function(e){return e.rect["c"+t]()}))};e.push(i),i.nodes.forEach(function(t){return n.splice(n.indexOf(t),1)})}return e.sort(function(t,e){return t.pos-e.pos}),e},t.prototype.getDepth=function(t){for(var e=0;t.parent!==this.root;)e++,t=t.parent;return e},t.prototype.midPoints=function(t){for(var e=t[1]-t[0],n=[t[0]-e/2],r=1;r.1)&&(u={pos:f[0][e],segments:[]},c.push(u)),u.segments.push(f)}return c},t.nudgeSegs=function(t,e,n,r,o,a){var s=r.length;if(!(s<=1)){for(var c=r.map(function(e){return new i.Variable(e[0][t])}),u=[],l=0;l=0&&u.push(new i.Constraint(c[v],c[b],a))}new i.Solver(c,u).solve(),c.forEach(function(e,i){var o=r[i],a=e.position();o[0][t]=o[1][t]=a;var s=n[o.edgeid];o.i>0&&(s[o.i-1][1][t]=a),o.iMath.PI||i<-Math.PI)&&(i=r-n),i},t.isLeft=function(t,e,n){return(e.x-t.x)*(n.y-t.y)-(e.y-t.y)*(n.x-t.x)<=0},t.getOrder=function(t){for(var e={},n=0;n=u.length||f.ti+f.length>=l.length)?n.push({l:r,r:i}):(f.si+f.length>=u.length||f.ti+f.length>=l.length?(o=u[f.si+1],s=u[f.si-1],a=l[f.ti-1]):(o=u[f.si+f.length-2],a=u[f.si+f.length],s=l[f.ti+f.length]),t.isLeft(o,a,s)?n.push({l:i,r:r}):n.push({l:r,r:i})))}return t.getOrder(n)},t.makeSegments=function(t){function e(t){return{x:t.x,y:t.y}}for(var n=function(t,e,n){return Math.abs((e.x-t.x)*(n.y-t.y)-(e.y-t.y)*(n.x-t.x))<.001},r=[],i=e(t[0]),o=1;o1&&l>1?1e3:0}).reverse().map(function(t){return n.verts[t]});return l.push(this.nodes[i.id].ports[0]),l.filter(function(t,e){return!(e0&&t.node===i&&l[e-1].node===i)})},t.getRoutePath=function(e,n,r,i){var o={routepath:"M "+e[0][0].x+" "+e[0][0].y+" ",arrowpath:""};if(e.length>1)for(var a=0;a0?s-=u/Math.abs(u)*n:c-=l/Math.abs(l)*n,o.routepath+="L "+s+" "+c+" ";var f=e[a+1],h=f[0].x,d=f[0].y;u=f[1].x-h,l=f[1].y-d;var p,g,v=t.angleBetween2Lines(m,f)<0?1:0;Math.abs(u)>0?(p=h+u/Math.abs(u)*n,g=d):(p=h,g=d+l/Math.abs(l)*n);var b=Math.abs(p-s),y=Math.abs(g-c);o.routepath+="A "+b+" "+y+" 0 0 "+v+" "+p+" "+g+" "}else{var w=[s,c];Math.abs(u)>0?(x=[s-=u/Math.abs(u)*i,c+r],_=[s,c-r]):(x=[s+r,c-=l/Math.abs(l)*i],_=[s-r,c]),o.routepath+="L "+s+" "+c+" ",i>0&&(o.arrowpath="M "+w[0]+" "+w[1]+" L "+x[0]+" "+x[1]+" L "+_[0]+" "+_[1])}}else{var m,x,_;s=(m=e[0])[1].x,c=m[1].y,u=s-m[0].x,l=c-m[0].y,w=[s,c];Math.abs(u)>0?(x=[s-=u/Math.abs(u)*i,c+r],_=[s,c-r]):(x=[s+r,c-=l/Math.abs(l)*i],_=[s-r,c]),o.routepath+="L "+s+" "+c+" ",i>0&&(o.arrowpath="M "+w[0]+" "+w[1]+" L "+x[0]+" "+x[1]+" L "+_[0]+" "+_[1])}return o},t}();e.GridRouter=u},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(21))},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(116),i=n(71),o=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var a=t[e];o.call(t,e)&&i(a,n)&&(void 0!==n||e in t)||r(t,e,n)}},function(t,e,n){var r=n(117);t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},function(t,e,n){var r=n(13),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,n){var r=n(240),i=n(42),o=n(1),a=n(32),s=n(119),c=n(43),u=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=o(t),l=!n&&i(t),f=!n&&!l&&a(t),h=!n&&!l&&!f&&c(t),d=n||l||f||h,p=d?r(t.length,String):[],g=p.length;for(var v in t)!e&&!u.call(t,v)||d&&("length"==v||f&&("offset"==v||"parent"==v)||h&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||s(v,g))||p.push(v);return p}},function(t,e){var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var i=typeof t;return!!(e=null==e?n:e)&&("number"==i||"symbol"!=i&&r.test(t))&&t>-1&&t%1==0&&th))return!1;var p=l.get(t);if(p&&l.get(e))return p==e;var g=-1,v=!0,b=n&s?new r:void 0;for(l.set(t,e),l.set(e,t);++g0&&(o=c.removeMin(),(a=s[o]).distance!==Number.POSITIVE_INFINITY);)r(o).forEach(u);return s}(t,String(e),n||o,r||function(e){return t.outEdges(e)})};var o=r.constant(1)},function(t,e,n){var r=n(4);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map(function(t){return t.key})},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,o=i.length;return n[t]=o,i.push({key:t,priority:e}),this._decrease(o),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){var e=this._arr,n=2*t,r=n+1,i=t;n>1].priorityh))return!1;var p=l.get(t);if(p&&l.get(e))return p==e;var g=-1,v=!0,b=n&s?new r:void 0;for(l.set(t,e),l.set(e,t);++g0&&o(l)?n>1?t(l,n-1,o,a,s):r(s,l):a||(s[s.length]=l)}return s}},function(t,e,n){var r=n(62),i=n(19);t.exports=function(t,e){var n=-1,o=i(t)?Array(t.length):[];return r(t,function(t,r,i){o[++n]=e(t,r,i)}),o}},function(t,e,n){var r=n(55),i=n(25);t.exports=function(t,e,n){(void 0===n||i(t[e],n))&&(void 0!==n||e in t)||r(t,e,n)}},function(t,e){t.exports=function(t,e){return"__proto__"==e?void 0:t[e]}},function(t,e){t.exports=function(t,e){return t0&&t.remove(c),s.length>0&&t.add(s),u.forEach(function(e){var n=e.ele1,o=e.ele2;return l(t,n,o,r,i,a)})},l=function(t,e,n,r,i,o){var a=i(i(n,"data"),"id"),s=t.getElementById(a),c={};["data","position","selected","selectable","locked","grabbable","classes"].forEach(function(t){var a=i(n,t);o(a,i(e,t))&&(c[t]=r(a))});var u=i(n,"scratch");o(u,i(e,"scratch"))&&s.scratch(r(u)),Object.keys(c).length>0&&s.json(c)}}]))},function(t,e){t.exports=window.ReactDOM},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i,o,a,s,c=1,u={},l=!1,f=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){p(t)})}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){p(t.data)},r=function(t){o.port2.postMessage(t)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(t){var e=f.createElement("script");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):r=function(t){setTimeout(p,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&p(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),h.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n=e||n<0||h&&t-l>=a}function x(){var t=v();if(m(t))return _(t);c=setTimeout(x,function(t){var n=e-(t-u);return h?g(n,a-(t-l)):n}(t))}function _(t){return c=void 0,d&&i?w(t):(i=o=void 0,s)}function E(){var t=v(),n=m(t);if(i=arguments,o=this,u=t,n){if(void 0===c)return function(t){return l=t,c=setTimeout(x,e),f?w(t):s}(u);if(h)return c=setTimeout(x,e),w(u)}return void 0===c&&(c=setTimeout(x,e)),s}return e=y(e)||0,b(r)&&(f=!!r.leading,a=(h="maxWait"in r)?p(y(r.maxWait)||0,e):a,d="trailing"in r?!!r.trailing:d),E.cancel=function(){void 0!==c&&clearTimeout(c),l=0,i=u=o=c=void 0},E.flush=function(){return void 0===c?s:_(v())},E}}).call(this,n(21))},function(t,e,n){t.exports=n(194)},function(t,e,n){var r,i,o;(function(){var n,a,s,c,u,l,f,h,d,p,g,v,b,y,w;s=Math.floor,p=Math.min,a=function(t,e){return te?1:0},d=function(t,e,n,r,i){var o;if(null==n&&(n=0),null==i&&(i=a),n<0)throw new Error("lo must be non-negative");for(null==r&&(r=t.length);nn;0<=n?e++:e--)u.push(e);return u}.apply(this).reverse()).length;rg;0<=g?++l:--l)v.push(u(t,n));return v},y=function(t,e,n,r){var i,o,s;for(null==r&&(r=a),i=t[n];n>e&&r(i,o=t[s=n-1>>1])<0;)t[n]=o,n=s;return t[n]=i},w=function(t,e,n){var r,i,o,s,c;for(null==n&&(n=a),i=t.length,c=e,o=t[e],r=2*e+1;r diff --git a/dash_cytoscape/metadata.json b/dash_cytoscape/metadata.json index 127001da..5dacd620 100644 --- a/dash_cytoscape/metadata.json +++ b/dash_cytoscape/metadata.json @@ -98,9 +98,9 @@ "name": "object" }, "required": false, - "description": "A dictionary specifying how to set the position of the elements in your\r\ngraph. The `'name'` key is required, and indicates which layout (algorithm) to\r\nuse.\r\n 1. The layouts available by default are:\r\n - `random`: Randomly assigns positions\r\n - `preset`: Assigns position based on the `position` key in element dictionaries\r\n - `circle`: Single-level circle, with optional radius\r\n - `concentric`: Multi-level circle, with optional radius\r\n - `grid`: Square grid, optionally with numbers of `rows` and `cols`\r\n - `breadthfirst`: Tree structure built using BFS, with optional `roots`\r\n - `cose`: Force-directed physics simulation\r\n\n 2. The following external layouts are also included:\r\n - `cose-bilkent`: https://github.com/cytoscape/cytoscape.js-cose-bilkent\r\n - `cola`: https://github.com/cytoscape/cytoscape.js-cola\r\n - `euler`: https://github.com/cytoscape/cytoscape.js-dagre\r\n - `spread`: https://github.com/cytoscape/cytoscape.js-spread\r\n - `dagre`: https://github.com/cytoscape/cytoscape.js-dagre\r\n - `klay`: https://github.com/cytoscape/cytoscape.js-klay\r\n\n 3. The keys accepted by `layout` vary depending on the algorithm, but some\r\n keys are accepted by all layouts:\r\n - `fit` (boolean): Whether to render the nodes in order to fit the canvas.\r\n - `padding` (number): Padding around the sides of the canvas, if fit is enabled.\r\n - `animate` (boolean): Whether to animate change in position when the layout changes.\r\n - `animationDuration` (number): Duration of animation in milliseconds, if enabled.\r\n - `boundingBox` (dictionary): How to constrain the layout in a specific area. Keys accepted are either `x1, y1, x2, y2` or `x1, y1, w, h`, all of which receive a pixel value.\r\n\n 4. The complete list of layouts and their accepted options are available\r\n on the [Cytoscape.js docs](http://js.cytoscape.org/#layouts). For the\r\n external layouts, the options are listed in the \"API\" section of the\r\n README.\r\n Note that certain keys are not supported in Dash since the value is a\r\n JavaScript function or a callback. Please visit [this issue](https://github.com/plotly/dash-cytoscape/issues/25)\r\n for more information.", + "description": "A dictionary specifying how to set the position of the elements in your\r\ngraph. The `'name'` key is required, and indicates which layout (algorithm) to\r\nuse.\r\n 1. The layouts available by default are:\r\n - `random`: Randomly assigns positions\r\n - `preset`: Assigns position based on the `position` key in element dictionaries\r\n - `circle`: Single-level circle, with optional radius\r\n - `concentric`: Multi-level circle, with optional radius\r\n - `grid`: Square grid, optionally with numbers of `rows` and `cols`\r\n - `breadthfirst`: Tree structure built using BFS, with optional `roots`\r\n - `cose`: Force-directed physics simulation\r\n\n 2. Some external layouts are also included. To use them, run\r\n `dash_cytoscape.load_extra_layouts()` before creating your Dash app. Be careful about\r\n using the extra layouts when not necessary, since they require supplementary bandwidth\r\n for loading, which impacts the startup time of the app.\r\n - `cose-bilkent`: https://github.com/cytoscape/cytoscape.js-cose-bilkent\r\n - `cola`: https://github.com/cytoscape/cytoscape.js-cola\r\n - `euler`: https://github.com/cytoscape/cytoscape.js-dagre\r\n - `spread`: https://github.com/cytoscape/cytoscape.js-spread\r\n - `dagre`: https://github.com/cytoscape/cytoscape.js-dagre\r\n - `klay`: https://github.com/cytoscape/cytoscape.js-klay\r\n\n 3. The keys accepted by `layout` vary depending on the algorithm, but some\r\n keys are accepted by all layouts:\r\n - `fit` (boolean): Whether to render the nodes in order to fit the canvas.\r\n - `padding` (number): Padding around the sides of the canvas, if fit is enabled.\r\n - `animate` (boolean): Whether to animate change in position when the layout changes.\r\n - `animationDuration` (number): Duration of animation in milliseconds, if enabled.\r\n - `boundingBox` (dictionary): How to constrain the layout in a specific area. Keys accepted are either `x1, y1, x2, y2` or `x1, y1, w, h`, all of which receive a pixel value.\r\n\n 4. The complete list of layouts and their accepted options are available\r\n on the [Cytoscape.js docs](http://js.cytoscape.org/#layouts). For the\r\n external layouts, the options are listed in the \"API\" section of the\r\n README.\r\n Note that certain keys are not supported in Dash since the value is a\r\n JavaScript function or a callback. Please visit [this issue](https://github.com/plotly/dash-cytoscape/issues/25)\r\n for more information.", "defaultValue": { - "value": "{name: 'random'}", + "value": "{name: 'grid'}", "computed": false } }, @@ -109,84 +109,132 @@ "name": "object" }, "required": false, - "description": "Dictionary indicating the initial panning position of the graph. The\r\nfollowing keys are accepted:\r\n - `x` (number): The x-coordinate of the position.\r\n - `y` (number): The y-coordinate of the position." + "description": "Dictionary indicating the initial panning position of the graph. The\r\nfollowing keys are accepted:\r\n - `x` (number): The x-coordinate of the position.\r\n - `y` (number): The y-coordinate of the position.", + "defaultValue": { + "value": "{x: 0, y: 0}", + "computed": false + } }, "zoom": { "type": { "name": "number" }, "required": false, - "description": "The initial zoom level of the graph. You can set `minZoom` and\r\n`maxZoom` to set restrictions on the zoom level." + "description": "The initial zoom level of the graph. You can set `minZoom` and\r\n`maxZoom` to set restrictions on the zoom level.", + "defaultValue": { + "value": "1", + "computed": false + } }, "panningEnabled": { "type": { "name": "bool" }, "required": false, - "description": "Whether panning the graph is enabled (i.e., the position of the graph is\r\nmutable overall)." + "description": "Whether panning the graph is enabled (i.e., the position of the graph is\r\nmutable overall).", + "defaultValue": { + "value": "true", + "computed": false + } }, "userPanningEnabled": { "type": { "name": "bool" }, "required": false, - "description": "Whether user events (e.g. dragging the graph background) are allowed to\r\npan the graph." + "description": "Whether user events (e.g. dragging the graph background) are allowed to\r\npan the graph.", + "defaultValue": { + "value": "true", + "computed": false + } }, "minZoom": { "type": { "name": "number" }, "required": false, - "description": "A minimum bound on the zoom level of the graph. The viewport can not be\r\nscaled smaller than this zoom level." + "description": "A minimum bound on the zoom level of the graph. The viewport can not be\r\nscaled smaller than this zoom level.", + "defaultValue": { + "value": "1e-50", + "computed": false + } }, "maxZoom": { "type": { "name": "number" }, "required": false, - "description": "A maximum bound on the zoom level of the graph. The viewport can not be\r\nscaled larger than this zoom level." + "description": "A maximum bound on the zoom level of the graph. The viewport can not be\r\nscaled larger than this zoom level.", + "defaultValue": { + "value": "1e50", + "computed": false + } }, "zoomingEnabled": { "type": { "name": "bool" }, "required": false, - "description": "Whether zooming the graph is enabled (i.e., the zoom level of the graph\r\nis mutable overall)." + "description": "Whether zooming the graph is enabled (i.e., the zoom level of the graph\r\nis mutable overall).", + "defaultValue": { + "value": "true", + "computed": false + } }, "userZoomingEnabled": { "type": { "name": "bool" }, "required": false, - "description": "Whether user events (e.g. dragging the graph background) are allowed\r\nto pan the graph." + "description": "Whether user events (e.g. dragging the graph background) are allowed\r\nto pan the graph.", + "defaultValue": { + "value": "true", + "computed": false + } }, "boxSelectionEnabled": { "type": { "name": "bool" }, "required": false, - "description": "Whether box selection (i.e. drag a box overlay around, and release it\r\nto select) is enabled. If enabled, the user must taphold to pan the graph." + "description": "Whether box selection (i.e. drag a box overlay around, and release it\r\nto select) is enabled. If enabled, the user must taphold to pan the graph.", + "defaultValue": { + "value": "false", + "computed": false + } }, "autoungrabify": { "type": { "name": "bool" }, "required": false, - "description": "Whether nodes should be ungrabified (not grabbable by user) by\r\ndefault (if true, overrides individual node state)." + "description": "Whether nodes should be ungrabified (not grabbable by user) by\r\ndefault (if true, overrides individual node state).", + "defaultValue": { + "value": "false", + "computed": false + } }, "autolock": { "type": { "name": "bool" }, "required": false, - "description": "Whether nodes should be locked (not draggable at all) by default\r\n(if true, overrides individual node state)." + "description": "Whether nodes should be locked (not draggable at all) by default\r\n(if true, overrides individual node state).", + "defaultValue": { + "value": "false", + "computed": false + } }, "autounselectify": { "type": { "name": "bool" }, "required": false, - "description": "Whether nodes should be unselectified (immutable selection state) by\r\ndefault (if true, overrides individual element state)." + "description": "Whether nodes should be unselectified (immutable selection state) by\r\ndefault (if true, overrides individual element state).", + "defaultValue": { + "value": "false", + "computed": false + } }, "autoRefreshLayout": { "type": { @@ -204,56 +252,56 @@ "name": "object" }, "required": false, - "description": "The complete node dictionary returned when you tap or click it.\r\n\n 1. Node-specific items:\r\n - `edgesData` (dictionary)\r\n - `renderedPosition` (dictionary)\r\n - `timeStamp` (number)\r\n\n 2. General items (for all elements):\r\n - `classes` (string)\r\n - `data` (dictionary)\r\n - `grabbable` (boolean)\r\n - `group` (string)\r\n - `locked` (boolean)\r\n - `position` (dictionary)\r\n - `selectable` (boolean)\r\n - `selected` (boolean)\r\n - `style` (dictionary)\r\n\n 3. Items for compound nodes:\r\n - `ancestorsData` (dictionary)\r\n - `childrenData` (dictionary)\r\n - `descendantsData` (dictionary)\r\n - `parentData` (dictionary)\r\n - `siblingsData` (dictionary)\r\n - `isParent` (boolean)\r\n - `isChildless` (boolean)\r\n - `isChild` (boolean)\r\n - `isOrphan` (boolean)\r\n - `relativePosition` (dictionary)" + "description": "The complete node dictionary returned when you tap or click it. Read-only.\r\n\n 1. Node-specific items:\r\n - `edgesData` (dictionary)\r\n - `renderedPosition` (dictionary)\r\n - `timeStamp` (number)\r\n\n 2. General items (for all elements):\r\n - `classes` (string)\r\n - `data` (dictionary)\r\n - `grabbable` (boolean)\r\n - `group` (string)\r\n - `locked` (boolean)\r\n - `position` (dictionary)\r\n - `selectable` (boolean)\r\n - `selected` (boolean)\r\n - `style` (dictionary)\r\n\n 3. Items for compound nodes:\r\n - `ancestorsData` (dictionary)\r\n - `childrenData` (dictionary)\r\n - `descendantsData` (dictionary)\r\n - `parentData` (dictionary)\r\n - `siblingsData` (dictionary)\r\n - `isParent` (boolean)\r\n - `isChildless` (boolean)\r\n - `isChild` (boolean)\r\n - `isOrphan` (boolean)\r\n - `relativePosition` (dictionary)" }, "tapNodeData": { "type": { "name": "object" }, "required": false, - "description": "The data dictionary of a node returned when you tap or click it." + "description": "The data dictionary of a node returned when you tap or click it. Read-only." }, "tapEdge": { "type": { "name": "object" }, "required": false, - "description": "The complete edge dictionary returned when you tap or click it.\r\n\n 1. Edge-specific items:\r\n - `isLoop` (boolean)\r\n - `isSimple` (boolean)\r\n - `midpoint` (dictionary)\r\n - `sourceData` (dictionary)\r\n - `sourceEndpoint` (dictionary)\r\n - `targetData` (dictionary)\r\n - `targetEndpoint` (dictionary)\r\n - `timeStamp` (number)\r\n\n 2. General items (for all elements):\r\n - `classes` (string)\r\n - `data` (dictionary)\r\n - `grabbable` (boolean)\r\n - `group` (string)\r\n - `locked` (boolean)\r\n - `selectable` (boolean)\r\n - `selected` (boolean)\r\n - `style` (dictionary)" + "description": "The complete edge dictionary returned when you tap or click it. Read-only.\r\n\n 1. Edge-specific items:\r\n - `isLoop` (boolean)\r\n - `isSimple` (boolean)\r\n - `midpoint` (dictionary)\r\n - `sourceData` (dictionary)\r\n - `sourceEndpoint` (dictionary)\r\n - `targetData` (dictionary)\r\n - `targetEndpoint` (dictionary)\r\n - `timeStamp` (number)\r\n\n 2. General items (for all elements):\r\n - `classes` (string)\r\n - `data` (dictionary)\r\n - `grabbable` (boolean)\r\n - `group` (string)\r\n - `locked` (boolean)\r\n - `selectable` (boolean)\r\n - `selected` (boolean)\r\n - `style` (dictionary)" }, "tapEdgeData": { "type": { "name": "object" }, "required": false, - "description": "The data dictionary of an edge returned when you tap or click it." + "description": "The data dictionary of an edge returned when you tap or click it. Read-only." }, "mouseoverNodeData": { "type": { "name": "object" }, "required": false, - "description": "The data dictionary of a node returned when you hover over it." + "description": "The data dictionary of a node returned when you hover over it. Read-only." }, "mouseoverEdgeData": { "type": { "name": "object" }, "required": false, - "description": "The data dictionary of an edge returned when you hover over it." + "description": "The data dictionary of an edge returned when you hover over it. Read-only." }, "selectedNodeData": { "type": { "name": "array" }, "required": false, - "description": "The list of data dictionaries of all selected nodes (e.g. using\r\nShift+Click to select multiple nodes, or Shift+Drag to use box selection)." + "description": "The list of data dictionaries of all selected nodes (e.g. using\r\nShift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only." }, "selectedEdgeData": { "type": { "name": "array" }, "required": false, - "description": "The list of data dictionaries of all selected edges (e.g. using\r\nShift+Click to select multiple nodes, or Shift+Drag to use box selection)." + "description": "The list of data dictionaries of all selected edges (e.g. using\r\nShift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only." } } } diff --git a/dash_cytoscape/package.json b/dash_cytoscape/package.json index 22a029ec..24830c28 100644 --- a/dash_cytoscape/package.json +++ b/dash_cytoscape/package.json @@ -10,9 +10,10 @@ "build:js": "webpack --mode production", "build:js-dev-extra": "webpack --config webpack.dev.extra.config.js", "build:js-extra": "webpack --config webpack.prod.extra.config.js", + "build:js-all": "npm run build:js && npm run build:js-dev && npm run build:js-dev-extra && npm run build:js-extra", "build:py": "dash-generate-components ./src/lib/components dash_cytoscape", "build:py-activated": "(. venv/bin/activate || venv\\scripts\\activate && npm run build:py)", - "build:all": "npm run build:js && npm run build:js-dev && npm run build:js-dev-extra && npm run build:js-extra && npm run build:py", + "build:all": "npm run build:js-all && npm run build:py", "build:all-activated": "(. venv/bin/activate || venv\\scripts\\activate && npm run build:all)" }, "author": "The Plotly Team", diff --git a/demos/images/basic-usage.gif b/demos/images/basic-usage.gif new file mode 100644 index 00000000..7b0c9955 Binary files /dev/null and b/demos/images/basic-usage.gif differ diff --git a/demos/images/usage-stylesheet-demo.gif b/demos/images/usage-stylesheet-demo.gif index 0860a6a3..820429c3 100644 Binary files a/demos/images/usage-stylesheet-demo.gif and b/demos/images/usage-stylesheet-demo.gif differ diff --git a/demos/usage-preset-animation.py b/demos/usage-preset-animation.py new file mode 100644 index 00000000..7016a867 --- /dev/null +++ b/demos/usage-preset-animation.py @@ -0,0 +1,89 @@ +""" +Shows how to animate a graph using preset positions that are modified by a callback +""" +import dash +from dash.dependencies import Input, Output +import dash_cytoscape as cyto +import dash_html_components as html + +app = dash.Dash(__name__) + +nodes = [ + { + 'data': {'id': short, 'label': label}, + 'position': {'x': 20 * lat, 'y': -20 * longitude} + } + for short, label, longitude, lat in ( + ('la', 'Los Angeles', 34.03, -118.25), + ('nyc', 'New York', 40.71, -74) + + ) +] + +edges = [ + {'data': {'source': source, 'target': target}} + for source, target in ( + ('la', 'nyc'), + ) +] + +elements = nodes + edges + +default_stylesheet = [ + { + 'selector': 'node', + 'style': { + 'background-color': 'BFD7B5', + 'label': 'data(label)' + } + }, + { + 'selector': 'edge', + 'style': { + 'line-color': '#A3C4BC' + } + } +] + +app.layout = html.Div([ + html.Div(html.Button('Change elements', id='button')), + + cyto.Cytoscape( + id='cytoscape-elements-callbacks', + layout={ + 'name': 'preset', + 'animate': True, + 'animationDuration': 1000 + }, + autoRefreshLayout=True, + stylesheet=default_stylesheet, + style={'width': '100%', 'height': '450px'}, + elements=elements + ) +]) + + +@app.callback(Output('cytoscape-elements-callbacks', 'layout'), + [Input('button', 'n_clicks')]) +def update_elements(n_clicks): + if not n_clicks: + n_clicks = 0 + + layout = { + 'name': 'preset', + 'animate': True, + 'animationDuration': 1000, + 'positions': { + node_id: {'x': 20 * lat, 'y': -20 * longitude} + for node_id, longitude, lat in ( + ("la", 34.03, -118.25 + 10 * n_clicks), + ("nyc", 40.71, -74) + ) + } + } + + return layout + + +if __name__ == '__main__': + app.run_server(debug=False) diff --git a/demos/usage-reset-button.py b/demos/usage-reset-button.py new file mode 100644 index 00000000..e5bae326 --- /dev/null +++ b/demos/usage-reset-button.py @@ -0,0 +1,43 @@ +""" +An example to show how to reset the position, zoom level, and layout of a Cytoscape graph, using a +button attached to a callback. +""" +import dash +from dash.dependencies import Input, Output +import dash_cytoscape as cyto +import dash_html_components as html + + +elements = [ + {'data': {'id': 'one', 'label': 'Node 1'}, 'position': {'x': 50, 'y': 50}}, + {'data': {'id': 'two', 'label': 'Node 2'}, 'position': {'x': 200, 'y': 200}}, + {'data': {'source': 'one', 'target': 'two', 'label': 'Node 1 to 2'}} +] + +layout = {'name': 'grid'} + +app = dash.Dash(__name__) +app.layout = html.Div([ + html.Button('Reset', id='bt-reset'), + cyto.Cytoscape( + id='cytoscape', + elements=elements, + layout=layout, + zoom=1 + ) +]) + + +@app.callback( + [Output('cytoscape', 'zoom'), + Output('cytoscape', 'elements')], + [Input('bt-reset', 'n_clicks')] +) +def reset_layout(n_clicks): + print(n_clicks, 'click') + + return [1, elements] + + +if __name__ == '__main__': + app.run_server(debug=True) diff --git a/src/lib/components/Cytoscape.react.js b/src/lib/components/Cytoscape.react.js index 9c4d9eb0..a402c19f 100644 --- a/src/lib/components/Cytoscape.react.js +++ b/src/lib/components/Cytoscape.react.js @@ -308,7 +308,7 @@ class Cytoscape extends Component { cy={this.handleCy} className={className} style={style} - elements={elements} + elements={CytoscapeComponent.normalizeElements(elements)} stylesheet={stylesheet} layout={layout} pan={pan} @@ -522,7 +522,7 @@ Cytoscape.propTypes = { // User Events Props /** - * The complete node dictionary returned when you tap or click it. + * The complete node dictionary returned when you tap or click it. Read-only. * * 1. Node-specific items: * - `edgesData` (dictionary) @@ -555,12 +555,12 @@ Cytoscape.propTypes = { tapNode: PropTypes.object, /** - * The data dictionary of a node returned when you tap or click it. + * The data dictionary of a node returned when you tap or click it. Read-only. */ tapNodeData: PropTypes.object, /** - * The complete edge dictionary returned when you tap or click it. + * The complete edge dictionary returned when you tap or click it. Read-only. * * 1. Edge-specific items: * - `isLoop` (boolean) @@ -585,36 +585,48 @@ Cytoscape.propTypes = { tapEdge: PropTypes.object, /** - * The data dictionary of an edge returned when you tap or click it. + * The data dictionary of an edge returned when you tap or click it. Read-only. */ tapEdgeData: PropTypes.object, /** - * The data dictionary of a node returned when you hover over it. + * The data dictionary of a node returned when you hover over it. Read-only. */ mouseoverNodeData: PropTypes.object, /** - * The data dictionary of an edge returned when you hover over it. + * The data dictionary of an edge returned when you hover over it. Read-only. */ mouseoverEdgeData: PropTypes.object, /** * The list of data dictionaries of all selected nodes (e.g. using - * Shift+Click to select multiple nodes, or Shift+Drag to use box selection). + * Shift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only. */ selectedNodeData: PropTypes.array, /** * The list of data dictionaries of all selected edges (e.g. using - * Shift+Click to select multiple nodes, or Shift+Drag to use box selection). + * Shift+Click to select multiple nodes, or Shift+Drag to use box selection). Read-only. */ selectedEdgeData: PropTypes.array }; Cytoscape.defaultProps = { style: {width: '600px', height: '600px'}, - layout: {name: 'random'}, + layout: {name: 'grid'}, + pan: {x: 0, y: 0}, + zoom: 1, + minZoom: 1e-50, + maxZoom: 1e50, + zoomingEnabled: true, + userZoomingEnabled: true, + panningEnabled: true, + userPanningEnabled: true, + boxSelectionEnabled: false, + autolock: false, + autoungrabify: false, + autounselectify: false, autoRefreshLayout: true }; diff --git a/usage-events.py b/usage-events.py index 94b2089d..212738dd 100644 --- a/usage-events.py +++ b/usage-events.py @@ -10,23 +10,6 @@ app = dash.Dash(__name__) server = app.server -# Dictionary declaration -elements_dict = [ - { - 'data': {'id': 'one', 'label': 'Node 1'}, - 'position': {'x': 50, 'y': 50} - }, - { - 'data': {'id': 'two', 'label': 'Node 2'}, - 'position': {'x': 200, 'y': 200}}, - { - 'data': { - 'source': 'one', 'target': 'two', - 'label': 'Edge from Node1 to Node2' - } - } -] - # Object declaration basic_elements = [ { @@ -55,6 +38,7 @@ }, { 'data': { + 'id': 'one-two', 'source': 'one', 'target': 'two', 'label': 'Edge from Node1 to Node2' @@ -62,6 +46,7 @@ }, { 'data': { + 'id': 'one-five', 'source': 'one', 'target': 'five', 'label': 'Edge from Node 1 to Node 5' @@ -69,6 +54,7 @@ }, { 'data': { + 'id': 'two-four', 'source': 'two', 'target': 'four', 'label': 'Edge from Node 2 to Node 4' @@ -76,6 +62,7 @@ }, { 'data': { + 'id': 'three-five', 'source': 'three', 'target': 'five', 'label': 'Edge from Node 3 to Node 5' @@ -83,19 +70,23 @@ }, { 'data': { + 'id': 'three-two', 'source': 'three', 'target': 'two', 'label': 'Edge from Node 3 to Node 2' } }, - {'data': { - 'source': 'four', - 'target': 'four', - 'label': 'Edge from Node 4 to Node 4' - } + { + 'data': { + 'id': 'four-four', + 'source': 'four', + 'target': 'four', + 'label': 'Edge from Node 4 to Node 4' + } }, { 'data': { + 'id': 'four-six', 'source': 'four', 'target': 'six', 'label': 'Edge from Node 4 to Node 6' @@ -103,6 +94,7 @@ }, { 'data': { + 'id': 'five-one', 'source': 'five', 'target': 'one', 'label': 'Edge from Node 5 to Node 1'